SQL注入在比赛中的应用
SQL注入在比赛中的应用
什么是SQL注入?
mysql注入的几种类型
字符型注入
在name里输入加一个 ’ 来闭合第四行的 ‘ ,通过联合查询获得更多信息
数字型注入
使用单引号保护并过滤内容
布尔型盲注
id = 1’ 无回显
id = 1’ and ‘1’=‘1 回显
id = 1’ and ‘1’='2 无回显
盲注用到的几个函数:
通过二分法最后确认长度为8
利用substr函数与ascii函数构造猜测数据库名ascii码的值得语句,因为现在只知道长度不知道具体内容
通过二分法确认第一字母的ascii为115
猜表名
猜列名
基于时间盲注
通过设置sleep函数的数值,如果设置的数字数值越大,返回时间越慢,说明存在时间注入漏洞
宽字节注入
发生位置:php发送请求到mysql时字符集使用charactersetclient设置值进行了一次编码
修复:将字符集设置为utf-8
二次编码注入
其他
magic_quotes_gpc
为什么这个安全项目被关闭?
缺陷
变量编码解码
stripslashes()这个其实就是decode-addslashes()
其他字符串转换函数
例:
当magic_quotes_gpc=on时,
提交?id=%2527,可以绕过(因为里边没有特殊字符)
得到sql语句为
SELECT * FROM article WHERE arcticleid=‘’’
二次攻击
与二次编码不同
特点:
数据库出来的变量没有进行过滤
数据库转义符合:
mysql/oracle转义符合同样是
提交‘通过魔术引号变化为\’,当update进入数据库时,通过反转义重新变为‘,
mssql的转义字符为‘
提交‘通过魔术引号变化为\’,mssql会把它当为一个字符串直接处理
魔术引号带来的新型攻击
“\”符号不仅仅是转义符合,在WIN系统下也是目录转跳的符号。
这个特点可能导致php应用程序产生一些漏洞
magic_quotes_runtime
数据库查询文件和文件读取函数
magic_quotes_sybase
自动化注入
用sqlmap的tamper脚本unmagicquotes.py
python sqlmap.py -u “http://wargame.kr:8080/SimpleBoard/read.php?idx=1’–tamper"unmagicquotes.py” -batch