第一题
bash
Base64编码隐藏
100
本系列题目FLAG格式固定为CTF{xxxxxx}
适合纯新手入门使用,难度极低。
解题:
访问网页,查看源代码,发现base64加密密码,解密拿到flag
bash
<script>
document.getElementById('loginForm').addEventListener('submit', function(e) {
const correctPassword = "Q1RGe2Vhc3lfYmFzZTY0fQ==";
const enteredPassword = document.getElementById('password').value;
const messageElement = document.getElementById('message');
if (btoa(enteredPassword) !== correctPassword) {
e.preventDefault();
messageElement.textContent = "Login failed! Incorrect password.";
messageElement.className = "message error";
}
});
</script>
第二题
bash
HTTP头注入
100
本系列题目FLAG格式固定为CTF{xxxxxx}
解题:与第一题页面一致,用第一题密码登录,获得提示

直接抓包或者浏览器改UA访问:
User-Agent: ctf-show-brower

第三题
bash
Base64多层嵌套解码
100
本系列题目FLAG格式固定为CTF{xxxxxx}
解题:
bash
<script>
document.getElementById('loginForm').addEventListener('submit', function(e) {
const correctPassword = "SXpVRlF4TTFVelJtdFNSazB3VTJ4U1UwNXFSWGRVVlZrOWNWYzU=";
function validatePassword(input) {
let encoded = btoa(input);
encoded = btoa(encoded + 'xH7jK').slice(3);
encoded = btoa(encoded.split('').reverse().join(''));
encoded = btoa('aB3' + encoded + 'qW9').substr(2);
return btoa(encoded) === correctPassword;
}
const enteredPassword = document.getElementById('password').value;
const messageElement = document.getElementById('message');
if (!validatePassword(enteredPassword)) {
e.preventDefault();
messageElement.textContent = "Login failed! Incorrect password.";
messageElement.className = "message error";
}
});
</script>
查看源码,发现比对代码,逆向解析一下
1、倒着来看,首先 SXpVRlF4TTFVelJtdFNSazB3VTJ4U1UwNXFSWGRVVlZrOWNWYzU= 解b64后:
IzUFQxM1UzRmtSRk0wU2xSU05qRXdUVVk9cVc5 == btoa('aB3' + encoded + 'qW9').substr(2);
解密出中间的encoded,暴力破解一下
bash
encodede4 = "IzUFQxM1UzRmtSRk0wU2xSU05qRXdUVVk9cVc5"
for i in (chars):
for j in (chars):
new = i+j+encodede4
try:
b1 = base64.b64decode((new).encode('utf-8'))
strb1 = b1.decode('utf-8')
except:
strb1 = ''
#if strb1 : print(strb1)
if strb1[:3] == 'aB3' and strb1[-3:] =='qW9':
print("[*]倒数3为:",b1,'前两位为:',i,j)
得出结果:\*倒数3为: b'aB3PT13U3FkRFM0SlRSNjEwTUY=qW9' 前两位为: Y U。
取出中间的 PT13U3FkRFM0SlRSNjEwTUY= --> 解b64:wSqdDS4JTR610MF,
反转一下:FM016RTJ4SDdqSw
2、继续往上走,FM016RTJ4SDdqSw== 应该等于 btoa(encoded + 'xH7jK'),所以爆破前面少的3位,逻辑和上面一样,不过结果会有很多,任选一个登录拿到flag:

第四题
bash
HTTPS中间人攻击
100
解题:下载附件是要给pacp流量包和sslkey文件,用wireshark加载sslkey文件,然后解密流量得到flag。
第五题
bash
Cookie伪造
100
解题:打开网站,默认guest用户,使用guest作为密码登录后发现返回cookie带有角色参数

直接修改cookie中role=admin,重新发包后获取flag