首发于qax攻防社区欢迎转载
本文将利用代码本身存在的问题尝试对一些主流的webshell检测工具、平台进行绕过
启:
常见的webshell已经被杀烂、搜索引擎能搜索到的、github上能找到的大部分webshell不是存在版本限制,就是已经被检测,当然还有执行不了的.....
当然自己写的免杀当然是最好的免杀,毕竟特征没被抓过本文将给出一点新思路
本灵感源于CTF、代码审计且高版本通用先上图吧
魔改一下实测也能过阿里等等、本文提供思路其余的交给大家发挥
承:
在以往的例子中,低版本的php的webshell五花八门举几个常见的例子吧
1.变量覆盖<?php $v="x"; $$v="shell_exec"; #相当于是 $x="shell_exec"; echo $x($_GET['xxx']); ?>
2.动态传参<?php $v=$_GET['func']; $v($_GET['xxx']); ?>
3.参数替换........等等 这里就不举例子了这样的webshell并不是说不能用,只是在高版本的php中由于动态调用函数的禁用导致不能发挥以往的作用了
转:
事实上引用innks的一句话:“杀软给他查呗,我代码我自己写错行不行”在CTF和代码审计中、都会关注到一个点--------不正当的函数利用导致变量覆盖用过自动审计的小伙伴估计会发现如下警告
既然如此我们探究一下Extract函数吧
明显Extract的不当利用将会照成任意变量覆盖trick在这 当传入Extract函数的值可控时即可造成任意变量值修改
此时c的值从定义的345变成了123
理下思路我们通过$GET传入数组给变量b,变量c的值硬编为345;此时我们使用extract函数对变量进行覆盖即接收传入的数组中的参数并覆盖原先的变量值
那么搭配上经典的eval 我们就能像本文开始时描述那样的bypass