30. SQL注入:技巧

本文介绍SQL注入的一些技巧
  • 编码绕过
    • 大小写
    • url编码
    • HTML编码
    • 十六进制编码
    • unicode编码
  • 注释
    • // -- -- + -- - # /**/ ;%00
    • 内联注释用的更多,它有一个特性 /!**/ 只有MySQL能识别
    • e.g. index.php?id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3
  • 只过滤了一次时
    • union => ununionion
  • 相同功能替换
    • 函数替换
      • substring / mid / sub
      • ascii / hex / bin
      • benchmark / sleep
    • 变量替换
      • user() / @@user
    • 符号和关键字
      • and / &
      • or / |
  • HTTP参数
    • HTTP参数污染
      • id=1&id=2&id=3 根据容器不同会有不同的结果
    • HTTP分割注入
  • 缓冲区溢出
    • 一些C语言的WAF处理的字符串长度有限,超出某个长度后的payload可能不会被处理
  • 二次注入有长度限制时,通过多句执行的方法改掉数据库该字段的长度绕过