无字母数字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为

`?><?=`. +/???/????????[@-[]`;?>`

get传参需要url编码
第一个?>为闭合,+为空格编码
通过eval()执行反引号从而执行系统命令
在burpsuite中可以不转码
在这里插入图片描述

注意:这里的POST与GET参数是并行的
想要查看临时文件是否生成,可以用sleep()函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值