처음으로 쉘코드를 만들어 보았다.

일단 32비트 기준으로

eax : system call 번호

ebx : 첫 번째 매개변수

ecx : 두 번째 매개변수

edx : 세 번째 매개변수


맞춰준 다음에, int 0x80으로 시스템 콜


목표는 execve(&"/bin/sh", NULL, NULL);

xor    eax,eax
push   eax
mov    ecx,esp
mov    ecx,esp
push   0x68732f2f
push   0x6e69622f
mov    ebx,esp
mov    al,0xb
int    0x80

간단 ㅋ

이걸 pwntools asm 함수를 쓰거나, 온라인 어셈블러로 opcode로 만들어준 후 콜하면 된다.

#include 

char * sc = "\xe9\x0f\x10\x00\x00\x5b\x31\xc0\x50\x89\xe2\x89\xe1\xb0\x0b\xcd\x80";

int main() {

	(*(void(*)()) sc)();

}


'pwnable' 카테고리의 다른 글

Understanding Attacking Environment Variables - Hooking LD_PRELOAD  (0) 2020.02.15
쉘코드 만들기 (asm 코딩)  (0) 2018.12.23
쉘코드 만들기 (직접)  (0) 2018.12.23
PIE base 구하기 (pwntools)  (0) 2018.09.02
쉘코드 만들기 (tool)  (0) 2018.08.25
peda에서 heap 명령어  (0) 2018.08.24
Posted by 범고래_1

댓글을 달아 주세요