shellcode4 셸코드 작성 셸코드(Shellcode)는 익스플로잇을 위해 제작된 어셈블리 코드 조각을 일컫는다. 셸을 획득하는 것은 시스템 해킹의 관점에서 매우 중요하다. 만약 해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 해커가 원하는 어셈블리 코드가 실행되게 할 수 있다. 어셈블리어는 기계어와 거의 일대일 대응되므로 사실상 원하는 모든 명령을 CPU에 내릴 수 있게 된다. 우선, 파일 읽고 쓰기(open-read-write) 셸코드를 작성하고 셸 획득(execve)의 셸코드를 작성해보자. orw 셸코드 파일을 열고, 읽은 뒤 화면에 출력해주는 셸코드를 작성해보자. orw.c #include #include int main() { char buf[0x30]; int fd = open("/tmp/flag", O_RDONL.. 2021. 12. 11. No sc 1. Mitigation GOT overwrite가 불가능하고 실행권한이 없으며 PIE enabled이다. 2. 문제 확인 입력을 받고 프로그램을 종료 시킨다. 3. 풀이 메인 영역을 보면 mmap함수가 메모리를 주어진 바이트만큼 매핑하도록 커널에 요청을 한다. 3번째 인자에 7이 들어가있는데 이건 rwx권한이 있다는 것 이다. mmap을 v3로 지정하고 v4 = v3에 넣고 v3 입력을 받고 v4를 불러온다. 여기에 쉘코드를 입력하면 v4를 불러올때 쉘 코드가 실행 될 것 이다. 4. Exploit from pwn import * context.arch = 'amd64' p = process('./chall') e = ELF('./chall') shellcode = "\x48\x31\xff\x48\x3.. 2021. 5. 1. basic_exploitation_000 보호되어 있는 글 입니다. 2021. 4. 4. validator 보호되어 있는 글 입니다. 2021. 3. 21. 이전 1 다음