本帖最后由 08sec-君子 于 2016-10-17 15:26 编辑
我的测试代码:
[AppleScript] 纯文本查看 复制代码 [PHP] [color=rgb(51, 102, 153) !important]纯文本查看 [color=rgb(51, 102, 153) !important]复制代码
<?php
$db_host = 'localhost';
$db_user = 'root';
$db_pass = 'root';
$id = $_REQUEST['sql'];
$link = mysql_connect($db_host, $db_user, $db_pass) or die("DB Connect Error:" . mysql_error());
mysql_select_db('test', $link) or die("Can\'t use sqlinject:" . mysql_error());
$sql = "SELECT * FROM zr WHERE id=$id";
$query = mysql_query($sql) or die("Invalid Query:" . mysql_error());
while ($row = mysql_fetch_array($query))
{
echo "用户ID:" . $row['Id'] . "<br>";
echo "用户账号:" . $row['user'] . "<br>";
echo "用户密码:" . $row['pass'] . "<br>";
}
mysql_close($link);
echo "当前查询语句:".$sql."<br>";
?>
先说下原理吧
本帖隐藏的内容1.apache在php使用request的情况下会先接受POST参数进行传值,如图:
上面的代码可以很明显的看见我接受的sql参数,所以我的GET传参是完全没反应的
此时我的GET传参是sql,post传参是a,他会无视掉post传参直接接收GET
3.那么重点来了,云锁有个特性,他会先检测POSt,一旦post有参数,会放弃对get的检测,而我们一旦在post参数处填入a=1,而get栏填入sql注入代码,云锁检测post发现没有可疑代码,就会被pass掉
[size=0.83em]QQ截图20161012095049.png (129.34 KB, 下载次数: 0)
下载附件 [url=]保存到相册[/url]
[color=rgb(153, 153, 153) !important]5 天前 上传
|