System hacking training/pwnable.tw
-
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..