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()
- 如:MySQL的
HTTP头部注入
转自大佬的blog:
https://websec.readthedocs.io/zh/latest/vuln/sql/classify.html
注入类型根据获取数据的方式分为3类
inband
利用Web应用来直接获取数据,如报错注入,这类注入都是通过站点的响应或者错误反馈来提取数据。
inference
通过Web的一些反映来推断数据,如布尔盲注,也就是我们通俗的盲注, 通过web应用的其他改变来推断数据。
out of band (OOB)
通过其他传输方式来获得数据,比如DNS解析协议和电子邮件。
查看评论