[极客大挑战 2019]BuyFlag
文章目录
- [极客大挑战 2019]BuyFlag
- 掌握知识
- 解题思路
- 关键paylaod
掌握知识
cookie字段的修改,代码审计,数字和字符串弱等于绕过,科学计数法替换长数字,GET请求包转换POST请求包
解题思路
- 打开题目链接,点击右面的
menu菜单栏会有个买flag界面,进去后界面就有要满足的要求,必须是学生,必须密码正确,还必须钱够。



- 查看了一下源代码,发现了对
password变量的判断,是一个简单的代码审计,is_numeric函数使得传入的参数不能全数字,但是结果还得和404相等。但是由于是弱相等,所以只需要404后面跟字母即可通过判断,因为字符串和数字进行弱等于比较,会把字符串强转成int型,就会把后面的字母舍弃,保留前面的数字部分,即password=404a

- 既然需要
post传参,先抓取该页面的数据包,发现请求头cookie有user字段值为0,既然是数字表示那修改成1应该就是学生用户了。再右键将GET数据包转化成POST数据包,传入password参数



- 根据界面的响应结果能发现,前两个条件已经满足,就差钱了,但是如何传入钱呢,也没给出传钱的参数。查找了一番,说尝试
money为参数,传参成功回显,确定money为参数。传入足够的钱之后发现回显数字太长,这就可以使用科学计数法,使用1e10来表示很长的数字了即可拿下flag

关键paylaod
cookie: user=1
password=404a&money=1e10



















