pwn

    [Pwnable] Register

    이번에는 register 문제이다. 이건 풀면서 되게 재밌었던 기억이 난다. canary, NX, partial Relro main은 심플하다. 바로 build로 넘어가보자 build에서는 SIGALRM이 발생하면 handler라는 놈으로 처리한다. handler 내부를 뒤적거리다가 exec_syscall_obj가 보이는데 result에는 obj의 주소값이 넘어간다. 그리고 syscall을 해준다. 그리고 get_obj 함수이다. get_obj에는 문제 제목처럼 register 값을 입력하는거 같다. 그리고 validate_syscall_obj 함수인데 v0[0] = rax를 체크하는 루틴같다 그러면 대충 전체적인 로직을 파악했을때 어떻게 익스를 할 수 있을까 간단하다 exec_syscall_obj에서 ..

    [Pwnable] RTC

    진짜 오랜만에 롸업이다 사실 문제는 푼 지는 되게 오래됬지만 최근들어 대학은 가야되는데 해킹 공부를 하고 있는게 맞는건가 싶기도 하고 그냥 요즘 들어 마음이 복잡하기도 해서 여태까지 문제는 많이 풀었는데 롸업은 올리지 않았다 뭐 사실 최근에 힙 다 까먹어서 다시 정리하고 있기는 한데ㅋㅋ; 그냥 오늘은 새벽에 생각 정리도 할려고 롸업을 써보려고 한다 아마도 롸업 여러개가 올라갈거 같긴 한데 어짜피 어려운 문제는 아니니까 후딱 써보도록 하자 잡담이 길어졌는데 진짜 시작~ - Mitigation - 0x200만큼 받아서 bof 발생 -> rop 가능 사용 가능한 함수에 puts가 없어서 rdi 가젯만으로는 libc leak 불가능 그러면 read, write로 libc leak을 해야되는데 gadget도 없음..

    [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 영역에 위치해있다. 그리고..