第一届“百度杯”信息安全攻防总决赛_Upload

时间:2023-03-09 04:05:18
第一届“百度杯”信息安全攻防总决赛_Upload

题目见i春秋ctf训练营

看到fast,就想抓个包看看,以前有道题是打开链接直接来了个跳转,当然这题不是

查看返回包,发现一个好东西

第一届“百度杯”信息安全攻防总决赛_Upload

拿去base64解码看看

第一届“百度杯”信息安全攻防总决赛_Upload

感觉给出的字符串能继续解码,果然解码后得到一串数字

第一届“百度杯”信息安全攻防总决赛_Upload

根据提示要把这串数字以post方式提交,变量名为ichunqiu

第一届“百度杯”信息安全攻防总决赛_Upload

看到返回的是fast!!!,看来我的手速是满足不了ichunqiu了,那就上py跑

这里有个贼坑爹的事,一开始用py3写的代码死活跑不出来,看了wp,同样原理的py2.7的代码却运行自如

我先贴一下我的py3:

import requests
import base64
url = 'http://d5c758086e34407e824f1c45c9dd21a2f65b78a8bc5b4c87.game.ichunqiu.com/'
r = requests.get(url).headers['flag']
key = base64.b64decode(r).decode().split(':')[1]
key2 = base64.b64decode(key).decode()
print(key2)
flag = {'ichunqiu':key2}
print(requests.post(url, data=flag).text)

要是有大佬知道原因请吱个声

py2.7的代码:

import base64,requests
def main():
a = requests.session()
b = a.get("http://d5c758086e34407e824f1c45c9dd21a2f65b78a8bc5b4c87.game.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://d5c758086e34407e824f1c45c9dd21a2f65b78a8bc5b4c87.game.ichunqiu.com/",data=body)
print f.text
if __name__ == '__main__':
main()

结果是直接返回了一个路径

第一届“百度杯”信息安全攻防总决赛_Upload

输入路径后并没有发现有什么线索

里面有个登陆页面,试了好多注入语句都没发现有什么问题

查看wp后才知道是一个SVN 源码泄露漏洞

听大佬的话去访问URL+/刚才的路径/.svn/wc.db,看到了username

第一届“百度杯”信息安全攻防总决赛_Upload

同时看到下面的验证码,提示md5加密后前六位为812367,直接用大佬给的验证码脚本跑了(话说大佬怎么知道是8位验证码而且还是不带字母的)

#coding:utf-8
import hashlib
def md5(s):
return hashlib.md5(str(s).encode('utf-8')).hexdigest()
def main(s):
for i in range(1,99999999):
if md5(i)[0:6] == str(s):
print(i)
exit(0)
if __name__ == '__main__':
main("d72824")

将md5后的username与跑出的验证码填入,密码这里似乎随便填一个就行了,我随手一个123就进去了,又得到一个地址

第一届“百度杯”信息安全攻防总决赛_Upload

进去一看是个上传,不管三七二十一先抓个包,然后00截断一下试试:

第一届“百度杯”信息安全攻防总决赛_Upload

结果返回JPG!!! ,并没有卵用,接着试3.php.jpg,图片成功上传,还被重命名了,并没有解析成php

第一届“百度杯”信息安全攻防总决赛_Upload

接着我直接传入php文件并修改后缀名

第一届“百度杯”信息安全攻防总决赛_Upload

返回了You got it!:),但并没有实质内容,没办法,去看了wp后才知道后缀可以改成pht

修改完成后成功返回flag

第一届“百度杯”信息安全攻防总决赛_Upload