목록2021/08/26 (1)
Sechack

후... 거의 이틀 걸린것같다. 되게 빡세고 힘들고 재밌고 신기한 문제였다. 일단 close로 stdin, stdout, stderr다 닫아버려서 execve("/bin/sh", 0, 0)을 해도 무용지물이다. 리버스 쉘 따야한다. 다행히 바이너리는 static이어서 가젯은 많았고 가젯 잘 조합해서 _stack_prot덮고 _dl_make_stack_executable 호출해서 스택에 rwx박은다음 리버스쉘 때려박으면 되는 문제이다. 가장 힘들었던건 100byte limit이었는데 쉘코드를 줄이고 rop chain쪽에서 chain길이 안늘어나게끔 절묘하게 레지스터 세팅도 해줘서 쉘코드 몇바이트씩 줄어들게 하고 별짓 다해도 rop chain이랑 합하면 107byte이하로 못줄이겠어서 그냥 서버에 소켓으로 ..
Wargame
2021. 8. 26. 00:33