CTFshow-_Web应用安全与防护-Base64多层嵌套解码

CTFshow-_Web应用安全与防护-Base64多层嵌套解码

Mel0ny Lv5

CTFshow-_Web应用安全与防护-Base64多层嵌套解码

题目

Question
Question

思路

打开f12,发现密码被操作了很多次

1
2
3
4
5
6
7
8
9
10
11
12
13
 <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;
}
});
</script>

Question

参考资料:btoa()slice()split()join()reverse()substr()

逐步来分析一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
 <script>
document.getElementById('loginForm').addEventListener('submit', function(e) {
const correctPassword = "SXpVRlF4TTFVelJtdFNSazB3VTJ4U1UwNXFSWGRVVlZrOWNWYzU=";

function validatePassword(input) {
let encoded = btoa(input);//把输入变成base64编码
encoded = btoa(encoded + 'xH7jK').slice(3);//把上一步结果加上'xH7jK',再变成base64,再删去前三个字符
encoded = btoa(encoded.split('').reverse().join(''));//把代码反转,再变成base64
encoded = btoa('aB3' + encoded + 'qW9').substr(2);//在首位分别加上'aB3'和'qW9',再丢掉前两个字符
return btoa(encoded) === correctPassword;//再变成base64,然后进行比较
}
});
</script>

可以看出这个是一个密码运算的逆向,从结果反推输入,在赛博大厨操作一下就能得到password=T17316
输入密码发现和上题一样要专门的浏览器,hackbar改一下请求头就可以获得flag

Flag

1
CTF{base64_brute_force_success}
  • 标题: CTFshow-_Web应用安全与防护-Base64多层嵌套解码
  • 作者: Mel0ny
  • 创建于 : 2025-09-08 21:05:59
  • 更新于 : 2025-09-08 21:37:34
  • 链接: https://mel0nyrame.github.io/2025/09/08/CTFshow-Web应用安全与防护-Base64多层嵌套解码/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
CTFshow-_Web应用安全与防护-Base64多层嵌套解码