sqli-labs第十八題
阿新 • • 發佈:2020-08-21
檢視題目
基於錯誤的請求頭注入
一個登入表單,顯示了ip地址。
測試一通毫無頭緒。。。看看原始碼
審計原始碼
使用者名稱和密碼都做了輸入檢查
if(isset($_POST['uname']) && isset($_POST['passwd']))
{
$uname = check_input($_POST['uname']);
$passwd = check_input($_POST['passwd']);
提供正確的使用者名稱和密碼後,uagent,IP地址,使用者名稱會被插入資料庫中。
$sql="SELECT users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1"; $result1 = mysql_query($sql); $row1 = mysql_fetch_array($result1); if($row1) { echo '<font color= "#FFFF00" font size = 3 >'; $insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)"; mysql_query($insert);
注入測試
首先要獲得一個使用者名稱和密碼
試了半天,一個也不對,直接去查資料庫
使用BP抓包,方便修改請求頭
在user-agent引數後加一個單引號,然後放走資料包,可以看到頁面報出一個錯誤
原始碼也看到了,直接構造payload:',NULL,(select updatexml(1,concat(0x7c,user()),1)))#
這裡先使用單引號閉合第一個引數,然後提供空的第二個引數,在第三個引數構造一個updatexml的報錯,最後閉合括號,註釋掉剩下的語句。
打卡BP,輸入使用者名稱,密碼後提交。在BP中修改請求頭的user-agent引數,然後關閉攔截。
成功爆出資料庫使用者名稱