[极客大挑战 2019]BuyFlag

[极客大挑战 2019]BuyFlag

一、解题思路

1.进入题目的主界面,点击右上角的菜单

在这里插入图片描述

2.题目是让我们买flag,那就点击payflag

在这里插入图片描述

3.根据题目要求买flag,需要花钱100000000,下面的英文提示说——If you want to buy the FLAG:
You must be a student from CUIT!!!
You must be answer the correct password!!!
中文意思就是:如果你想要买这个flag:你必须是来自CUIT的学生;你必须输入正确的密码。

在这里插入图片描述

4.解决web的基本操作,查看页面源代码(鼠标右键,检查页面源代码或者使用快捷键Ctrl + U),往下面可以看到提示

在这里插入图片描述

5.分析提示的代码

	~~~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>";
	}
}

6.阅读源代码可以得出:
变量password使用POST的传参方式进行传参,不难看出来,只要$password == 404为真,那么,就可以绕过。函数is_numeric()判断其中的参数是数字还是其他,如果是数字则判断为真,否则为假。这里我选择传入的参数为404a

在这里插入图片描述

7.又看到新的提示,你必须是来自CUIT的学生,直接抓包看看是什么情况。

在这里插入图片描述

8.看了一下抓包情况,关于用户的提示只有在cookie:user=0,那我们将其换为1试试

在这里插入图片描述

9.可以看到提示——说我们的身份及密码正确,黑客,买flag,那我们再根据提示,支付money,使用post传参password=404a&money=100000000

在这里插入图片描述

10.根据提示,我们的输入长度太长了,那就换个小点的数试试
password=404a&money=10000

在这里插入图片描述

11.把钱的金额减少时,又有提示说——钱不够。这里的漏洞利用应该可以是这道题的精髓所在。明知道有漏洞,可以利用又感觉束手无策。没办法,只能查看一下服务器的版本,看看有没有可利用的点

在这里插入图片描述

12.可以看到PHP的版本为:PHP/5.3.3,可以利用函数strcmp(),使用数组绕过password=404a&money[]=1000

在这里插入图片描述

13.成功拿下flag
flag{469c921e-58ca-40dc-8374-e6cd858236b1}

二、知识点总结

1.通过修改cookie绕过身份认证机制;
2.通过查看PHP的版本,查看漏洞利用点;
3.is_number()函数strcmp()函数的利用

PS

1.遇到问题很正常,得多尝试,不要怕报错;
2.多刷题目总结经验

  • 13
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值