Slepá mapa - Autorské řešení úlohy
·142 slov·1 min
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á).