1. 程式人生 > 實用技巧 >利用HPP引數汙染攻破Sqlilabs第29關:Protection with WAF

利用HPP引數汙染攻破Sqlilabs第29關:Protection with WAF

很多人玩到29關發現根本沒有WAF,其實是有的,在第29關的目錄下可以找到一個login.php檔案,這才是這關的真正頁面。

這關不看原始碼很難攻破,所以先來分析原始碼,檢視原始碼會發現裡面有兩個奇怪的函式,whitelist函式判斷id引數的值是不是純數字,如果不是則導向失敗黑入頁面,而javaimplementation函式則是把引數拆解:

通關的祕密就在javaimplementation函式裡,這個函式在url中找到第一個名為id的引數後就直接返回數值,而返回的資料則交由whitelist進行安全判斷,但是很明顯,由於$val的取值方式存在問題,這個函式存在引數汙染漏洞。

關鍵點就在於,如果我們傳入引數 idx11&id=1,$id可以正確的獲取值,而javaimplementation函式返回的將是idx的值,因此,我們可以通過利用javaimplimentation函式的引數汙染漏洞巧妙地構造出以下語句成功進行注入:

http://127.0.0.1/sqli-labs/Less-29/login.php?idx11&id=1' and  updatexml(1,concat(0x7e,database()),0) and '1'='1