본문 바로가기

Games/CTF

SECUINSIDE 2013 givemeshell

슈퍼 단순한 32bit 리눅스 데몬이 주어진다.


메인함수는 아래처럼 단순하게 accept-fork 를 수행하는 데몬이다.



fd 핸들러 함수 sub_804877C 를 보면 슈퍼 간단하다.



0으로 초기화된 6바이트 스택버퍼상에 5바이트를 recv 하고

이를 system 으로 넘기고 끝.


한마디로 5바이트 이내의 linux command 만 실행하게 해주는데

문제는 inet.d 슈퍼데몬이 아니기때문에 system 의 결과를 볼수없다.


고민끝에 아래와같은 묘안을 떠올려서 단 5바이트의 system 실행으로

완전한 리모트쉘을 얻을 수 있었다.


1. "sh<&4" 로 fd 4번(network socket)으로부터 표준입력을 받는 shell 을 실행

2. "sh 0<&4 1>&4" 로 fd 4번과 stdio 를 모두 리다이렉션시킨 완전한 shell 을 다시 실행

3. 완전한 리모트쉘 획득!


리눅스 IO 리다이렉션만 알면 아주 간단하다 ㅋ








'Games > CTF' 카테고리의 다른 글

SECUINSIDE 2013 reader  (0) 2013.05.28
SECUINSIDE 2013 127.0.0.1  (2) 2013.05.28
PlaidCTF 2013 ropasaurusrex  (5) 2013.04.23
JFF2 Hunter  (0) 2013.03.19
DEFCON20 PWN100  (0) 2013.03.19