内容不全,后续会持续更新此篇,大多题目来源于ctfshow
目录
最常见的
md5碰撞
没啥可说的了,直接看个例子
<?php
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
echo "ctf{*****************}";
} else {
echo "false!!!";
}}
else{echo "please input a";}
?>
直接payload,只要md5加密后为0e开头就可以
?a=240610708
数组
1.intval函数处理后会进行产生错误,空的array返回0,非空的array返回1
em:
include("flag.php");
highlight_file(__FILE__);
if(isset($_GET['num'])){
$num = $_GET['num'];
if(preg_match("/[0-9]/", $num)){
die("no no no!");
}
if(intval($num)){
echo $flag;
}
}
这里要让我们传入一个get参数num,并且num被禁用的数字,还要让我们为一个数字才会返回flag
这里就可以使用数组,intval处理一个数组对象时,会返回1
?num[]=1
2.md5处理,比较两个值不等,md5值相等时,可以使用数组
em:
include("flag.php");
highlight_file(__FILE__);
if (isset($_POST['a']) and isset($_POST['b'])) {
if ($_POST['a'] != $_POST['b'])
if (md5($_POST['a']) === md5($_POST['b']))
echo $flag;
else
print 'Wrong.';
}
?>
很明显要让a和b不相等,然后md5的值相等,得到flag
?a[]=1&b[]=2
弱类型
首先有三个“=”,然后会进行对比,然后php为弱类型语言
em:
if(isset($_GET['num'])){
$num = $_GET['num'];
if($num==="4476"){
die("no no no!");
}
if(intval($num,0)===4476){
echo $flag;
}else{
echo intval($num,0);
}
}
题目意思就是让我们传入一个get参数num,不能等于4476,然后intval进行截取值要等于44

本文总结了PHP的一些常见特性,包括md5碰撞、数组处理、弱类型、进制转换在安全问题中的应用,以及extract()、sha1()、trim()等函数的绕过策略。通过实例展示了如何利用这些特性进行安全绕过。
最低0.47元/天 解锁文章
1116

被折叠的 条评论
为什么被折叠?



