PHP_代码绕过

1 篇文章 0 订阅
1.MD5

PHP是一种弱类型语言,不必向PHP声明变量的数据类型
emm还是回到MD5这个函数吧。。。
MD5没什么 主要的错误在于 PHP的问题
他对

var_dump("admin" ==0);
var_dump("1admin" ==1);
var_dump("2admin" ==2);
var_dump("admin1" ==1);
var_dump("admin1" ==0);

会出现这样的问题
所以对于这样的代码绕过:如下

$_GET['name'] != $_GET['password']
MD5($_GET['name']) == MD5($_GET['password'])
一、

emm还是依靠弱类型
240610708 和 QNKCDZO 的MD5值都是0e开头
他们两个比较导致转换成 0==0 =>true

二、

可以利用数组来绕过
构建 =>name[]=1&password[]=1
可以达到 error=error

2、哈希的加密
$_GET['name'] == $_GET['password']
sha1($_GET['name']) === sha1($_GET['password'])

利用报错来处理这个
sha1函数是对字符串的,如果参数是数组就会报错
返回NULL

name[]=0&password[]=2;

3、strcmp比较的问题

if (strcmp($_GET[‘a’], $flag) == 0)
输入参数错误(数组)会返回0,从正常返回逻辑来说,也可以解释为相等
即是:a[]=0

4、部分弱类型的函数问题

is_numeric:
该函数检测变量是否为数字或者字符串
如果是数字或者数字字符串,则返回TRUE 否则返回FALSE
问题是他是支持十六进制的
也就是说 可以把sql语句转成16进制绕过

//我不确定支不支持00截断。

in_array(value,array):
搜索数组中是否有存在的值
它在比较的时候会自动的做类型转换
【??。。我暂时还没有遇到


暂时先这样吧
看郁师傅的博客的时候
郁师傅写的:
加油吧少年,无论怎样未来还是会继续。希望你不要成为半途而废的人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值