您的位置:首页 > 编程语言 > PHP开发

php特性

2016-04-22 01:00 489 查看
1、php散列函数比较:

md5('240610708')   == md5('QNKCDZO');
md5('aabg7XSs')     == md5('aabC9RqS');
sha1('aaroZmOk')   == sha1('aaK1STfY');
sha1('aaO8zKZF')   == sha1('aa3OFF9m');
'0010e2'                == '1e3';
'0x1234Ab'             == '1193131';
'0xABCdef'             == '     0xABCdef';


php逻辑绕过:

<?php
$test=$_GET['test'];
$test=md5($test);
if($test=='0')
{
print "True!";

}
else
print "False!"

?>


比如:http://localhost/ctf.php?test=240610708

MD5 ("240610708")  = 0e462097431906509019562988736854
MD5 ("QNKCDZO")    =  0e830400451993494058024219903391
二者的计算结果均为0exxx,换成数字就是0*10的n次方(永远为0)
所以二者的结果换成数字都是0,所以相等。


2、十六进制或者二进制绕过is_numeric:

"0x"+binascii.hexlify(sql_payload)


3、各大CMS厂商的CMS存在的同一设计缺陷

先做一个小测试:

<?php

foreach($_GET as $k=>$v){

$$k = $v;

}

if(isset($my_var)){

echo $num."\n";

}

?>


然后用burp去跑

GET /test.php?my%§c§var=x&num=§x§ HTTP/1.1


payload是从00到ff
得到的结果是 20 2e 5b 5f 也就是 " " "." "[" "_"
除了_以外,空格 句号 方括号都能初始化my_var

结论: php在初始化接收key的时候 就把" " "." "[" 这三个含在超全局变量$_GET中的key的符号转成了"_"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: