pwnable

    [Pwnable] Poet

    오늘은 poet 문제를 풀어볼라 한다. poet 문제는 200점대 문제치고는 그리 어렵지 않았다. 그냥 코드 분석만 잘하면 풀만한 문제였다. NX bit만 enable 되어 있으며 Partial RELRO가 걸려있다. 실행을 시키면 입력을 받으면 1000000점을 채우라며 다시 시도하라 그런다. 하나하나 살펴보자 우선 get_poem(), get_author(), rate_poem()을 순서대로 실행시키며 dword_6024E0이 1000000이 된다면 while문을 탈출함과 동시에 reward()로 들어간다. dword_6024E0이 아까 실행시켰을떄 score을 의미하는것 같다. get_poem부터 살펴보자 result에 poem에 입력받은 값을 대입한다. poem은 bss 영역에 위치해있다. 그리고..

    [Pwnable] fd

    오늘은 처음으로 pwnable.kr 문제를 풀어볼라 한다. 리눅스의 file descriptor와 관련된 문제인거 같다. 제시되어 있는 주소로 들어가보자 flag 파일이 있지만 당연하게도 읽히진 않는다. c 파일을 열어보자 #include #include #include char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc

    [Pwnable] g++ pwn

    오늘은 g++ pwn 문제에 대해서 정리를 해보려한다. 32bit ELF파일이며 다이나믹 링킹되어 있다. NX만 enabled 되어 있으므로 쉘 코드 사용은 힘들어 보인다. 바로 아이다로 열어보자. 메인 함수에는 별게 없으니 넘기자 HackCTF에서는 처음 C++ 바이너리를 보는거 같다. 하나하나 분석을 해보자 우선 fgets로 입력을 받을 때 length check를 해주니 BOF는 힘들거 같다. 코드를 유심히 보면 replace 함수가 있다. 맞다. "I"라는 문자를 입력하게 되면 "you"라는 문자열로 변환을 해준다. 그럼 우리는 strcpy 함수를 이용해서 BOF를 터트릴 수 있다. 익스를 구상해보자면 1. "I"를 이용해서 buffer 0x3C만큼 채우기 2. Dummy 값으로 SFP 채우기 3..