无字母数字webshell之命令执行

源码

题目限制:

  1. webshell长度不超过35位
  2. 除了不包含字母数字,还不能包含$_

这里使用php5来解决

可以围绕以下两点展开:

  1. shell下可以利用.来执行任意脚本
  2. Linux文件名支持用glob通配符代替

.或者叫period,它的作用和source一样,就是用当前的shell执行一个文件中的命令。比如,当前运行的shell是bash,则. file的意思就是用bash执行file文件中的命令

并且用. file执行文件,是不需要file有x权限的

我们可以发送一个上传文件的POST包,此时PHP会将我们上传的文件保存在临时文件夹下,默认的文件名是/tmp/phpXXXXXX

由于执行该命令也需要用到字母,那此时可以用到glob通配符

1.*可以代替0个及以上任意字符

2.?可以代表1个任意字符

这是由于能够匹配上/???/?????????这个通配符的文件有很多,如果先匹配到别的文件则会出现错误,导致整个流程停止,根本不会执行到我们上传的文件。

通过ASCII码表可得知,大写字母位于@[之间

先创建一个文件(文件名要对上),测试

构造POC,执行任意命令

php生成临时文件名是随机的,最后一个字符不一定是大写字母

复现漏洞还需要用于存放shell命令的文件以及用于提交表单的html

这里把提交的表单数据复制过来

需要将request中的get改为post,因为get提交没有临时文件。这里post作为请求体,而code作为get传参,执行完后才会删除临时文件

code为

php 复制代码
`?><?=`. +/???/????????[@-[]`;?>`

get传参需要url编码

第一个?>为闭合,+为空格编码

通过eval()执行反引号从而执行系统命令

在burpsuite中可以不转码

注意:这里的POST与GET参数是并行的

想要查看临时文件是否生成,可以用sleep()函数

相关推荐
SPC的存折4 小时前
Cisco Packet Tracer 8.0 上的 VLAN 综合实验报告
运维·网络
yuezhilangniao4 小时前
告别网络排障恐惧症-告别UI版wireshark:用 curl + tcpdump + tshark + ss 构建完整工具链 - 含TCPIP老鸟常识
网络·wireshark·tcpip
你觉得脆皮鸡好吃吗4 小时前
SQL注入 手工注入
网络·数据库·sql·安全·web安全·网络安全学习
盟接之桥4 小时前
盟接之桥®制造业EDI软件:专注制造,为制造业服务,让全球供应链协同更有底气
网络·安全·低代码·汽车·制造
eam0511234 小时前
简单园区网
网络
介一安全5 小时前
JADX与AI结合的实操指南:从工具配置到APK分析
人工智能·测试工具·安全性测试·jadx
Cat_Rocky5 小时前
网络技术基础一点点
运维·服务器·网络
Lyyaoo.5 小时前
【JAVA网络面经】应用层协议
java·开发语言·网络
@insist1235 小时前
网络工程师-非网络核心知识操作系统与系统开发基础
网络·网络工程师·软考·软件水平考试
郝开5 小时前
Docker Compose 本地环境搭建:独立 Compose + 共享网络 + .env 统一管理(架构设计篇)
网络·docker·容器