Hack the box-Diogenes Rage攻克思路
本文由
创作,已纳入「FreeBuf原创奖励计划」,未授权禁止转载
前言
该靶机目前全球攻克人数为780人,国内暂无相关分析,国外内容只有几篇,且均以编写多进程脚本来实现条件竞争,多进程运行不稳定很难达到预期效果。该文使用burp进行漏洞利用,简单易懂。
信息收集
访问网站,查看页面基本信息
查看源代码、检测页面内容、控制台、网络请求均无异常及突破。
该网站为自动售货机,将纸币移动至投币口处,可根据左侧物品的物价及代号,在右侧按键处按下代号,即可自动出货。
经以上逻辑共抓包3条请求
请求1:纸币投入时
请求2:按键购买商品时
请求3:点击红色按钮,重置
观察前后端交互逻辑,未能判断flag的获取方式。进行代码分析,以进一步攻克。
代码分析
/api/purchase
购买商品时,代码如下
1》当user==undefined时,注册用户信息,用户姓名、优惠劵金额为0等信息
2》当购买商品C8时,读取/app/flag文件并将文件内容展示响应包中。
优惠劵一次只能兑换一张,一张面值$1,可是C8商品$13.37,意味着需要兑换14张优惠劵。那么该如何绕过一次只能兑换一张限制?可使用条件竞争-并发兑换。接下来查看兑换优惠劵处代码,以进一步验证猜想。
/api/coupons/apply
兑换优惠劵处代码
由上可见,先判断优惠劵是否存在,也就是是否被使用过。若未使用则兑换金币,将个人信息及金币更新到数据库中。此处若同一时间兑换同一张优惠劵,则可兑换多张金币到个人账户中,故存在条件竞争漏洞。
漏洞利用
获取个人session
使用session并发兑换优惠劵为金币,存入到个人账户中
可见成功兑换19张优惠劵
使用金币并携带session去兑换商品
由此得到flag在响应包中。
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录