1、漏洞發現:
發現注入點存在/user/del.php文件下。
注入點存在於第141行(142爲自己添加的測試代碼),注入參數爲tablename,此處tablename接收時未經過任何安全檢查。
可見,只對$id進行了安全檢查。
2、漏洞驗證:
首先,通篇閱讀del.php文件,掌握邏輯結構,發現主要針對tablename傳入的參數值進行選擇和判定。
這裏的使用tablename進行查詢的語句都存在注入點,選走後一個條件構造,將參數值設置爲一個文件中沒有出現過的表名,則進入最後一個else條件。
然後抓包,構造payload(沒有回顯,採用時間盲注):id%5B%5D=1&tablename=zzcms_zx where id=1 and if((ascii(substr(user(),1,1)) =112),sleep(5),1)%23
如果查詢到user()的第一個字母是‘r’(我的用戶是root),則休眠5秒。
也可以將$sql輸出,放到navicat裏面測試,效果更明顯。
這樣就可以寫poc**了。