getshell不用英文数字

Posted zaqzzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getshell不用英文数字相关的知识,希望对你有一定的参考价值。

getshell不用英文字母和数字

上代码

技术分享图片

实际代码没有echo strlen($code);我测试的时候加上去的

技术分享图片

思路是eval执行getFlag函数。  

过滤了字母和数字,长度得小于40

直接看payload吧:

?code=$_="`{{{"^"?<>/";${$_}[_](${$_}[__]);&_=getFlag  

这里给大家说说我的疑惑:

①$_是什么玩意?  _是变量的名字。这句话的意思是定义了个变量,名字叫做_(你想问为什么起个这么别扭的名字那就去搜一下php变量命名规则)
②"`{{{"^"?<>/"实际是代表了双引号里面四个值对应异或,异或后的结果是_GET  
③${$_}[_](${$_}[__]),按照$_是_GET拼接就好了。$_GET[_]($_GET(__))  
④不是说过滤了英文字母了吗?为什么后边还有getFlag。&是传递参数是的分割符,code确实是过滤了英文字符,但是&_=getFlag中_是变量,他并没有过滤。    
⑤{}是个省力的操作,不需要用.再来连接
⑥他是怎么执行的?
@eval($_=_GET;$_GET[_]($_GET(__));&_=getFlag);  
这个代码可以直接看做  
@eval($_GET[_]($_GET(__));&_=getFlag);  
进一步变为  
@eval(getFlag($_GET(__)););   

我现在不明白getFlag()括号里的$_GET(__)有什么用,我直接去掉()里面的也可以成功的得到flag,最起码在这道题目里面并没有要求传递参数。

以上是关于getshell不用英文数字的主要内容,如果未能解决你的问题,请参考以下文章

安恒杯月赛 babypass getshell不用英文字母和数字

无字母数字getshell

mysql的getshell方式

201555332盛照宗—网络对抗实验1—逆向与bof基础

逆向及Bof基础实践

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础