首先看一下题目首页,常规检查一遍,什么都没有发现
然后注册用户,登录查看一番
经过一番测试,发现购买大辣条的地方存在一点点的条件竞争,可以购买到5包或以上的辣条
用burp抓包,发送到intruder模块直接多线程跑即可得到
成功购买到5包以上辣条,然后在兑换辣条之王的位置进行整数溢出
测试结果是0xffff ffff ffff ffff转十进制后,先除以5然后再加1
这里的后端逻辑可能是5包大辣条换一包辣条之王,然后提交x份,那么就需要5x包辣条,但是因为MySQL的限制,超出0xffff ffff ffff ffff后就会报错,所以要除以5,然后加1进行溢出(赛后跟队友交流才知道,这里是Go语言写的,而且这里的溢出是Go语言的unsigned int的溢出)
成功进行溢出,到info页面确认一下是否得到了足够的辣条之王
完美,此时就可以愉快的购买flag了
ps: 文章首发T00ls 博客直到现在才更新,均为本人原创