supersqli-wp

题目环境:

图片[1]-supersqli-wp-Drton1博客

随便提交一个值:

图片[2]-supersqli-wp-Drton1博客

可能存在sql注入 打个单引号看看

图片[3]-supersqli-wp-Drton1博客

报错了。于是直接上常规组合拳,先测字段: 字段数是2

图片[4]-supersqli-wp-Drton1博客

被拦截了。。

图片[5]-supersqli-wp-Drton1博客

这里用了一些绕过姿势,都绕不过去。

图片[6]-supersqli-wp-Drton1博客

把报错注入 盲注等试了一圈 突然想起来还有一个堆叠注入,, 学这个时候我感觉是最鸡肋的 没想到还真是它:

图片[7]-supersqli-wp-Drton1博客

看表:

图片[8]-supersqli-wp-Drton1博客

这个时候如果直接查字段

select * from `1919810931114514` //mysql中名字是字符串要用反引号

会被直接拦截,因为select 触发规则了。

但是我们可以这样 show columns from `1919810931114514`;

图片[9]-supersqli-wp-Drton1博客

找到flag字段

这里本来还想用show 绕过继续查看内容 看了看mysql命令手册 show命令不支持。

不过找到了一个mysql独有的查数据命令:(13条消息) mysql查询语句-handler_jesseyoung的博客-CSDN博客

handler

图片[10]-supersqli-wp-Drton1博客

看了一下 就跟指针 一样

那我们也可以构造: handler 1919810931114514 open; `handler 1919810931114514` read first;

图片[11]-supersqli-wp-Drton1博客

完活 。

然后看了官方的wp 人家还有另一种解法:

还记得这个words 不 我们看看里面有什么:

图片[12]-supersqli-wp-Drton1博客

根据两个表的情况结合实际查询出结果的情况判断出words是默认查询的表,因为查询出的结果是一个数字加一个字符串,words表结构是id和data,传入的inject参数也就是赋值给了id

这道题没有禁用rename和alert,所以我们可以采用修改表结构的方法来得到flag将words表名改为words1,再将数字名表改为words,这样数字名表就是默认查询的表了,但是它少了一个id列,可以将flag字段改为id,或者添加id字段

1';rename tables wordstowords1;rename tables 1919810931114514towords; alter table wordschangeflagid varchar(100);#

这段代码的意思是将words表名改为words1,1919810931114514表名改为words,将现在的words表中的flag列名改为id然后用1' or 1=1 #得到flag

图片[13]-supersqli-wp-Drton1博客

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论