[极客大挑战 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