ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

19.05.2009, 23:06
|
|
Новичок
Регистрация: 09.01.2009
Сообщений: 3
Провел на форуме: 5295
Репутация:
0
|
|
Linux
Добрый вечер, Уважаемые. Пишу диплом по информационной безопасности. Встал в ступор:
пишу маленький код:
Код:
#include <sys/types.h>
#include <unistd.h>
int main()
{
setuid(666);
return 0;
}
Далее все это дело компилю:
Код:
gcc myprog.c -o myprog -g --static
тут я подключаю опцию отладки и функции, находящиеся в разделяемых библиотеках (хотя по поводу --static я не уверен, надо ли).
Так дальше:
Код:
gdb -q ./myprog
(gdb)disassemble main
и ищю строку вызова setuid
Далее дизассемблю setuid и ищю вызов ядра (прерывание $0x80)
Дальше я слегка запутался
Знаю, что в регистр %eax заносится номер системного вызова. Посмотрел в /usr/include/asm/unistd.h и нашел setuid, он равен 23. Аргумент 666 полетит в регистр, скажем %ebx. Какой уникальный номер у setuid я не знаю, для EXIT знаю 0x1.
Вообщем прошу помощи, нужно найти в отладчике gdb, как происходит вызов setuid и далее это дело перевести в шестнадцатиричное представление.
Перевести сам смогу, помогите найти кусок кода в gdb, где происходит вызов setuid.
Заранее благодарен всем!!!!
|
|
|

20.05.2009, 01:41
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Если я правильно понял суть вопроса, то тебе надо код на асме вызова setuid() ?
Ну вот держи:
Код:
movl $23, %eax # $23 - setuid system call number
movl $666, %ebx # $666 - rights
int $0x80 # call setuid()
Кстате на 64х битной архитектуре номера системных вызовов отличные от 32х битной. Например на 32х setuid = 23, а на 64х setuid = 105
Последний раз редактировалось razb; 20.05.2009 в 01:54..
|
|
|

20.05.2009, 02:12
|
|
Новичок
Регистрация: 09.01.2009
Сообщений: 3
Провел на форуме: 5295
Репутация:
0
|
|
Спасибо, razb. Уже сам разобрался, пока ответы ждал. Но все равно спасибо.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|