2024-11-21-SQLBase

2024-11-21-SQLBase

十一月 21, 2024

SQL注入基本思路

检查回显

在此基础下

  • 判断闭合方式:

  • 判断字段数:

  • 判断回显位:服务端执行SQL语句查询数据库中的数据,客户端显示数据的位置就是回显位。

根据注入类型选择注入方式

  • 报错注入:

    • 显示报错信息时可以使用的注入方式

    • 原理

      • 通过特殊函数错误,使其输出错误结果来获取信息。
  • 盲注:

    • 布尔盲注:只能从应用返回中推断语句执行后的布尔值
      • 页面结果仅有True或者False
      • 那么就通过这个判断来获取页面的相关信息
    • 时间盲注:应用没有明确的回显,只能使用特定的时间函数来判断
      • 一般思路:
        • 延迟注入:利用 sleep()benchmark() 等函数让时间变长,结果判断语句if(expr1, expr2, expr3),通过页面响应时间来判断语句返回的值是True 还是 False
  • 堆叠注入:有的应用可以加入 ; 后一次执行多条语句

  • 联合查询注入

  • 二次注入

  • 宽字节注入

    • 什么是宽字节: 宽字节是相对于ascII这样单字节而言的;像 GB2312、GBK、GB18030、BIG5、Shift_JIS 等这些都是常说的宽字节,实际上只有两字节
    • 转义函数:为了过滤数据对特殊字符加上反斜杠”\“ 进行转义
      • 如:MySQL的addslashes()mysql_real_escape_string()mysql_escape_string()
  • HTTP头部注入


转自大佬的blog:

https://websec.readthedocs.io/zh/latest/vuln/sql/classify.html

注入类型根据获取数据的方式分为3类

inband

利用Web应用来直接获取数据,如报错注入,这类注入都是通过站点的响应或者错误反馈来提取数据。

inference

通过Web的一些反映来推断数据,如布尔盲注,也就是我们通俗的盲注, 通过web应用的其他改变来推断数据。

out of band (OOB)

通过其他传输方式来获得数据,比如DNS解析协议和电子邮件。