[BJDCTF2020]The mystery of ip

image-20240506210911422

image-20240506210925122

就这两张图

怎么获得ip

经过查阅发现是使用的xff

具体情况之后知识点总结

所以,这里我们要通过xff来获取flag

在抓包页面加上X-Forwarded-For:123

页面变成了

image-20240506211401522

所以我们可以知道xff之后的就是可以回显的东西,尝试一下注入

但是加上一些sql注入的语句之后发现不太行

这个时候就可以尝试一下模版注入

X-Forwarded-For:3

发现回显是

image-20240506211648204

说明里面的东西是能执行的

所以,尝试一些命令

X-Forwarded-For:{{system('ls /')}}

image-20240506211921255

之后就是

X-Forwarded-For:{{system('cat /flag')}}

拿到flag

有关:

xff:

X-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首部成为事实上的标准。在消息流从客户端流向服务器的过程中被拦截的情况下,服务器端的访问日志只能记录代理服务器或者负载均衡服务器的IP地址。

也就是记录ip地址的作用

php获取ip示例:

function getRemoteIP()
{
if (!isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
return $_SERVER["REMOTE_ADDR"]; /* 兼容已有程序 */
}

return $_SERVER["HTTP_X_FORWARDED_FOR"]; /* 返回用户真实 IP */
}

xff注入原理与使用

漏洞描述:XFF,是X-Forwarded-for的缩写,XFF注入是SQL注入的一种,该注入原理是通过修改
X-Forwarded-for头对带入系统的dns进行sql注入,从而得到网站的数据库内容。

检测方法:

通过火狐的插件X-Forwarded-for header 1.0.1.1 进行对本地IP地址进行修改,为其带入的IP地址加入敏感字符

修改后,找到网站登录页面或者其它功能交互页面,提交数据后,查看是否会报错,如果会报错,则说明可能存在该漏洞