오늘은 LOB 4단계인 hell_fire를 풀어볼겁니다. 우선 소스부터 보져 흠 GOT overwriting을 써야하군요 GOT에는 실제 함수의 주소들이 저장되어있는데 그것을 덮어씌어서 printf문 대신에 system(/bin/sh) 가 실행되게 만들겁니다. 자 이제 objdump를 이용해 , 를 구하고, 을 gdb를 통해 구해봅시다.그리고 사진에는 안나와있지만 objdump -d ./evil_wizard | grep printf@plt주소 요거를 해주시면 printf@got가 구해집니다. 여기 pop_pop_ret 주소를 구할 때 우리는 pop 2번 + ret만 필요하므로 의 주소를 구해야합니다. 자 이번에는 마지막에 넣을 system()의 주소와 /bin/sh의 주소를 구해봅시다. 이제 system..
이제부터 본격적으로 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 널이 넣어지게 되면 ..
해커스쿨 LOB나 FTZ를 풀 때 bash 명령어를 실행 시키는 쉘코드를 사용할 때가 많으실 겁니다. 그런데 putty라는 프로그램을 사용하시는 분들은 긴 쉘코드들을 수작업으로 입력하게 됩니다. 이런 불편함을 없애고 싶은 마음이 들어서 이 프로그램을 개발하게 되었습니다. 이 프로그램은 파이썬으로 개발이 되었며 자세한 코드 내용을 알고 싶은 분들은https://github.com/youngsouk/bash_shell - 여기를 참고해주세요! 웬만한면 xshell 쓰세요ㅠㅠㅠㅠㅠㅠㅠㅠ xshell은 마우스 우클릭으로 복붙가능!xshell알았으면 개고생안했는데ㅠㅠㅠㅠㅠㅠㅠ 사용할 때의 모습