sql手工注入总结
前提要去理解information_schema里面的三个表,schemata,tables,columns
联合注入
- union连接的两条语句字段数要保持一致
- 可以利用order by
- group_concat()
- 只能进行查询操作
报错注入
- 如果前面判读出来字段之后,用union联合查询无果,再去尝试报错注入
- 经常在POST型中出现
- extractvalue(xml数据,表达式)
- updatexml(xml原始数据,表达式,新的数据)
- 只需要让他的xml表达式(数据)不成立即可报错
- 用and或者or去连接前面的语句
- 注意and前不要存在空格
布尔注入
- 如果无法联合,无法报错,再去尝试布尔盲注
- 如果用and,那么and前面的条件必须为真
- 如果用or,那么or前面的条件必须为假
- ascii():把字符转成ascii值
- sbustr():截取字符
时间注入
- sleep():睡眠时间
- if(判断语句,条件1,条件1)
- 如果表达式为真,则执行条件1
- 如果表达式为假,则执行条件2
堆叠注入(多语句)
- 闭合语句之后加上
;select 123
- 如果返回正常,则可以进行堆叠
- 如果报错或者返回异常,则无法进行堆叠
- 可以执行插入,更新,删除,查询(增删改查)
二次注入
- 第一次插入的语句进行转义,没有被执行,然后保存到数据库中
- 第二次进行调用第一次插入的值,造成插入的sql语句被执行
宽字节注入
- 判断是否用了GBK编码
- 利用浏览器修改原本的网页编码格式,改为gbk,没有乱码,就是使用了GBK编码
- 用
%df
把转义后的反斜杠\
吃掉 - 注意post类型,要去抓包看一下真实的传参内容
- 如果post提交参数有变化,在burp进行修改
cookie注入
- 把id=1删除,判断是否对页面的值有影响
document.cookie="id="+escape("1")
- 如果正常的,说明使用了cookie作为参数传递
- 如果不正常,说明get传参下的id参数是起了直接作用的
- 也有可能既可以通过id参数,也可以使用cookie传参
- 可用使用burp抓包控制变量
DNS注入
- 要用到
load_file()
,通常需要root权限LOAD_FILE()
函数通常需要 FILE 权限,而 FILE 权限通常是分配给 MySQL 的SUPER
特权用户,例如 root 用户。
- secure_file_priv值要为空,默认值为
NULL
- 目标服务器必须是windows系统
- 如果dnslog没有返回结果,先去排查自身环境
- 如果自身环境没有问题,就是dnslog平台的问题
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐