System hacking training
-
sub write upSystem hacking training/pwnable.xyz 2019. 12. 31. 13:31
Welcome보다 쉽게 풀었다. 거두절미하고 디컴파일해보면 답이 나온다. main()함수를 디컴파일 해본 결과인데, v5와 v6에 사용자에 대해 입력을 받고, 두 수가 4918보다 작거나 같으면서 두 수의 차가 4919일 때 flag를 출력해준다. 따라서 위 두 조건을 만족시키며 flag를 출력할 수 있는데, v5에는 0, v6에는 -4919를 입력하면 뚝-딱 풀린다. ⚡ root@ubuntu /mnt/hgfs/vm_shared/pwnable.xyz nc svc.pwnable.xyz 30001 1337 input: 0 -4919 FLAG{--------------------} 의문이 들었던 부분은 scanf()함수를 호출할 때 format string으로 %u(unsigned int)를 지정했는데..
-
Welcome write upSystem hacking training/pwnable.xyz 2019. 12. 22. 19:11
pwnable.xyz의 첫번째 문제다. 64bit 바이너리이며 dynamically linked되어있고, stripped되어있다. 모든 메모리 보호기법이 적용되어있는 녀석이다. IDA로 main()함수를 디컴파일 해보면 다음과 같은 결과가 나오는데, 결론적으로 system("cat /flag")가 수행되기 위해서 v3이 가리키는 값이 0이여야만 한다. 코드상에서 v3에 대한 사용자의 input이 없기 때문에 불가능해 보인다. 하지만 v10과 malloc() 함수의 특성 덕분에 *v3에 0을 넣을 수 있는데, 바이너리는 다음과 같이 동작한다. 1. v3 = malloc(0x40000uLL) 2. leak v3 address 3. User input v10 4. v5 = malloc(v10) 5. read(..
-
orw write upSystem hacking training/pwnable.tw 2019. 12. 10. 20:35
pwnable.tw 두번째 문제 orw다. 문제에서 힌트를 얻을 수 있었는데, 문제의 이름이 ORW(=Open Read Write)인 점과, flag의 절대 경로를 알려주는 점에서 open(), read(), write()함수를 이용하여 flag를 직접 읽어야하는 문제이구나~ 라고 생각했다. 메모리 보호기법을 확인해보면 다음과 같이 Partial RELRO, Canary가 걸려있다. 바이너리를 디컴파일하여 main()함수를 확인해보면 orw_seccomp() -> printf() -> read()를 진행한 후, read()함수를 통해 shellcode라는 위치에 0xc8(=200)byte입력받고, call을 해줌으로서 바이너리가 종료된다. 따라서 쉘코드를 입력만 해주면 알아서 call해주는 형식인데, 중..
-
Start write upSystem hacking training/pwnable.tw 2019. 12. 8. 20:47
[풀이 요약] - 메모리 보호기법 적용 X / syscall 을 이용한 read(), write() 호출 - read() 함수를 이용하여 0x3c를 입력 받는데, 에필로그를 보면 add esp, 0x14; ret;로 return address를 변조할 수 있다는 것을 알 수 있음 Step 1. Stack Address Leak 1. 쉘코드를 이용한 공격을 진행하는데, return address 바로 다음 값이 스택을 가리켜서 return address를 해당 코드 주소로 변조 2. sys_write() 함수 호출 전 mov ecx, esp를 통해 해당 시점 esp를 출력 -> 이게 스택의 주소를 가지고 있어서 아주 nice하게 스택의 주소를 leak할 수 있음 Step 2. Shellcode Execut..
-
[Linux Memory Protection] - RELROSystem hacking training/Knowledge 2019. 5. 20. 20:22
Ref : https://bpsecblog.wordpress.com/2016/05/18/memory_protect_linux_2/ 오늘은 RELRO에 대해 알아봅시다. RELRO란? -> Relocation Read-Only의 약자로, ELF바이너리 또는 프로세스의 데이터 섹션을 보호하는 기술입니다. 즉 메모리가 변경되는 것을 보호하는 기술입니다. 이를 이해하기 위해서는 다음과 같은 개념을 알고 있어야합니다. - Lazy Binding - GOT Overwrite 먼저 Lazy Binding이란? -> Dynamic Linking 방식으로 컴파일 된 ELF 바이너리는 공유 라이브러리 내에 위치한 함수의 주소를 동적으로 알아오기 위해 GOT(Global Offset Table) 테이블을 이용하는데, 이렇게..
-
[Linux Memory Protection] - Stack CanarySystem hacking training/Knowledge 2019. 5. 17. 10:46
복습겸 리눅스 환경의 메리 보호 기법에 대해 알아봅시다. Ref : https://bpsecblog.wordpress.com/2016/05/16/memory_protect_linux_1/ linux 환경에서의 메모리 보호기법을 알아보자(1) 지금부터 Linux 환경에서의 메모리 보호 기법에 대해 알아봅시다! 이번 편에서는 ASLR, NX, ASCII-Armor, Stack canary에 대해 알아보겠습니다. 위키를 통해 “메모리 보호”라는 말의 정의를 알아보고 넘어갑시다. 실습 환경: CentOS 6.7 (32bit) ASLR : Address Space Layout Randomizati… bpsecblog.wordpress.com 이 글을 토대로 공부한 내용을 포스팅하겠습니다. ASLR DEP(NX) ..
-
[Linux Memory Protection] - ASCII-ArmorSystem hacking training/Knowledge 2019. 5. 15. 16:02
복습겸 리눅스 환경의 메모리 보호 기법에 대해 알아봅시다. Ref : https://bpsecblog.wordpress.com/2016/05/16/memory_protect_linux_1/ linux 환경에서의 메모리 보호기법을 알아보자(1) 지금부터 Linux 환경에서의 메모리 보호 기법에 대해 알아봅시다! 이번 편에서는 ASLR, NX, ASCII-Armor, Stack canary에 대해 알아보겠습니다. 위키를 통해 “메모리 보호”라는 말의 정의를 알아보고 넘어갑시다. 실습 환경: CentOS 6.7 (32bit) ASLR : Address Space Layout Randomizati… bpsecblog.wordpress.com 이 글을 토대로 공부한 내용을 포스팅하겠습니다. ASLR DEP(NX)..
-
[Linux Memory Protection] - DEPSystem hacking training/Knowledge 2019. 5. 14. 12:38
복습겸 리눅스 환경의 메모리 보호 기법에 대해 알아봅시다. Ref : https://bpsecblog.wordpress.com/2016/05/16/memory_protect_linux_1/ linux 환경에서의 메모리 보호기법을 알아보자(1) 지금부터 Linux 환경에서의 메모리 보호 기법에 대해 알아봅시다! 이번 편에서는 ASLR, NX, ASCII-Armor, Stack canary에 대해 알아보겠습니다. 위키를 통해 “메모리 보호”라는 말의 정의를 알아보고 넘어갑시다. 실습 환경: CentOS 6.7 (32bit) ASLR : Address Space Layout Randomizati… bpsecblog.wordpress.com 이 글을 토대로 공부한 내용을 포스팅하겠습니다. ASLR DEP(NX)