Tags: nosqli web 

Rating: 1.0

# ▼▼▼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.1
Host: logsearch.pwn.seccon.jp
Content-Type: application/x-www-form-urlencoded

query=flag
```

```
timestamp verb request response
09/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`を検索してみる。


```
1.検索0件
%20( )、%23(#)、%24($)、%25(%)、%26(&)、%27(')、%2c(,)、%2e(.)、
%3b(;)、%3c(<)、%3d(=)、%3e(>)、%40(@)、%5f(_)、%60(`)、%7c(|)

2.エラー

Something wrong... X(


%21(!)、%22(")、%28(()、%29())、%2b(+)、%2d(-)、%2f(/)、%3a(:)、
%5b([)、%5c(\)、%5d(])、%5e(^)、%7b({)、%7d(})、%7e(~)
```

おそらく検索で使える記号と思われる。google検索のように絞り込めるのではと考えた。

-----

リアルタイムにログ内容が表示されていたためか`/logsearch.php`が多く検索されたので、`-logsearch.php`で絞り込めるか試してみた。


```
POST /logsearch.php HTTP/1.1
Host: logsearch.pwn.seccon.jp
Content-Length: 25
Cache-Control: max-age=0
Origin: http://logsearch.pwn.seccon.jp
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://logsearch.pwn.seccon.jp/logsearch.php
Accept-Encoding: gzip, deflate
Accept-Language: ja,en-US;q=0.9,en;q=0.8
Connection: close

query=flag+-logsearch.php
```

```
timestamp verb request response
09/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のコマンドで絞り込むことできるらしい。