无数字字母rce

发布时间 2023-09-22 09:49:50作者: 折翼的小鸟先生

**前言:在做代码执行题时随着过滤手段越来越强,传统的手段逐渐无法满足目前的需求,故特此

来学习绕过过滤的进阶手段,无数字字母rce

1.1 什么是无数字字母rce

无数字字母rce,就和他的名字一样,就是不利用字母和数字构造webshell,从而绕过对方的过滤

手段。

对于无数字字母rce可以处理的过滤手段如下

<?php
highlight_file(__FILE__);
$code = $_GET['code'];
if(preg_match("/[A-Za-z0-9]+/",$code)){
    die("hacker!");
}
@eval($code);
?>

很明显,在这个程序中,数字和字符全部被过滤掉了,便排除了原来的手段。

无数字字母rce的原理是什么呢,是利用各种非数字字母字符,经过各种变换,比如异或,取反,

自增,构造成单个字母字符,然后把单个字母字符拼接成原构造的payload

1.2 异或

这里说的异或是按位异或,即^ 。在使用异或的过程中,Php会先把两个字符转换为

ascii码,然后将这个值转换为二进制,接着对二进制数进行按位异或,最后将异或的结果转换为

ascii码,然后到对应的字符。

首先我们先得明白异或的规则是什么,异或时

1^1=0 1^0=1 0^1=1 0^0=0

即相同为0 ,不同为1。至于具体的ascii码和二进制对应如下表。

表图

就比如如果我们想得到'a',应该怎么办呢?在选取字符时尽量不要选在url中有特殊含义的字

符,比如?或者 如果实在要用,请使用unicode表示。