[CISCN2019 华北赛区 Day1 Web2]ikun
之前做题写做题思路过程一般都是做完了再写,不过这道题脑洞比较大而且涉及到的知识点比较多,所以边复现边写wp。
靶场打开了之后比较有意思
鸡你太美
简单地看一下页面,是购物商城的网页
应该是买B站的会员,页面有个提示,是一定要买到lv6,简单地翻了几页,没有发现lv6,于是写一个脚本根据网页地址的变化来查找
跑了一会就找到了
181页,在url将page改成181之后刷新
这么贵,我们的钱是远远不够的,使用商城薅羊毛的思路,抓包修改价格,发现这样会报错,所以我们修改折扣
将折扣改的非常低,返回包403了,暴露了后台地址,访问之
告诉我们只允许admin访问,抓包刷新该页面,查看身份认证信息
发现包内有JWT,贴一个介绍的文章
我们将包里面的JWT解密一下
可以看到显示了我们的username是test
这个正是我之前注册的时候的用户名,很容易我们可以想到将username修改成admin,不过我们还需要找到JWT签名的密钥
网上已经有大牛写好了破解工具了
这里涉及了一个小的知识点,在Ubuntu上面下载github代码
我们可以先下载git,方便从gituhb上面抓取项目
因为我这里是kali,直接就是root权限,所以就没有sudo了
比如我们现在需要下载c-jwt-cracker 项目代码,使用如下命令
以后在github上下载项目都是 git clone url
下载到本地之后到c-jwt-cracker使用make命令
文件夹下就生成了jwtcrack程序
对于加密后的jwt, HS256加密我们可以尝试一下爆破
这里运行之后可以看到
密钥是1Kun
有了密钥之后将username修改成admin,重新加密
将修改后的jwt重新发包修改
OK,可以看到已经使用admin的身份登陆成功了
点击一键成为大会员好像没有什么用
那我们查看源代码,发现有源代码泄露
下载之后来审代码
源代码里面有一个hint,一看就知道是unicode编码,在线解码一下
提示我们有后门,于是继续审计代码,查找后门在哪里
Admin.py里面有反序列化操作
python反序列化以前没有遇到过
我看了师傅们的博客之后的理解就是,我们构建一个类,类里面的__reduce__python魔术方法会在该类被反序列化的时候会被调用
而在__reduce__方法里面我们就进行读取flag.txt文件,并将该类序列化之后进行URL编码
EXP如下
当__reduce__被定义之后,该对象被Pickle时就会被调用
我们这里的eval用于重建对象的时候调用,即告诉python如何pickle他们
供eval使用的即打开的文件flag.txt
其他的参数我们可以不填
payload有很多种写法,这算是一种通用型写法
我们在本地python2的环境下运行
得到了序列化之后并且url编码之后的结果
点击页面一键成为大会员,抓包
接着将python2得到的结果替换掉become的内容
返回包里面就有flag了
贴上参考的博客
__EOF__

本文链接:https://www.cnblogs.com/Cl0ud/p/12177062.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!