SQL注入在比赛中的应用

什么是SQL注入?

SQL注入在比赛中的应用

mysql注入的几种类型

字符型注入

SQL注入在比赛中的应用
在name里输入加一个 ’ 来闭合第四行的 ‘ ,通过联合查询获得更多信息

数字型注入

SQL注入在比赛中的应用

使用单引号保护并过滤内容

SQL注入在比赛中的应用

布尔型盲注

SQL注入在比赛中的应用
id = 1’ 无回显
id = 1’ and ‘1’=‘1 回显
id = 1’ and ‘1’='2 无回显
盲注用到的几个函数:
SQL注入在比赛中的应用
通过二分法最后确认长度为8

SQL注入在比赛中的应用
利用substr函数与ascii函数构造猜测数据库名ascii码的值得语句,因为现在只知道长度不知道具体内容
SQL注入在比赛中的应用通过二分法确认第一字母的ascii为115
SQL注入在比赛中的应用
猜表名
SQL注入在比赛中的应用
猜列名

基于时间盲注

SQL注入在比赛中的应用
通过设置sleep函数的数值,如果设置的数字数值越大,返回时间越慢,说明存在时间注入漏洞

宽字节注入

发生位置:php发送请求到mysql时字符集使用charactersetclient设置值进行了一次编码

SQL注入在比赛中的应用
修复:将字符集设置为utf-8

二次编码注入

SQL注入在比赛中的应用

其他

magic_quotes_gpc

SQL注入在比赛中的应用

为什么这个安全项目被关闭?

SQL注入在比赛中的应用

缺陷

SQL注入在比赛中的应用

变量编码解码

stripslashes()这个其实就是decode-addslashes()
其他字符串转换函数
SQL注入在比赛中的应用

例:
SQL注入在比赛中的应用
当magic_quotes_gpc=on时,
提交?id=%2527,可以绕过(因为里边没有特殊字符)
得到sql语句为
SELECT * FROM article WHERE arcticleid=‘’’

二次攻击

与二次编码不同
特点:
SQL注入在比赛中的应用
数据库出来的变量没有进行过滤
数据库转义符合:
mysql/oracle转义符合同样是
提交‘通过魔术引号变化为\’,当update进入数据库时,通过反转义重新变为‘,
mssql的转义字符为‘
提交‘通过魔术引号变化为\’,mssql会把它当为一个字符串直接处理

魔术引号带来的新型攻击

“\”符号不仅仅是转义符合,在WIN系统下也是目录转跳的符号。
这个特点可能导致php应用程序产生一些漏洞
SQL注入在比赛中的应用

magic_quotes_runtime

SQL注入在比赛中的应用
数据库查询文件和文件读取函数

magic_quotes_sybase

SQL注入在比赛中的应用

自动化注入

用sqlmap的tamper脚本unmagicquotes.py
python sqlmap.py -u “http://wargame.kr:8080/SimpleBoard/read.php?idx=1’–tamper"unmagicquotes.py” -batch