# ▼▼▼Log search(Web:100)、344/1028team＝33.5％▼▼▼**This writeup is written by [@kazkiti_ctf](https://twitter.com/kazkiti_ctf)**
---
```Search the flag on Elasticsearch.http://logsearch.pwn.seccon.jp/ ```
-----
【機能】
URLにアクセスすると、「Find the flag!」と書かれており、Log search とリンクが張られている。
そのリンクにアクセスすると、ファイルを検索できるようだ。
-----
題名が「Find the flag!」なので、素直に「flag」を検索してみる。
↓```POST /logsearch.php HTTP/1.1Host: logsearch.pwn.seccon.jpContent-Type: application/x-www-form-urlencoded
query=flag```↓```timestamp	verb	request	response09/Dec/2017:20:23:18 +0900 GET /flag-gpoxAghss5TjcRN4dnHuXi3kZqVoaI69.txt 404 09/Dec/2017:20:23:16 +0900 POST /logsearch.php/flag/sQR0O4AD.list 200 09/Dec/2017:20:23:13 +0900 POST /logsearch.php/flag/sQR0O4AD.list 200 09/Dec/2017:20:23:11 +0900 POST /logsearch.php/flag/sQR0O4AD.list 200 09/Dec/2017:20:23:11 +0900 POST /logsearch.php/flag/sQR0O4AD.list 200 09/Dec/2017:20:23:11 +0900 GET /flag-i9fqBerHUKqcwLiEZTi9CnPW6XWkUCBG.txt 404 09/Dec/2017:20:23:08 +0900 GET /logsearch.php?/logsearch.php/?query=flag-1CUmFwSDMoqNBwATogJ8guS4VajHe74w.txt 200 09/Dec/2017:20:23:08 +0900 POST /logsearch.php/flag/sQR0O4AD.list 200 09/Dec/2017:20:23:05 +0900 POST /logsearch.php/flag-1CUmFwSDMoqNBwATogJ8guS4VajHe74w.txt 200 09/Dec/2017:20:23:05 +0900 GET /flag-DYKzTplXbFlDGlTPEwp4mftb9SVtbkBI.txt 404 09/Dec/2017:20:23:04 +0900 GET /flag/doc/vxvm/vxvm_ag.pdf/cgi-bin/YaBB.pl?board=news&action=display&num=../../../../../../../../../../etc/passwd%00/SECCON/logsearch.php/log/flag.txt 404 09/Dec/2017:20:23:03 +0900 GET /logsearch.php/flag/ 200 09/Dec/2017:20:23:02 +0900 GET /logsearch.php?page=/flag/ 200 09/Dec/2017:20:23:02 +0900 POST /logsearch.php/flag/.ssh/known_hosts.txt 200 09/Dec/2017:20:22:59 +0900 GET /logsearch.php?page=/flag 200 09/Dec/2017:20:22:58 +0900 GET /flag-YiaOS6JRxdGgS6YXNdd53RmKEirWnrSc.txt 404 09/Dec/2017:20:22:56 +0900 GET /flag-i5DOOMfrrkxXXKJX2v0Mzsqp1CEaQMlH.txt 404 09/Dec/2017:20:22:56 +0900 GET //logsearch.php?page=flag/admin/pol_log.txt/logsearch.php/SECCON/logsearch.php/log/flag.txt 200 09/Dec/2017:20:22:56 +0900 POST /logsearch.php?Request.path=flag* 200 09/Dec/2017:20:22:54 +0900 GET /flag/logsearchpwnseccon.zip 404 09/Dec/2017:20:22:54 +0900 GET /flag/logsearchpwnseccon.zip 404 09/Dec/2017:20:22:54 +0900 GET /flag/logsearchpwnseccon.zip 404 09/Dec/2017:20:22:52 +0900 GET /flag-0l8iicUjzlTOxpPVW9oUjdfwJHhtjzMX.txt 404 09/Dec/2017:20:22:51 +0900 POST /logsearch.php/flag-1CUmFwSDMoqNBwATogJ8guS4VajHe74w.txt 200 09/Dec/2017:20:22:50 +0900 GET /logsearch.php/flag/logsearchpwnseccon.zip 200 09/Dec/2017:20:22:50 +0900 GET /logsearch.php/flag/logsearchpwnseccon.zip 200 09/Dec/2017:20:22:49 +0900 POST /logsearch.php/flag/.ssh/known_hosts.txt 200 09/Dec/2017:20:22:48 +0900 POST /logsearch.php/flag/.ssh/known_hosts.txt 200 09/Dec/2017:20:22:46 +0900 POST /logsearch.php/flag/ 200 09/Dec/2017:20:22:46 +0900 POST /logsearch.php?Request.path=flag* ```↓
また、何度か送信してみると結果は、ほぼリアルタイムに最新の日付順に表示されるようだ。(再現性はなし)★
-----
phpを読み込めないかと思い`<`を検索してみるが、何も検索されない
↓
検索されない文字が存在することが分かった。
↓
検索できない文字を調べるために、`%00～%FF`を検索してみる。
↓```１．検索０件%20( )、%23(#)、%24($)、%25(%)、%26(&)、%27(')、%2c(,)、%2e(.)、%3b(;)、%3c(<)、%3d(=)、%3e(>)、%40(@)、%5f(_)、%60(`)、%7c(|)
２．エラーSomething wrong... X(%21(!)、%22(")、%28(()、%29())、%2b(+)、%2d(-)、%2f(/)、%3a(:)、%5b([)、%5c(\)、%5d(])、%5e(^)、%7b({)、%7d(})、%7e(~)```↓
Something wrong... X(
おそらく検索で使える記号と思われる。google検索のように絞り込めるのではと考えた。
-----
リアルタイムにログ内容が表示されていたためか`/logsearch.php`が多く検索されたので、`-logsearch.php`で絞り込めるか試してみた。
↓```POST /logsearch.php HTTP/1.1Host: logsearch.pwn.seccon.jpContent-Length: 25Cache-Control: max-age=0Origin: http://logsearch.pwn.seccon.jpUpgrade-Insecure-Requests: 1Content-Type: application/x-www-form-urlencodedUser-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8Referer: http://logsearch.pwn.seccon.jp/logsearch.phpAccept-Encoding: gzip, deflateAccept-Language: ja,en-US;q=0.9,en;q=0.8Connection: close
query=flag+-logsearch.php```↓```timestamp	verb	request	response09/Dec/2017:23:03:30 +0900 GET /flag-fi0zTj0MftRsft2OaIFGrqB4WLmPg5UO.txt 404 09/Dec/2017:23:03:23 +0900 GET /flag-ULrBrhRbLZfPKJ3P3JKEeOIYjsCfyn7l.txt 404 09/Dec/2017:23:03:17 +0900 GET /flag-D3wU4du7D0oFIWLWkZC14nlXktaE8puY.txt 404 09/Dec/2017:23:03:11 +0900 GET /flag-fvT0sPEnYnbOxwRfLFk1qUvUUnXZ90Mk.txt 404 09/Dec/2017:23:03:05 +0900 GET /flag-qyBJNxttsq4kwySknZGQu748QtxzByOL.txt 404 09/Dec/2017:23:02:58 +0900 GET /flag-RDMLeZCgQST7XvAB4oZYOvjTrSWuBDX6.txt 404 09/Dec/2017:23:02:52 +0900 GET /flag-1dDjTfB8cEJJ52ikQTIS1BI997o2rxpy.txt 404 09/Dec/2017:23:02:46 +0900 GET /flag-VY4tkgEsgmDt3ro44sOODv73xTSFqRVk.txt 404 09/Dec/2017:23:02:39 +0900 GET /flag-1E69cCC27VJuNrIUZbaeihFF1M7IMGUw.txt 404 09/Dec/2017:23:02:33 +0900 GET /flag-asn0Fczvp4BZUehffMH13LFdm0iyDWOg.txt 404 09/Dec/2017:23:02:27 +0900 GET /flag-t3F9EFwygukOiAlscnzAEFPqMuBCdK8K.txt 404 09/Dec/2017:23:02:20 +0900 GET /flag-qlkYMSDLOY9Xf9iFYAgRlrQcKfB9Hbu8.txt 404 09/Dec/2017:23:02:14 +0900 GET /flag-r7fDKYEr0I0aS5apspL8xh24a7AHq2uu.txt 404 09/Dec/2017:23:02:08 +0900 GET /flag-OGqdBrqdd4El0hjDQCdPlJjlEXgwjCDC.txt 404 09/Dec/2017:23:02:02 +0900 GET /flag-Jni8WdkKhosojnELyhw5EjKOm8llSefM.txt 404 09/Dec/2017:23:01:55 +0900 GET /flag-Gbx1oDGbpSD4mMDVGkK6dO6gwk44RJiS.txt 404 09/Dec/2017:23:01:49 +0900 GET /flag-FkI9KGp9s6k3WCQMx0jtNwiBd8ry3DLX.txt 404 09/Dec/2017:23:01:43 +0900 GET /flag-C7SflhDTz4IntIiKrEAPl1k0ayhbkUvC.txt 404 09/Dec/2017:23:01:36 +0900 GET /flag/ 404 09/Dec/2017:23:01:36 +0900 GET /flag-hNSNRbQTnsmPZ0XsnzSPFFpKAzQOfGFd.txt 404 09/Dec/2017:23:01:33 +0900 GET /flag 404 09/Dec/2017:23:01:30 +0900 GET /flag-COcqrbK3EZN0VjNbUmzauVTaGpeLcyiY.txt 404 09/Dec/2017:23:01:24 +0900 GET /flag-vViKMETxvfdHg6Ge726CfZT1wWdWLy41.txt 404 09/Dec/2017:23:01:17 +0900 GET /flag-BTTIqMk60cMYNnyS6Yhdpe2iEMnMslqk.txt 404 09/Dec/2017:23:01:11 +0900 GET /flag-ZvcuWVASi96jgRBLnKJNYEn38B6UfER1.txt 404 09/Dec/2017:23:01:05 +0900 GET /flag-sOaQkEVaRzSUhxvKfSNlnSybnu2mKZMR.txt 404 09/Dec/2017:23:00:59 +0900 GET /flag-G1fPFLCTKgrOaBUAMDKzaFIzJk2Gey59.txt 404 09/Dec/2017:23:00:52 +0900 GET /flag-MTiOEi20rJY1QDiGaSGdzLSCwpA3jgIu.txt 404 09/Dec/2017:23:00:46 +0900 GET /flag-zyd5BhIpMF34HrLg3ttpuQNFyQIYFMyU.txt 404 09/Dec/2017:23:00:40 +0900 GET /flag-VnT4qbx1o2heYu2agtLFMWB6VyH4cdBE.txt 404 ```↓絞り込めて、ほぼ`/flag-●●●●●.txt`のみになった。
これは参加者が送信しているとは考えづらい（参加者が邪魔をしていなければ）ので、これがflag形式と推測できるが全て404応答であった。
これが200応答のものを検索できればよいと考えた。
↓
再現性がないので何度か送信していると200応答のものが見つかった。
↓
`/flag-b5SFKDJicSJdf6R5Dvaf2Tx5r4jWzJTX.txt	200`
↓　アクセスする
http://logsearch.pwn.seccon.jp/flag-b5SFKDJicSJdf6R5Dvaf2Tx5r4jWzJTX.txt
↓
`SECCON{N0SQL_1njection_for_Elasticsearch!}`
-----
N0SQL_1njectionは使っていない...google検索っぽく使っただけ...
※正攻法は、題名がelastic search なので、Query String Queryのコマンドで絞り込むことできるらしい。