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…同じようにしているはずなのに上手くいかない…