https://www.ichunqiu.com/battalion?t=1&r=0

进入题目链接,是一张黑人问号图片:
i春秋 “百度杯”CTF比赛 十月场 Gift
直接使用burp suite抓包送到Repeater模块,检查发送和相应报文的HTTP头部字段,并未发现可疑字段,图片是base64编码,点击href链接,依然还是刚的页面,尝试更改请求方法,将GET更改为POST,响应如下:
i春秋 “百度杯”CTF比赛 十月场 Gift
如果了解过Django的话应该很容易看出来这是Django的报错页面,这一点可以从红色箭头指向的地方看出来,下面是一张Django的初始界面,对比一下:
i春秋 “百度杯”CTF比赛 十月场 Gift

下面的工作就是去搜索往年的与Django有关的write up,找到一篇:
https://bbs.ichunqiu.com/thread-14365-1-1.html

????

然后我就去看了一下他的github页面,找到了对应的文件,并下载了下来,提示说密码是他的生日,那我们直接制作字典并**即可

字典制作代码:

#include <stdio.h>

#include <stdio.h>

int main()
{
	int year = 0, month = 0, day = 0;
	for(year=1990; year<=2018; year++)
		for(month=1; month<=12; month++)
			for(day=1; day<=31; day++)
				printf("%d%02d%02d\n", year, month, day);
	return 0;
}

i春秋 “百度杯”CTF比赛 十月场 Gift

**脚本代码:

#!/bin/bash

cat ./password.txt | while read LINE
do  
	#将标准错误和标准输出都重定向至文件123中
	unzip  -P "$LINE" gift.zip > 123 2>&1
	grep -q "bad" ./123 
	if [ $? -eq "0" ]; then
		rm -rf S* 
		continue
	else 
		grep -q "incorrect" ./123
		if [ $? -eq "0" ]; then
			echo "wrong password"
			continue
		else 
			echo $LINE
			break
		fi
	fi
done 

当我们给unzip提供错误的密码有时也能将文件解密,但是会提示:
i春秋 “百度杯”CTF比赛 十月场 Gift
因此我们先检查输出中是否存在字符串bad(因为incorrect在两种情况中都会出现,bad只会出现在这种情况中)

最后执行getPasswd.sh,成功获得压缩包密码:

i春秋 “百度杯”CTF比赛 十月场 Gift

因为脚本直接把文件解压了,其实我们知不知道密码也无所谓,现在SECRET_KEY.KEY已经躺在当前目录中了

有了这个东西,我们就可以进行针对Django的命令执行漏洞攻击了,因为我没有公网IP,所以后面的步骤没做。。。。。。

相关文章: