일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- K-shield Junior
- GOT overwrite
- Lazenca
- DFB
- UAF
- srop
- master canary
- H4CKING GAME
- _IO_FILE
- Android
- ROP
- Reversing
- heap
- HackCTF
- heap feng shui
- _IO_FILE Arbitrary Address Write
- heap exploit
- DFC 2022
- BOF
- vtable
- malware
- shellcode
- RTL
- Dynamic Analysis
- DreamHack
- 나뭇잎 책
- __environ
- tcache
- _IO_FILE Arbitrary Address Read
- seccomp
- Today
- Total
목록Wargame (59)
Studying Security

Mitigation Vulnerability Analysis IDA disassembler를 가지고 main함수를 살펴보자 src([rbp-0x80])에 입력을 받고 src[0x31]까지는 0x1c와 xor를 수행 strncpy( &dest, src, 0x39) 1~3과정을 한번 더 수행할 것인지 아닌지 Yes/No 입력을 통해 결정 Exploit 과정 Canary Leak Libc Leak Exploit 1. Canary Leak canary가 존재하기 때문에 해당 canary 값을 변조하지 않고 BOF를 수행해야 한다. stack을 대충 그려보면 위와 같은데 canary 값의 첫 1byte는 \x00이므로 만약 dest의 부분을 0x39 size만큼 출력 가능한 값으로 채워진다면 printf("Enc..

Mitigation Vulnerability Analysis file 명령어로 바이너리 파일 보면 stripped가 되어있는 것을 확인할 수 있는데 이는 실행에 필요한 부분을 제외한 부분을 제거함으로써 실행파일의 크기를 줄이는 것이라고 한다. 그래서 debugging을 하기위해 gdb로 열어 보았을 때 main함수의 symbol이 존재하지 않아 해당 주소를 찾아봄 read 함수를 가지고 BOF가 가능하도록 되어 있다. 하지만 쓰기함수를 통해 leak가 불가능하다. syscall instruction을 이용해 exploit해보자 gadget을 살펴보면 pop rax; pop rdx; pop rdi; pop rsi; ret gadget으로 pop rax --> system call pop rdx; pop r..
보호되어 있는 글입니다.
보호되어 있는 글입니다.

Mitigation Vulnerability Analysis fgets를 이용해 BOF를 발생시킬 수 있다. 단 0x40 size의 입력을 받기 때문에 payload 작성시 size를 염두에 둬야 한다. Unexploitable_2 바이너리 파일에선 gift함수를 통해 system함수를 제공하고 있다. 1. system 함수 이용 system 함수의 인자로 명령을 전달할 때 잘못된 명령을 전달하면 해당 명령어를 출력해준다. 이를 이용해 어떤 함수의 got를 전달하면 해당함수의 주소를 출력하게 된다. 이 방식으로 system함수의 인자로 system_got를 전달하면 system함수 주소를 leak할 수 있다. 하위 12bit가 390임을 이용하여 서버가 어떤 libc파일을 사용하는지 libc_databa..

Mitigation Vulnerability Analysis IDA disassembler로 main함수를 살펴보자 time(NULL)을 seed를 주고 random한 값을 생성하고 있다. Input Key를 입력하고 이 값이 생성한 random 값과 일치하면 flag를 보여주는 그런 파일인데 random한 값을 어떻게 맞출 수 있을까...? 로컬과 해당 서버가 같은 seed 값을 가지고 random한 값을 생성한다면 같은 random 값을 얻을 수 있을 것이다. 이를 해결하기 위해 ";"라는 다중 명령어를 사용하면 된다 난수 생성 프로그램 ; nc ctf.j0n9hyun.xyz 3014 난수 생성프로그램과 서버 접속을 동시에 하도록해서 생성된 random 값을 적어주면 원하는 flag를 얻을 수 있을 ..

Mitigation Vulnerability Analysis gdb로 main함수를 보면 "Hey, ROP! What's Up?"을 출력하고 read함수가 실행된다 [rbp-0x40]에 0x200 size를 받을 수 있기 때문에 BOF 공격이 가능하다는 사실을 알 수 있다. RTC 문제이니 만큼 Return to csu 기법을 통해 exploit해보도록 하자 __libc_csu_init의 일부 코드를 gadget으로 사용하는 기법으로 64bit의 경우 rdi, rsi, rdx ...의 순으로 인자를 전달하는데 이때 해당 gadget이 존재하지 않을 경우 이를 이용한다. RTC payload write(1, write_got, 8) → write_address 획득 library_base_address =..

Mitigation Vulnerability Analysis IDA disassembler를 이용해 main함수를 보자 심지어 gift라는 함수로 system@plt까지 주어졌다 이제 필요한건 "/bin/sh"이라는 문자열인데 이를 어떻게 얻을 수 있을까? 여기서 활용할 수 있는게 .dynstr 영역이다 동적 linking을 위한 함수의 이름 정보들이 들어있는 공간이다. IDA에서 해당 영역을 찾아보니 위와 같은 함수 이름들이 존재하는 것을 확인할 수 있다. 여기서 보면 'fflush'라는 문자열이 보이는데 fflush에서 뒤의 두글자 sh부분만을 이용하여 sh문자열을 획득할 수 있다 결론적으로 sh이라는 문자열은 0x4003bf에 위치하므로 exploit할 수 있는 모든 값들을 획득! 이를 토대로 ex..