极客大挑战 2019----BuyFlag

一、题目要求如果要获取flag,需要进行购买。打开靶场环境,点击右上角的MENU发现其中有PAYFLAG选项:

当点击PAYFLAG是会出现一个新的页面,页面中告诉的信息是获取flag时需要:

        1.支付100000000的money。

        2.用student的身份进行登录

        3.输入正确的密码

二、查看当前页面的源文件可发现:
    ~~~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>";
    }
}

money和password必须要以POST方式进行提交并且对password进行的验证检测。

        is_numeric()函数:返回一个bool值,当变量时数字或者时数字字符时函数返回值位true

使用POST提交password=404然后用burp抓包可以查看到数据包中有"Cooke:user=0"的字段,因为提示为:必须要以student的身份登录。

将数据包发送到Repeater模块中去,将user的值改为“user=1”尝试一下:

请求成功,并且是以student的身份请求成功的,但是password错误并告诉我们不能为数字。

将password的值改为password=404s提交数据时,发现密码是正确的。到目前为止已经实现了前两个验证机制。当添加金额时money=100000000提交时,告诉的是数字太长了,减少金额时又提示金额不够。

此时就应该考虑使用数组绕过检测机制的方式进行提交(password=404s&money[]=100000000):

最后就顺利的拿到了flag. 

flag{0c08eba1-ab0e-4798-98fd-f9026ab0dfd6}.

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值