[BJDCTF2020]The mystery of ip
点击Flag会返回本机的IP地址,看到IP就要想到X-Forwarded-For,这里我也是看了师傅们的wp才知道的,还是要多积累。
X-Forwarded-For 是一个 HTTP 扩展头部,用来表示 HTTP 请求端真实 IP。那如果我们在请求头中构造虚假的X-Forwarded-For,页面也应该显示我们构造的IP。
为了查看flag我们要在XFF中添加命令,这里考查的是模板注入
模板是一种提供给程序来解析的一种语法,是用于从数据(变量)到实际的视觉表现(HTML代码)这项工作的一种实现手段。拿到数据,放到模板里,然后让渲染引擎将数据生成 html 的文本,返回给浏览器,这样做的好处展示数据快,大大提升效率。
但如果没有对用户输入的数据进行过滤,就会出现问题。比如我们发送X-Forwarded-For: {6*6}
,页面就会回显我们的ip是36,这意味着我们传进去的语句被执行了。因此我们就可以构造如下的payload
X-Forwarded-For: {{system("cat /flag")}}