본문 바로가기

Security

[ Pwnable ] SIS / System 1

System 1

문제 제목 : 취약한 메아리 프로그램

문제 설명 : 개발자는 메아리 프로그램을 제작 하였다.
                    허나 어설픈 보안 설정으로 해당 프로그램의 취약점이 존재한다.
                    취약점을 찾아서 SHELL을 획득 하여라.

                    접근 IP : 221.143.48.107
                    접근 PORT : 22

                    접근 ID : system100
                    접근 PW : !kisa_system_gogosing~!!!


해당 프로그램을 보면 root100 유저로 setuid가 걸려있다.

프로그램을 실행시키면, INPUT이 출력 되고 입력한 값을 그대로 출력해 준다.



gdb 로 프로그램을 분석해 보면, euid를 가져와서 그 값으로 setreuid를 하고 system 함수를 실행시키는 것을 볼 수 있다.


$rsi 레지스터에는 geteuid로 가져온 값이 들어있고, $rdi 레지스터에는 echo라는 명령어와 내가 입력한 hello 라는 값이 들어있다.

setuid가 걸려있고, system 함수가 존재하므로, echo가 /bin/bash를 실행시키면 root100 uid를 가진 쉘을 획득 할 수 있다.

1) ' ; '를 통해 동시 명령 실행을 한다

간단하게 echo 명령어와 sh 명령어를 동시 실행하기 위해 ';'를 넣는다


하지만 Access Denied!!!라는 메시지가 출력하고 실패한다.



디버깅을 해 보면 strchr 함수를 통해 ';' 문자를 걸러내는 것으로 보인다.


$esi 에는 0x3b가 들어있는데 ascii로 ;이다. (';', ' ' ', ' ` ' 를 막는다)
$rdi 에는 내가 입력한 hello가 보인다. 

실패.

2) 환경변수를 조작 하여, echo가 /bin/bash 혹은 ls를 실행하게 한다.


ln -s 를 통해 심볼릭 링크를 걸고 export 명령어를 통해 현재 디렉터리를 제일 먼저 검색하게 하였으나, 실패

다른 환경에선 환경변수가 제대로 적용 되었으나 64-bit 환경이 문제인지 실패. (이유 모름)

3) pipe를 통한 명령 실행



pipe를 통해 root100의 홈디렉터리를 살피고 key가 있는 것을 보고, cat 명령어로 key 획득





'Security' 카테고리의 다른 글

[ Pwnable ] SIS/System 3  (0) 2013.04.01
[ Pwnable ] SIS / System 2  (0) 2013.04.01
[Reversing] rootkit 1  (0) 2013.04.01
[Pwnable] 2013 CodeGate / Vuln 300  (6) 2013.03.15
[Pwnable] BOF 원정대  (0) 2012.11.06