Skip to main content
  1. Writeups/

Slepá mapa - Autorské řešení úlohy

·142 words·1 min
jagotu
Challenge author
JaGoTu
jagotu
Writeup author
JaGoTu
Table of Contents

Solution #

Úkolem je systematicky (ať už ručně nebo automaticky) najít vyhovující třídu z PHP. Například je možné stáhnou z https://www.php.net/download-docs.php celou dokumentaci v jednom HTML file a následně najít všechny konstruktory které mají mezi závorkami int a string:

cat php-bigxhtml.html  | grep -F 'class="methodname">__construct' | sed 's/<[^>]*>//g' | grep '(.*int.*string.*)'

To vrátí 20 řádků, což je realistické ručně projít na false positives. Zbydou tři skutečné možnosti:

public __construct(int $flags = FILEINFO_NONE, ?string $magic_database = null)
public __construct(int $size, string $class = ?, array $ctor = ?)
final public __construct(    int $id,    string $text,    int $line = -1,    int $pos = -1)

Hned první je náš hledaný konstruktor příslušný třídě finfo. Stačí tedy přistoupit na /?a=finfo&b=/flag.txt a získat z chybové hlášky flagu.

(Další dva kandidáti jsou třída Pool, kterou se mi ani nepodařilo instancovat, a PhpToken, která se prostě vyrobí a nice nedělá).