BABYBYPASS

 先贴代码:    

①限制字符长度35个
②不能使用英文字母和数字和 _ $  

最后提示有个getFlag()函数,从这个函数入手。

我们的第一思路是直接eval执行getFlag函数,但是这里过滤了 _ $ 无法通过异或的方法构造变量,下一篇博客有这样的题目
所以最终这道题目思路是通过eval函数执行系统命令,查看index.php。

用到的知识点

①linux通配符 * ?
②php短标签<??>
③linux一切皆文件
④apache默认存放网页路径

linux通配符

*代表任意个字符,?代表一个字符

php短标签

可以用<?='命令'?>。这样就不用写绕过了这部分的英文字母

一切皆文件

我们linux用到的命令例如ls,cat等命令都是文件,存放于/bin目录下面,也可以这样使用/bin/cat /bin/ls。

apache默认存放网页的路径

/var/www/html ,现在有很多一键安装的面板wdlinux和phpstudy等目录会改变。

一步一步分析

①现在假设代码是这样的(本地试了下)没有任何过滤

index.php

flag.php  

这种情况我们直接

?code=?><?php getFlag()?>  

或者

code=?><?php echo `/bin/cat /var/www/html/index.php` ?>(要查看源代码才能显示代码)

也可以用短标签试一下:

?code=?><?=getFlag()?>
code=?><?=`/bin/cat /var/www/html/index.php`; ?>

细节:

为什么code=?>,为什么要先闭合呢?

eval里的参数不让直接传<? php,    
说是得先离开php模式后进入那就
?>  <? php就可以了  

②现在代码做了过滤,过滤了英文数字_$和长度,就是原来的题目。

因为执行的系统命令,我们可以用linux通配符

/bin/cat /var/www/html/index.php>变成
/???/??? /???/???/????/?????????
但这样会超过长度,所有最后的index.php直接换成*就好了
/???/??? /???/???/????/*  

那 =?><?=`/???/??? /???/???/????/*`;?>

为什么要用`而不是',浏览器会进行编码破坏掉了',而`可以作为'使用但是不会被编码

安恒杯月赛 babypass getshell不用英文字母和数字的更多相关文章

  1. getshell不用英文数字 或者不用下划线

    getshell不用英文字母和数字 上代码 实际代码没有echo strlen($code);我测试的时候加上去的 思路是eval执行getFlag函数. 过滤了字母和数字,长度得小于40 直接看pa ...

  2. 随机生成长度为len的密码,且包括大写、小写英文字母和数字

    一道华三面试题,随机生成长度为len的密码,且包括大写.小写英文字母和数字,主要Random类的使用,random.nextInt(len)表示生成[0,len)整数.具体实现见下面代码,已经很详细了 ...

  3. 如果输入的不是英文字母或者数字或者汉字,则返回false

    public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_C ...

  4. css中a元素放长英文字母或者数字自动换行的解决

    在做链接分享页面的时候遇到a元素中的下载链接长英文溢出不换行的问题 在给他以及他父元素设置宽度依然没有解决这个问题 最后解决办法给元素加上word-wrap:break-word 解释:使用break ...

  5. 判断是否英文字母或数字的C#正则表达式

    private int IsDigitOrNumber(string str) { if(System.Text.RegularExpressions.Regex.IsMatch(str,@" ...

  6. JavaScript 中怎样判断文本框只能输出英文字母、汉字和数字,不能输入特殊字符!

    JS-只能输入中文和英文2008-11-08 10:17在js中用正则表达式对象(RegExp)判断中文 ^[\u0391-\uFFE5]+$英文 ^[A-Za-z]+$中文和英文/^[\u0391- ...

  7. jquery正则表达式显示文本框输入范围 只能输入数字、小数、汉字、英文字母的方法

    正则表达式限制文本框只能输入数字 许多时候我们在制作表单时需要限制文本框输入内容的类型,下面我们用正则表达式限制文本框只能输入数字.小数点.英文字母.汉字等各类代码.1.文本框只能输入数字代码(小数点 ...

  8. java统计英文字母、空格、数字和其它字符的数目

    package tes; import java.util.Scanner; //java统计英文字母,空格,数字和其它字符的数目 public class ZiFuTongJi { public s ...

  9. Java基础编程题——分别统计出其中汉字、英文字母、空格、数字和其它字符的个数

    package com.yangzl.basic; import java.util.Scanner; /** * 分别统计出其中汉字.英文字母.空格.数字和其它字符的个数 * @author Adm ...

随机推荐

  1. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:5.技术简介之Hibernate

    目录 序言 配置 hibernate.cfg.xml配置文件 加载hibernate.cfg.html配置文件并获取Session 对象的注解配置 增删改查 具体的增删改查代码 数据库操作的封装 连接 ...

  2. LeetCode Reverse Words in a String 将串中的字翻转

    class Solution { public: void reverseWords(string &s) { string end="",tem="" ...

  3. UVA 1642 Magical GCD(gcd的性质,递推)

    分析:对于区间[i,j],枚举j. 固定j以后,剩下的要比较M_gcd(k,j) = gcd(ak,...,aj)*(j-k+1)的大小, i≤k≤j. 此时M_gcd(k,j)可以看成一个二元组(g ...

  4. 面试中常见的 MySQL 考察难点和热点

    基本架构 MySQL是典型的三层架构模式,在平常使用中对MySQL问题排查和优化,也应该针对具体问题,从对应的层解决问题 服务层:经典的C/S架构,主要是处理连接和安全验证. 核心层:处理MySQL核 ...

  5. Python F-string 更快的格式化

    Python的格式化有%s,format,F-string,下面是比较这三种格式化的速度比较 In [12]: a = 'hello' In [13]: b = 'world' In [14]: f' ...

  6. LuceneTest

    /** * Created by mhm on 2019/6/24. */@RunWith(SpringJUnit4ClassRunner.class)public class LuceneTest ...

  7. Activiti学习记录(四)

    1 连线 注意:如果将流程图放置在和java类相同的路径,需要配置: 1.1 部署流程定义+启动流程实例 ProcessEngine processEngine = ProcessEngines.ge ...

  8. vue2.0父子组件以及非父子组件通信

    官网API: https://cn.vuejs.org/v2/guide/components.html#Prop 一.父子组件通信 1.父组件传递数据给子组件,使用props属性来实现 传递普通字符 ...

  9. Sass和gulp的简单了解

        一.sass  less    css预处理器        sass里面有2种语法  第一种语法是sass  后缀名必须是sass   第二种语法是scss  后缀名必须是scss      ...

  10. css中让元素隐藏的多种方法

    { display: none; /* 不占据空间,无法点击 / } { visibility: hidden; / 占据空间,无法点击 / } { position: absolute; top: ...