进入题目后 先查看页面源代码:
就是说post发送ichunqiu=你发现的东西
抓包发送到repeater
base64解密
猜测 大概能再解码一次
得到一串数字
post方式发送ichunqiu=这串数字
页面反显fast,说明我们得用脚本跑
import base64,requests
def main():
a = requests.session()
b = a.get("http://be27796e9fab4928b78d609e894a64f02db126a3d76e4996.changame.ichunqiu.com/")
key1 = b.headers["flag"]
c = base64.b64decode(key1)
d = str(c).split(":")
key = base64.b64decode(d[1])
body = {"ichunqiu": key}
f = a.post("http://be27796e9fab4928b78d609e894a64f02db126a3d76e4996.changame.ichunqiu.com/", data=body)
print f.text
if __name__ == '__main__':
main()
访问后进入新的页面
这里对这个网页进行源码泄露扫描发现这个
访问这个页面,得到:
解密得:8638d5263ab0d3face193725c23ce095
然后破解下验证码
substr(md5(captcha), 0, 6)=02ac0d 根据这个提示符写下脚本
for($a; $a<100000000; $a++){
if(substr(md5($a),0,6) == '02ac0d'){
echo $a;
exit();
}
}
得到4682256,登陆
访问后进入新的页面
选择一个图片上传, 改后缀为pht即可获得 flag, Content-Type: 务必为 image/jpeg
为何可以直接上传后缀为 pht 或 phtml 绕过黑名单呢?
php的conf文件中是有一个正则的后缀名限制的,只要符合都可以被当做php文件执行。
符合的后缀包括 php、php3、php4、php5、phtml、pht 等。
什么环境下可以解析 phtml 和 pht 呢?
1,phpstudy和wamp以及centos用yum方式 安装的lamp环境不能解析phtml和pht
2,ubuntu和debian利用apt-get方式安装的lamp环境 就能解析phtml和pht
利用这些环境特性和黑名单就能绕过限制,达到上传webshell的目的。