이번에는 dark_eyes를 풀어볼거다. 먼저 hell_fire 소스를 보자 여기서 포트는 7777이라는 것과 hint를 볼 수 있는데 hint에 적힌 것보다 훨씬 쉬운 방법이 있으므로 우리는 이 방법으로 풀자우선 system함수의 메모리 주소를 통해 system함수의 명령을 보면 do_system라는 함수를 호출하는 것을 알 수 있다. 그 뒤 do_system 함수의 내부의 명령어들을 보다보면 execve 함수를 실행시키는 부분이 있는데 이 함수를 실행하게끔 하는 주소를 RET에 적으면 /bin/sh를 실행시키는 것과 똑같은 작용이 일어난다. 고로 우리가 RET에 덮어씌울 메모리 주소는 0x750784가 된다. gdb로 hell_fire을 열어서 우리가 얼마나 덮어씌우면 SFP가 나오는지 확인한다. 우..
이번에는 iron_golem을 풀어볼것입니다. 먼저 dark_eyes 프로그램의 소스를 보져 hint를 보면 RET sleding이라고 합니다. RET sleding이란 리턴주소에 RET명령어가 계속 실행하게 해서 ebp의 값을 우리가 원하는 값으로 변조한뒤에 우리가 원하는 함수가 실행되게 하는겁니다. RET sleding 기법으로 ebp 변조를 하게되는 과정은 1. 원래 함수의 leave, RET 실행 (pop 2번 -> esp 4 * 2만큼 상승)2. RET 부분에 RET명령어를 원하는 갯수만큼 씀 3. RET명령은 pop eip, jmp eip로 구성되어있으므로 esp는 RET를 실행할 때마다 4씩 상승4. 우리가 원하는 함수 실행 5. 함수 진입과정에서 push ebp, mov ebp, esp가 ..
이제부터 본격적으로 LOB FC3 풀이에 대해 할것입니다. 먼저 level1의 아이디와 비번은 모두 gate로 동일합니다! 먼저 iron_golem의 소스를 보져 여기서 strcpy 이 부분에서 BOF가 발생하고, 힌트를 보니 fake ebp라 되어있군요 fake ebp는 말 그대로 ebp를 우리가 원하는 값으로 변조 한뒤에 공격을 하는 것입니다. 우리는 여기서 RET에 execl함수 주소를 넣고 execl의 첫번째 인자의 주소 - 8을 한 주소로 ebp를 변조할 것입니다.먼저 ASLR의 적용을 안받는 GOT부분을 보져 주소가 0x8049618인것을 알 수 있습니다. 다음에는 iron_golem 프로그램을 복사한 뒤 그 프로그램을 gdb로 열어보고 저 주소의 값들을 봅시다. 0x0804954c 의 값이 ..
오늘은 LOB FC3에 대해 풀이하기 전에 FC3에 사용된 보호기법에 대해 알아볼 것입니다. 먼저 사용된 풀이 기법은 ASLR, StackDummy, ASCII armor NX가 있습니다. 1. ASLR은 address space layout randomization의 약자로 말 그대로 프로그램을 실행할 때 마다 메모리의 주소가 바뀐다. 2. Stack Dummy는 말그대로 스택의 값들 사이에 Dummy(쓰레기 값)가 있다. 예를 들면 256바이트 크기의 변수를 선언하는데 300바이트만큼 ebp에서 빼주는 것이다. 3. ASCII armor는 공유라이브러리의 메모리 주소가 0x00으로 시작하게 된다. BOF는 주로 문자열 복사 함수에서 나는데 이 ASCII armor로 인해 0x00 널이 넣어지게 되면 ..