Sechack

pwnable.tw - Kidding 본문

Wargame

pwnable.tw - Kidding

Sechack 2021. 8. 26. 00:33
반응형

 

후... 거의 이틀 걸린것같다. 되게 빡세고 힘들고 재밌고 신기한 문제였다. 일단 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이하로 못줄이겠어서 그냥 서버에 소켓으로 연결한 상태에서 execve대신 read(0, esp, 0xff)불러서 esp에 입력받게 했다. 서버에서 대충 nop sled해서 쉘코드 쏴주면 따인다. /bin/sh를 처리하는 과정에서 쉘코드 바이트가 늘어났던거라서 read부르면 99byte로 딱맞았다. 결과적으로는 2단계에 걸쳐서 익스한거다. 아무튼 되게 재밌는 문제였다.

반응형

'Wargame' 카테고리의 다른 글

해킹 공부하기 좋은 Wargame총집합  (0) 2021.11.05
H4CKING GAME - mini phone 출제자 write up  (0) 2021.11.01
DreamHack - tiny backdoor 풀이  (0) 2021.07.12
webhacking.kr CHILD 풀이  (0) 2021.07.09
webhacking.kr RPG1 풀이  (0) 2021.07.08
Comments