ctf php审计从题目中的过滤学习绕过

基本介绍

在进行ping命令执行时,能够通过截断来执行新的命令。
根据此原理来进行注入。
例子如下 ip=127.0.0.1;ls
在这里插入图片描述

空格过滤

考虑在进行命令注入时,过滤了空格,可以采用${IFS}、$IFS、$IFS$9的局部变量来表示分隔符,但考虑$IFS直接接字母时可能会被解析成其他变量,所以采用${IFS}固定变量,或者$IFS$9采用$9这个空字符来与后面字母分隔开来固定变量
在这里插入图片描述
在这里插入图片描述

只过滤cat,flag等关键字

如未过滤" ’ \等连接转义符
可以使用""连接符,\转义符来间隔字符串以此绕过过滤

过滤; | &等连接符

linux下;可以用%0a替代
例ctfhub-rce-综合练习过滤了如下字符

preg_match_all("/(\||&|;| |\/|cat|flag|ctfhub)/"

所以最后的payload为

1%0acd$IFS$1f""lag_is_here%0aca""t$IFS$1f""lag_7548135816224.php

过滤more/tail/less/cat等大部分查看符

使用strings

$a == md5( $a) 绕过

原理是寻找一个0e开头的字符串其md5值也是0e,
如0e215962017

使用 inode节点查看文件

ls -i 可以查看文件的inode号
在这里插入图片描述

然后可以使用命令find -inum 1321734 | xargs cat来查看文件了。
xargs将前面的输出作为管道后面的输入。

数组强比较绕过

php5.5版本的数组key溢出bug
参考链接
[0 => 0] === [0x100000000 => 0]为true

猜你喜欢

转载自blog.csdn.net/eliforsharon/article/details/120615961
今日推荐