赞
踩
题目来源:BUUCTF: CISCN2019 华北赛区
在某个深夜,身为ikun的文打开了BUUCTF,想看看有没有同为ikun的朋友,经过简单的搜索,发现竟然真的有ikun出的题目,看到这里身为ikun自然经不住诱惑,立刻点了进去!!!
点击后发现,果然是真ikun,看到界面下面写着:“ikun们冲鸭,一定要买到v6!!!”
顿时,文就感受到了一股力量充斥在自己的身体里,心里想一定要给我家gg买到v6!!!
但是文在翻查了3页后,都没有发现v6的身影,心里想身为ikun当然不能蠢蠢的一直翻下去了,
我们ikun要有牌面,当然要自己写个小爬虫呀!!!
通过F12,发现了每个Lv的规律
很快,简单的小爬虫被写出来了(果然难不倒我们机智的ikun!!!)
//time.sleep(1)主要是怕对方开WAF,别把我ip禁了(当然禁了的话,也有很多办法的)
运行一下,发现原来v6在第181页,ikun们冲鸭!!!
点击购买后,告知需要注册后才能购买,为了我家gg冲!!!
注册后,发现竟然直接为ikun们提供了1000元的助力基金,真是贴心呀
但是在购买时,文突然发现自己竟然囊中羞涩买不起v6,心里暗暗惭愧,并想我一定要为gg做点事情!!!
通过自己所学的知识,抓了一下数据包,发现竟然有个支付漏洞,那为了gg必须冲!!!
//支付金额与优惠的百分比都可以随意操控,使实际支付金额小于1000
文在修改数据包后,发现突然跳转到了这个页面,但是这个页面只能admin用户访问,
心想看来要伪装一下admin用户了
通过再次抓取当前页面的数据包,发现Cookie中竟然有我们的老朋友JWT,有这个突破口,感觉胜利就在眼前,将JWT的字符串解码一下,发现了username,那一看就知道要改为admin,这样就能伪装成功了!!!
但是改完admin后,将修改后的字符串写入数据包中,发现页面没有变化,此时文想到了可能要检验secret ,用jwtcrack试一下,爆出了Secret is "1Kun"
将1Kun填入后,获取了正确的JWT,并将正确的JWT填入数据包中
修改好数据包后,文进入到了这个页面,文疯狂点击“一键称为大会员”,但是页面只会刷新一下,气的文差点砸键盘,心想就差最后一步了,难道就这样结束了吗!!!
文在冷静下来后,查看了一下页面源代码,突然看到“友军”,不似乎是小黑子留下的一段话
发现小黑子竟然留下了zip文件(/static/asd1f654e683wq/www.zip),果然是老天都在帮助ikun们,虽然是小黑子留下的,但也勉强看一下有没有什么好东西,下载后发现竟然是一些python源码!!!
//这一步可以用bandit审或者自己直接审都行,以下是手工
用Pycharm打开,发现小黑子留下的果然是好东西,要好好看看有没有漏洞!!!
搜索pickle(python反序列化:pickle.load()/loads(),序列化:pickle.dump()/dumps();
加不加 “s” 的区别,我就懒得说了,自己去搜吧),搜索后发现了反序列化的位置,并发现了
我们的要传参的位置
//别问我怎么知道是pickle的,python反序列化就涉及到那几个,自己试一试就好了
看到这里,既然发现了反序列化的漏洞,我们ikun就要冲冲冲!!!
//大致思路:写脚本生成POP链,源码中调用了pickle.loads(),自然会触发魔术方法__reduce__或者__reduce_ex__()、__setstate__(),在自己构造py的时候,利用了pickle.dumps(),会触发__getstate__(),利用哪个都可以,这个比较简单,就不细说了
(pycharm提示错误,因为我是python3的环境,这个python源码是用python2写的,所以会报错,分辨源码是python3还是python2编写的,也很好区分,直接搜print,在python2中print后不用加(),python3中需要加() )
利用python2 运行刚写完的脚本,生成POP链
通过上文中,发现的可以传参位置,通过F12,将该参数的value修改为自己构造的POP链,再访问一遍此页面就成功给坤坤助力啦!!!
声明:本人是个小白,大佬勿喷,反序列化这一块python反序列化、java反序列化就会一点,
主要还是会一些php反序列化。
当然最重要的是,我是ikun,是不是小黑子(⊙o⊙)
本文可能写的比较水,晚上睡不着,突然想到了坤坤,有感而发
打个广告:迪总yyds
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。