练[极客大挑战 2019]BuyFlag

[极客大挑战 2019]BuyFlag

文章目录

      • [极客大挑战 2019]BuyFlag
      • 掌握知识
      • 解题思路
      • 关键paylaod

练[极客大挑战 2019]BuyFlag_第1张图片

掌握知识

cookie字段的修改,代码审计,数字和字符串弱等于绕过,科学计数法替换长数字,GET请求包转换POST请求包

解题思路

  1. 打开题目链接,点击右面的menu菜单栏会有个买flag界面,进去后界面就有要满足的要求,必须是学生,必须密码正确,还必须钱够。

练[极客大挑战 2019]BuyFlag_第2张图片

练[极客大挑战 2019]BuyFlag_第3张图片

练[极客大挑战 2019]BuyFlag_第4张图片

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

练[极客大挑战 2019]BuyFlag_第5张图片

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

练[极客大挑战 2019]BuyFlag_第6张图片
练[极客大挑战 2019]BuyFlag_第7张图片

练[极客大挑战 2019]BuyFlag_第8张图片

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

练[极客大挑战 2019]BuyFlag_第9张图片

关键paylaod

cookie: user=1

password=404a&money=1e10

你可能感兴趣的:(buuctf刷题,web安全,php,笔记,网络,网络安全)