apache特性繞過雲鎖sql注入防護

原諒我比較懶,不想上傳圖片了,直接用sss的圖片

我的測試代碼:

<?phpn$db_host = localhost;n$db_user = root;n$db_pass = root;n$id = $_REQUEST[sql];n n$link = mysql_connect($db_host, $db_user, $db_pass) or die("DB Connect Error:" . mysql_error());nmysql_select_db(test, $link) or die("Cant use sqlinject:" . mysql_error());n$sql = "SELECT * FROM zr WHERE id=$id";n$query = mysql_query($sql) or die("Invalid Query:" . mysql_error());nwhile ($row = mysql_fetch_array($query))n{n echo "用戶ID:" . $row[Id] . "<br>";n echo "用戶賬號:" . $row[user] . "<br>";n echo "用戶密碼:" . $row[pass] . "<br>";n} nmysql_close($link);n necho "當前查詢語句:".$sql."<br>";n?>n

先說下原理吧

1.apache在php使用request的情況下會先接受POST參數進行傳值,如圖:

上面的代碼可以很明顯的看見我接受的sql參數,所以我的GET傳參是完全沒反應的

2.在POST傳參但不是接收參數時,apache會無視POST,舉個栗子:

echo $_request[sql];n

此時,我get的sql=666,post的a=777,頁面會列印出666而不是777

3.那麼重點來了,雲鎖有個特性,他會先檢測POSt,一旦post有參數,會放棄對get的檢測,而我們一旦在post參數處填入a=1,而get欄填入sql注入代碼,雲鎖檢測post發現沒有可疑代碼,就會被pass掉

麻煩各位 能看了就看,不能看了別噴我 O(∩_∩)O謝謝

還有就是別問這是apache的錯還是雲鎖的過,麻煩各位搞清楚關鍵點,OK?

關鍵點是,一旦雲鎖POST有參數對GET放棄檢測,關apache毛事情啊


推薦閱讀:

三星手機瀏覽器被曝同源策略繞過漏洞,影響三億設備
<黑客手機>oneplus3T windows平台下刷黑手細節
iphone5被偷了,在不刷機的前提下,小偷是怎麼破解了開機密碼的?
「洞察合天,金石為開」-GoldStone神秘面紗輕啟!

TAG:信息安全 | 渗透测试 | 黑客Hacker |