[极客大挑战 2019]BuyFlag 1

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

[极客大挑战 2019]BuyFlag 1

点开MEN,点开源码,发现有一个关键代码,但是又因为它说你如果想要买flag需要为学生,我们猜测可能哪一个地方需要进行认证为学生,但是源码里面没有提示

在这里插入图片描述

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

尝试bp抓包,试一下,一看cookie下user为0,尝试更改一下为1在这里插入图片描述改了过后可以发现页面发生了改变,you are a Cuiter说明已经绕过上面所猜测的身份验证了
在这里插入图片描述

is_numberic函数绕过

1.数组加16进制绕过

num=a[]=4e2
2.
is_numeric(0判断变量是否为数字或数字字符串,不仅检查10进制,16进制是可以。 is
numericl函数对于空字符%00,无论是%00放在前后都可以判断为非数值,而%20空格字符只能放在数值后。所
以,查看函数发现该函数对对于第一个空格字符会跳过空格字符判断,接着后面的判断!

j=1250%20 j=1250%00
3.

php中当一个其他数据类型和数值类型的数据比较大小时,会先将其他数据类型转换成数值类型,这里输入类似1250a数据也可绕过

num=1250a

故用password=404%20成功绕过,现在继续传入money即可
在这里插入图片描述
因为这里说长度太长了,我们尝试用科学计数法来绕过(在之前md5绕过中学过科学计数法绕过)在这里插入图片描述在这里插入图片描述

后面关于长度绕过不同的方法

1.用科学计数法直接绕过
2.利用版本strcmp函数绕过
有关于strcmp函数绕过的讲解

总结:
1.这题比较难想的是前面的学生验证
2.后面的绕过要明白php解析
3.后面长度过长绕过的不同方法学习到了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值