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. iOS 力学动画生成器UIKit Dynamics 之碰撞效果讲解

    UIKit Dynamic是iOS7 新增的一组类和方法,可赋予UIView逼真的行为和特征,不需要写动画效果那些繁琐的代码,让开发人员能够轻松地改善应用的用户体验.一共有6个可用于定制UIDynam ...

  2. Unity3D Shader性能排行

    整体上,性能由高到低: Unlit,仅为纹理,光线不产生效果 VertexLit Diffuse 漫反射 Normal Mapped 法线贴图 Specular 高光 Normal Mapped Sp ...

  3. 画报表框架——Echarts.js

    官网:http://echarts.baidu.com/index.html ————————————————————————————————— 先看看我做的第一个柱状图形报表 ——————————— ...

  4. C基础的练习集及测试答案(40-50)

    40.(课堂)打印杨辉三角型前10行 #if 0 40.(课堂)打印杨辉三角型前10行 思路分析: 一.打印十行杨辉三角得第十行长度为十,所以建立一个长度为十的数组,作为每行的数据存储 二.按 0-9 ...

  5. mongodb索引 全文索引之相似度查询

    我们在百度搜索中,可以看到与自己搜索度内容越相关度,排在越前面,这个需求可以在mongodb中很简单度实现,mongodb的全文索引不仅可以返回相匹配的查询结果,而且可以告诉你查询结果与你的查询条件多 ...

  6. 问题001:Java软件,属于系统软件还是应用软件呢?

    在学习Java前要掌握的一些小问题: 问题一:Java软件,属于系统软件还是应用软件呢? java语言应用在计算机系统上,首先应知道计算机系统分为几部分? 计算机系统由硬件系统和软件系统两部分构成.硬 ...

  7. Docker学习笔记--2 镜像的创建

    如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等应用服务环境,有下面三种方法: 1,根据系统镜像创建Docker容器,这时容器就相当于是一个虚拟机,进入容 ...

  8. 三、Shell 传递参数

    Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 实例 以 ...

  9. Linux系统kernel参数优化

    目录 iptables相关 单进程最大打开文件数限制 内核TCP参数方面 内核其他TCP参数说明 众所周知在默认参数情况下Linux对高并发支持并不好,主要受限于单进程最大打开文件数限制.内核TCP参 ...

  10. oracle一些常用的数据类型

    字符数据类型 char数据类型 当需要固定长度时,使用char数据类型,此数据类型长度可以使1-2000字节.若是不指定大小默认占1字节,如果长度有空余时会以空格进行填充,如果大于设定长度 数据库则会 ...