前言:由于做题的时候还没有刷过web,以下web纯靠摸爬滚打,单单是为了交wp而写
headach3
- F12检视,在网络界面下刷新,抓取传输文件,在响应标头中看见flag
会赢吗
- F12检视看到第一部分,ZmxhZ3tXQTB3
- Base64解码得到flag前半段flag{WA0w
- 在注释的结尾发现有一串类似地址的文字
- 访问
容器地址/4cqu1siti0n
- F12检视发现一个 JavaScript定义的新函数,名为revealFlag
- 控制台输入
revealFlag('4cqu1siti0n')
- 得到第二部分IV95NF9yM2Fs,以及又一串地址/s34l
- 在/s34l下,F12检视发现又一个js函数是用来处理提交的表单,并返回flag
- 控制台输入如下代码,模拟表单提交
fetch('/api/flag/s34l', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ csrf_token: document.getElementById('csrf_token').value })
})
.then(response => response.json())
.then(data => console.log(`第三部分Flag: ${data.flag}, 下一关: /${data.nextLevel}`))
.catch(error => console.error('请求过程中出现错误:', error));
- 得到第三部分MXlfR3I0c1B,以及又又又一串地址/Ap3x
- 在/Ap3x下,F12检视发现有
<noscript>
存在,这是给予禁用JavaScript的用户的另一种使用方法 - 禁用浏览器的JavaScript,得到新按钮,点击得到第四部分fSkpKcyF9
- 或者控制台手动模拟表单提交,一样能得到第四部分
const form = document.getElementById('winForm');
fetch(form.action, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams(new FormData(form)).toString()
})
.then(response => response.json())
.then(data => console.log('Flag:', data.flag))
.catch(error => console.error('请求过程中出现错误:', error));
- 后三部分连起来IV95NF9yM2FsMXlfR3I0c1BfSkpKcyF9,Base64编码得到!_y4_r3al1y_Gr4sP_JJJs!}
- flag{WA0w!_y4_r3al1y_Gr4sP_JJJs!}
皮蛋
- F12检视发现代码注释中有/hint.php
- 访问hint得到
$sql="SELECT uname,position FROM hexo WHERE id=$id LIMIT 0,1";
或许你可以了解下联合注入
- 1 UNION SELECT uname, position FROM hexo
- (不会了)