[BJDCTF2020]The mystery of ip

分析

拿到题目观察了一下,题目有两个选项,一个是flag,一个是hint

先看hint,是一个hint.php文件,从页面上看,啥也没有。所以看看源代码有啥内容(一个比较好的习惯就是先对网页信息进行详细的搜集)

源代码也没什么特别的,只有一句提示:

hint页应该找不到什么信息了,那就看看flag页吧。

flag页有显示自己的ip地址

所以重点应该就是获取ip的方法。

我最初想到的是RCE的ping命令执行,但是不太对,命令执行是去执行自己设置的命令,通过绕过的手段达到获取信息的目的,但是这个是直接显示了ip,,太久没搞ctf了知识都搞忘了

X-Forwarded-For

回归正题!我能想到的关于ip的题就是X-Forwarded-For伪造ip

关于X-Forwarded-For

X-Forwarded-For 是一个事实标准,标准定义,每次代理服务器转发请求到下一个服务器时,要把代理服务器的 IP 写入 X-Forwarded-For 中,这样在最末端的应用服务收到请求时,就会得到一个 IP 列表:X-Forwarded-For: client, proxy1, proxy2

所以题目中获取的ip有可能是通过X-Forwarded-For读取的,那我可以用burp抓包,然后添加一行X-Forwarded-For的内容来检验一下自己的猜测

X-Forwarded-For:127.0.0.1

可以看到ip变了,说明猜测是对的

SSTI模板注入

找到了这扇“门”,那利用什么工具能撬开这扇门呢?

最常见的方法就是注入,而sql注入显然是不行的,这又没什么数据库的交互,所以就剩下了SSTI注入(毕竟我知道的其他方法也不多)

SSTI就是服务器端模板注入(Server-Side Template Injection)和常见Web注入的成因一样,也是服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编 译渲染的过程中,执行了用户插入的恶意内容,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。其影响范围主要取决于模版引擎的复杂性。

测试SSTI的方法就是输入一个被俩大括号包起来的乘法,如果输出的是乘法的答案,那说明存在SSTI注入

X-Forwarded-For:{{3*6}}

存在注入,那就最后构造命令了。尝试在{}中构造系统命令

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

 测试后发现可以执行,不过没看到flag文件,于是我‘ls /’查看上一级的文件夹,发现有一个flag,于是构造命令:

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

成功找到flag

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值