攻防世界Web lottery

lottery

  开心!虽然第一次遇到git源码泄露写了好久,但是写出来了就很开心~~

  打开界面我们知道,要拿到flag,就要赢到足够的钱,其实一开始我以为可以找到一个地方直接修改余额什么的,把网页源代码中的文件看了几个都没发现突破口……

  然后又没思路了……

  尝试了一下robots.txt,想看看有没有什么文件,然后发现了:

  瞬间振奋.jpg

  百度了一下发现应该是git源码泄露,下载了GitHack(下载地址)

  然后用GitHack扫描url:

攻防世界Web lottery_第1张图片

  发现了api.php,这时候源码已经下载下来了,打开api.php的源码:

攻防世界Web lottery_第2张图片

  在买彩票这里的函数:

  其中 $numbers 来自用户json输入 {"action":"buy","numbers":"1122334"},没有检查数据类型。 $win_numbers 是随机生成的数字字符串。
  使用 PHP 弱类型松散比较,以"1"为例,和TRUE,1,"1"相等。 由于 json 支持布尔型数据,因此可以抓包改包,构造数据:

  构造两次钱就够了(要注意当生成的win_number中不含0时才会得5000000,构造两次得的钱不够的话再构造一次就好了)

你可能感兴趣的:(Web学习笔记)