为什么要进行编码,有点应为原始的格式并不适合传输
比如
+ = & ;
要是上面的这个符号在http传输中会和原始的有冲突
$str = "%25";
echo 'urlencode($str);
?>
结果等于
%
应为没有实验环境我就自己写了一个
a.php文件
代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
$id=addslashes($_GET['id']);
$s = "127.0.0.1";
$u= "root";
$p = "123456";
// 创建连接
$conn = mysqli_connect($s, $u, $p);
// 检测连接
if (!$conn) {
die("连接失败: " . mysqli_connect_error());
}
$id=urldecode($id);
mysqli_select_db($conn,'security');
$a="SELECT * FROM users WHERE id='$id'";
echo 'sql执行的语句: '.$a.'
';
$b=mysqli_query($conn,$a);
echo '输出结果:';
$DuQu=mysqli_fetch_assoc($b);
if ($DuQu) {
echo "\"".$DuQu['username']."\"".$DuQu['password']."
";
}
mysqli_close($conn);
?>
</body>
</html>
输入URL:?id=1'
结果被转意了
我们在进行宽字节注入
还是不行
我们就可以用二次编码注入进行注入了
URL地址http://192.168.0.105/a.php?id=1%2527
发现叫\
给去掉了
是存在sql注入漏洞的