전공쪽/HackCTF

하루에 한문제씩 write up을 정리해서 올리려고 한다. 물론 배울만한 가치가 있는 문제들만 ㅎㅎ. 이번 문제는 csu 가젯을 처음 써보는 문제이기도 해서 올려본다. hackctf에서는 50등까지만 달성하고 이제 다른 사이트를 찾아 떠나야겠다.. 아주 단순하다. ROP하라는 문제다. 그리고 gift라는 함수가 하나 있다. 여기서 있는 가젯을 빼다 쓰라는 듯? csu 가젯을 사용하면, 인자를 3개씩 밖에 줄 수 없으나 gift 함수 마지막 줄의 mov rcx, [rdi]를 이용하면 rdi에 미리 pop을 시켜서 rcx에 값을 줄 수 있으니 이를 이용하면 된다. 시나리오는pop rdi stdout -> mov rcx,[rdi] -> fwrite를 이용한 leak -> 다시 main함수로 ret -> fge..
기본적으로 stack pivot 문제이다. 서버와 로컬의 환경이 많이 다른지 서버익스가 안되는데, 홈피에서도 로컬익스만 되면 dm달라고 하는 걸 보변 문제가 꽤 있었나보다. 일단 이 문제에서 배운점 . system 함수를 호출할 때, (이전에 호출한 적이 없을 시) 공간을 겁나 많이 먹는다. 따라서 스택 피벗 할때에도 공간을 넉넉하게 엄청 넉넉하게 주도록 하자. from pwn import* read_leave_ret=0x4008be pop_rdi_ret=0x400b03 puts_got=0x601020 system=0x4006c0 get_index=0x400978 puts=0x4006b0 bss=0x6010e0+0x100 leave_ret=0x400a4a p=process('./wishlist') p=r..
OSOR2
'전공쪽/HackCTF' 카테고리의 글 목록