일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- DreamHack
- heap
- Dynamic Analysis
- heap exploit
- K-shield Junior
- ROP
- DFB
- heap feng shui
- UAF
- srop
- _IO_FILE Arbitrary Address Write
- seccomp
- Reversing
- _IO_FILE Arbitrary Address Read
- vtable
- _IO_FILE
- Android
- tcache
- RTL
- Lazenca
- 나뭇잎 책
- master canary
- HackCTF
- DFC 2022
- GOT overwrite
- shellcode
- __environ
- BOF
- malware
- H4CKING GAME
- Today
- Total
목록shellcode (5)
Studying Security

1. assembly로 shellcode 작성 (asm 파일) 2. Compile 3. 기계어로 된 shellcode 추출 (using objdump) for i in $(objdump -d ./shellcode | grep "^ "|cut -f2);do echo -n \\x$i;done

Mitigation Main function Vulnerability Analysis seccomp-tools로 해당 바이너리 파일을 살펴보면 rt_sigreturn, sigreturn, exit_group, exit, open, read, write에 대해서 허용을 해놓을 것을 확인할 수 있습니다. main함수를 살펴보면 0x804a060에 0xc8 size의 데이터를 입력 받고 0x804a060을 호출하고 있습니다. 목표는 /home/orw/flag의 값을 획득하는 것이기 때문에 0x804a060에 flag를 획득할 수 있는 shellcode를 작성하면 됩니다. shellcode는 아래와 같은 동작을 수행하도록 작성하면 됩니다. fd = open("/home/orw/flag") read(fd, buf..

Mitigation Vulnerability Analysis 바이너리 파일 실행 Data : 입력 값 어떤 값: 입력 값을 한 자씩 공백을 두고 출력 Again(y/n): y 입력 시 다시 1번과정으로 n 입력 시 프로그램 종료 2번 과정에서 보이는 어떤 값에 대해서 알아보면 1번 과정에서 입력 받았던 [ebp-0x88] 공간이 2번 과정에서 주소 값으로 주어짐 [rbp-0x88]영역의 주소 값을 확인 가능하다 또한 처음 scanf함수를 통해 입력을 받는 공간 역시 [rbp-0x88]이다 알 수 있는 사실을 정리해 보면 다음과 같다 [rbp-0x88]이 되는 이 곳의 주소를 알 수 있다 [rbp-0x88]이 되는 이 곳에 입력 값을 줄 수 있다 또한 scanf함수의 경우 입력 값에 제한을 두지 않기 때문..

Mitigation Vulnerability Analysis 바이너리 파일 실행 삐빅- 자살방지 문제입니다. buf: 어떤 값 입력을 받고 종료 위와 같은 순서로 진행 됨 buf 옆에 어떤 값이 무엇인지 gdb를 통해 main함수를 살펴보면 [rbp-0x6d30]영역의 주소 값임을 확인 가능하다 또한 아래 gets함수를 통해 입력을 받는 공간 역시 [rbp-0x6d30]이다 알 수 있는 사실을 정리해 보면 다음과 같다 [rbp-0x6d30]이 되는 이 곳의 주소를 알 수 있다 [rbp-0x6d30]이 되는 이 곳에 입력 값을 줄 수 있다 또한 gets함수의 경우 입력 값에 제한을 두지 않기 때문에 canary가 없는 이 바이너리 파일의 ret영역을 overwrite 가능 위의 사실을 토대로 NX disa..

Mitigation Vulnerability Analysis No stack canary → gets 함수의 경우 입력 받는 size를 제한하지 않기 때문에 ret영역을 overwrite해 흐름을 바꿀 수 있음 NX disabled → 쓰기 권한과 실행 권한을 동시에 부여하지 않기 때문에 shellcode를 입력하고 이를 실행하도록 할 수 있음 따라서 read함수에서 0x804a060에 0x32 size보다 작은 크기의 shellcode를 전달 gets 함수를 이용해 ret 영역의 주소를 0x804a060을 전달하면 shellcode가 실행되어 shell을 따올 수 있음 Exploit code Result 부족한 점 작성된 shellcode를 이용 직접 shellcode를 작성해보고 보관해 놓아야 겠다