XXF构造

XXF构造

X-Forwarded-For

1
X-Forwarded-For是一个http扩展头部,它是用来表示http请求端真实ip的,现在它已成为RFC 7239标准中

client-ip

1
client-ip和X-Forwarded-For的功能相似,不过它是有使用的,不过它没有形成标准,所以不一定所有服务器可以实现

但我们打开页面后,发现要验证码才能读flag,不过我们再打开页面源码,发现有一段前端验证的js代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<script>

function enc(code){
hash = hex_md5(code);
return hash;
}
function validate(){
var code = document.getElementById("vcode").value;
if (code != ""){
if(hex_md5(code) == "0cd4da0223c0b280829dc3ea458d655c"){
alert("您通过了验证!");
window.location = "./flag.php"
}else{
alert("你的授权码不正确!");
}
}else{
alert("请输入授权码");
}

}

</script>

思路是输入的验证码经过md5加密后,是等于0cd4da0223c0b280829dc3ea458d655c,所以进行md5解密就可以得到验证码,但发现不行,怀疑有后端验证,然后用工具去扫描,发现有flag.php文件,然后构造payload

1
http://url/flag.php

发现没有flag,只有叫我们再去验证的界面,不过有一句话让人深思,就是

1
验证逻辑是在后端的,除了购买者和我自己,没有人可以看到flag

可知,我们可以抓包后,构造X-Forwarded-For来让服务端将我们的主机当成本地,所以构造

1
X-Forwarded-For: 127.0.0.1

就可以得到flag