힌트를 확인해보면 autofig 프로그램의 소스코드와 하단의 more hints가 존재한다. 동시에 여러 명령어를 사용하려면 ;(세미콜론)을 사용한다. 또한 문자열 형태로 명령어를 전달하려면 ""(쌍따옴표)를 사용한다.
level4의 권한을 가진 파일을 찾아보면 힌트에서 확인했던 autodig를 확인할 수 있다.
이제 autodig의 인자열을 정해야한다. "dig@ ~ version.bind chaos txt" 명령어는 버전을 확인할 수 있는 명령어이다. 그 인자로 임의의 ip 주소를 주고, ;을 사용해서 sh을 실행시켜준다. 또한 문자열 형태로 명령어를 전달해야 하므로 ""에 묶어서 인자로 넣으면 password가 출력된다.
문제에 접속하면 소스 코드가 출력된다. 이때 sha1(10932435112)에 대해서 구글링해보면 이 값은 매직 해시인 것을 알 수 있다.
PHP에서는 1e2를 1*10^2로 인식한다. 따라서 0e~로 시작하게 된다면 뒤에 무슨 값이 오든 결과값은 0이 될 것이다. 매직 해시란 '0e'로 시작하는 문자열 뒤의 값들이 전부 숫자인 경우를 의미한다. 이는 PHP 상에서 flaot 형태로 인식되고, 값을 계산해보면 모두 0이 된다.
※ 리눅스 압축 확장자 tar : tar 프로그램을 사용하여 압축된 파일 (cvf: 합치기, xvf: 해제하기) gz : gzip 프로그램을 사용하여 압축된 파일 (-d: 파일 압축 해제) tar.gz : tar 프로그램으로 합친 후 gzip으로 압축한 파일 tgz : tar.gz와 동일
trainer 8
cat > file: 파일 생성
cat >> file: 파일의 끝에 내용 추가
gcc -o 프로그램이름 소스파일이름: c언어 컴파일
절대경로 또는 상대경로(./프로그램이름)을 사용하여 파일 실행
trainer 9
uid: user id, gid: group id, groups: 현재 속한 그룹
파일 권한
순서대로 user, group, others 권한 (소유자 권한, 그룹 사용자 권한, 기타 사용자 권한)
rwx는 파일의 권한을 나타냄 (r: read, w: write, x: excute)
trainer 10
Local 해킹 : 관리자 권한(root)를 얻고자 시도 Remote 해킹 : 일반 아이디를 얻을때 SetUID : 일시적으로 자신의 ID를 변경하는 것 (잠시동안 root 권한을 가질 수 있음) (s)
※ passwd 파일에는 SetUID가 걸려있음
find / -perm -4000 : 서버 전체에서 SetUID가 걸린 파일 찾기
-perm : 권한과 일치하는 파일을 찾는다 -name : 이름과 일치하는 파일을 찾는다 -user : 유저와 일치하는 파일을 찾는다 -group : 그룹과 일치하는 파일을 찾는다
또한 그렇게 가져온 값이 num에 들어간다. 그 값으로 “<img src=’/static/level3/cloud” + num + “./jpg’/>”; 문장이 완성되게 된다. 문제를 해결하기 위해서는 존재하지 않는 이미지를 띄우고 onerror 처리를 해야한다. 따라서 num의 값으로 src의 ‘를 닫고, onerror 코드를 추가하면 된다.
따라서 #2.jpg’ onerror=’alert()’/>// 라 입력을 하면 num에 2.jpg’ onerror=’alert()’/>//가 들어가게 된다. html 변수에 <img src=’/static/level3/cloud2.jpg’ onerror=’alert()’/>//./jpg’/>;가 추가된다. 이렇게 입력할 경우 image2가 출력된다. onerror는 이미지가 존재하지 않을 경우 실행되므로 존재하지 않는 이미지(0또는 4부터)를 입력하면 문제가 풀린다.