목록CTF (52)
Sechack

바이너리를 받자마자 ida로 까봤다. gets함수 부분에서 버퍼 오버플로우가 발생한다. 정확한 offset파악을 위해 gdb로 main함수를 까보았다. rbp-0x40부터 입력받는다. 그렇다면 0x48만큼 더미를 주면 rip를 변조할 수 있다. 바로 일반적인 rop페이로드 작성했다. very easy하게 풀리는줄 알았으나 잉? 처음에는 단순히 심볼을 못읽나보다 생각하고 직접 구하려고 gdb를 다시 까봤다. 음... 뭔가 이상하다... 설마 하고 static인지 확인해봤더니... 설마가 사람잡는다. static이었다...ㅠ 그러면 전형적인 rop처럼 libc의 execve나 system함수를 호출할 수 없다. 쉘코드 삽입은 nx때문에 안될것같고 syscall을 활용해야할것같았다. 순간 머릿속에서 드림핵에서..

TRUST CTF가 진행중인지 모르고 대회 당일날 reversing.kr이나 풀고있었다. 뒤늦게 지인이 왜 TRUST CTF참가 안했냐고 물어봐서 알게되었다. ㅋㅋ 뒤늦게라도 한번 쉬운 포너블문제 풀어보았다. 순수 어셈이다. 헥스레이 쓸 필요가 없었다. 그리고 아래 /bin/sh문자열도 꽁으로 준다. 문자열을 출력하고 입력을 받고 종료하는 단순한 프로그램이다. 보통 ebp+offset꼴로 스택에 접근하던데 그냥 esp에 입력받는다. 순수 nasm이어서 그런지 평소에 보지 못했던 특이한 부분들이 좀 있었다. 뭐 어쨌든 esp에 입력받는다. gdb로 살펴보니까 esp+8이 ret이었다. (esp에 입력받고 pop을 두번 하므로 ret는 esp+8이 되게 된다.) 근데 이제부터가 문제이다. eip를 변조할 수..