File Reader
karma
My friend developed this website but he says user should know some extreme manipulative language to understand this web.
Flag is in /flag.txt
http://filereader.darkarmy.xyz
※ 理解はしたけど、自力で解けてないです
調査
アップロード試行してみると、Only Pdf and docx file are allowed
と言われる。ほう。
適当にpdfを持ってきて投げると以下のように出てくる。
Uploaded File Info File Name : sample.pdf Size : 17123 Mimetype : application/pdf Number of pages : 1
ほうほう。
HTTPレスポンスを見るとX-Powered-By: Express
よくよく見てみると、connect.sid
が使われているuploadedの情報はセッションに入っているようだ。
アップロード済みなら302応答が帰ってきて、最初の画面にリダイレクトされる。
ん?いや、なんも分からんよ?
Writeup
XXE on docx
問題文にextreme manipulative language
とあるので、XXEを疑うべきであった。確かに。
Writeupを見れば、どこの何を弄ればいいかは分かったが、一応ググって思考の流れを作っておく。
pdf xxe
とかdocx xxe
とかでググってみる。
EXPLOITING XXE IN FILE UPLOAD FUNCTIONALITY
docxでXXEは有名みたい。
同スライドにはPDF XXEも載ってる。
この前提をもって、以下を見てみると、ページ数以外はリクエストから読み取れるものになっている。
ページ数をどこから持ってきているのかを考えるのは自然か。
Uploaded File Info File Name : sample.pdf Size : 17123 Mimetype : application/pdf Number of pages : 1
docxファイルの拡張子をzipに変えて、pageで全検索してみると、意外とヒットは多くない。
1つ1つ見ていくと、app.xmlに<Pages>4</Pages>
といったタグが見つかる。
ここに入れ込んでみよう。
先頭が<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE x [<!ENTITY xxe SYSTEM "file:///flag.txt" >]>
っぽくなるようにして、<Pages>&xxe;</Pages>
とする。
適当に7-zipでzipにして、拡張子をdocxにして提出。
Not available
…同じようにしているはずなのに上手くいかない…