天下武功唯快不破
第一反应就去抓包,看到返回包的header中有FLAG的值,base64解码后得到下图所示
这就要求我们在请求头中post相应key的值,我直接在burp中尝试了多次都没有用,想起来这道题讲的应该是快,所以果断拿出python跑一跑
1 import requests 2 import base64 3 4 url = 'http://ctf5.shiyanbar.com/web/10/10.php' 5 r = requests.get(url).headers['FLAG'] 6 key = base64.b64decode(r).decode().split(':')[1] 7 flag = {'key':key} 8 print(flag) 9 print(requests.post(url, data = flag).text)
可直接得到flag
让我进去
查看源码并没有发现什么提示,随便输入账号密码看看,看到cookie有个两个醒目的参数
把source改成1试了试,果然出现了源码
1 $flag = "XXXXXXXXXXXXXXXXXXXXXXX"; 2 $secret = "XXXXXXXXXXXXXXX"; // This secret is 15 characters long for security! 3 4 $username = $_POST["username"]; 5 $password = $_POST["password"]; 6 7 if (!empty($_COOKIE["getmein"])) { 8 if (urldecode($username) === "admin" && urldecode($password) != "admin") { 9 if ($COOKIE["getmein"] === md5($secret . urldecode($username . $password))) { 10 echo "Congratulations! You are a registered user.\n"; 11 die ("The flag is ". $flag); 12 } 13 else { 14 die ("Your cookies don't match up! STOP HACKING THIS SITE."); 15 } 16 } 17 else { 18 die ("You are not an admin! LEAVE."); 19 } 20 } 21 22 setcookie("sample-hash", md5($secret . urldecode("admin" . "admin")), time() + (60 * 60 * 24 * 7)); 23 24 if (empty($_COOKIE["source"])) { 25 setcookie("source", 0, time() + (60 * 60 * 24 * 7)); 26 } 27 else { 28 if ($_COOKIE["source"] != 0) { 29 echo ""; // This source code is outputted here 30 } 31 }
这里可以看到三个获取flag前的判断语句:
1.username为damin
2.password不为admin
3.cookie中的getmein参数的值等于md5($secret . urldecode($username . $password))
一脸懵逼,哭着去找wp。
哈希长度扩展攻击 (瑟瑟发抖 听都没听过)
贴一下大佬的相关解释,研究了一整晚还是懵懵懂懂的
hash哈希长度扩展攻击解析(记录一下,保证不忘)
实验吧-让我进去【salt加密 哈希长度拓展攻击】
先放着吧╮(๑•́ ₃•̀๑)╭