[BUUCTF-web] BuyFlag (writeup)

 进入题目后查看了一下源码没发现东西

查看发现了个menu的目录

点进去后发现了payflag

因为题目为buyflag,所以就可以认定flag在这里拿

因为是buyflag所以就需要进行抓包、改包

进入payflag页面后提示:

如果想要买flag,你必须是CUIT的学生,你必须回答正确的密码  只有CUIT的学生可以买flag

在抓包后发现cookie的user为0,所以直接将0改成1

 

随后回显你是cuiter,请输入你的密码

但是不知道,该怎么办

发现回显的下面有一串关于password的注释

<!--
    ~~~post money and password~~~
if (isset($_POST['password'])) {
    $password = $_POST['password'];
    if (is_numeric($password)) {
        echo "password can't be number</br>";
    }elseif ($password == 404) {
        echo "Password Right!</br>";
    }
}
-->

分析:

变量password使用POST进行传参,不难看出来,只要$password == 404为真,就可以绕过。函数is_numeric()判断其中的参数是数字还是其他,如果是数字则判断为真,否则为假。这里我选择传入的参数为404a   (用hackbar传参)

上面也说了买flag需要100000000,所以POST传参

随后就会得到nember lenth is too long ,意思为money的长度太长

到这里没了什么思路,但是看到他的php版本后,问题就简单了

众所周知php5.3.3有一个漏洞,可以利用函数strcmp()进行绕过

所以得到一个payload

money[]=1000&password=404a

 发包后得到flag

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值