티스토리 뷰

Security

Securityfest CTF writeup - A temple jest

곰국 Gomsoup 2017.06.01 09:56

 

해당 사이트에 접속 시 다음과 같은 페이지가 로드된다

 

 

 

 

 

main의 이미지를 클릭 할 경우 render/404 로 redirect 되며 일반적인 404 에러 메세지 같이 보이는 문구가 출력된다

 

 

 

 

그런데 render/ 뒤의 숫자를 바꿔보니 다르게 노출이 되는걸 확인할 수 있었다

 

 

 

 

 

여러가지 시도해 보다가 비교문을 삽입하여 봤는데 true라는 논리값이 return 되었고 이를 통해 어떤 구문을 eval 하는것을 알 수 있다

 

 

 

 

 

 

어떤 Web application인지 확인하기 위해 response header를 확인해 보았는데 X-Powered-By가 Express임을 알 수 있고 이를 통해 express.js를 사용하고 있음을 알 수 있다

 

 

 

 

 

node.js API를 통해 require를 통한 module load가 가능한 걸 알았으나, 시도할 경우 timeout이라는 문자와 함께 어떠한 정보도 얻지 못한다

 

 

 

 

 

일반적으로 사용되는 console.log 함수를 호출해 보았더니 timeout이라는 문자는 출력되지 않고 null이 return 되었다

 

 

 

 

 

다양한 시도 끝에 string type으로 return 되어 오는 것들만 출력이 된다는 걸 알고 범용함수를 강제 캐스팅을 통해 출력하여 보았다

보이는 것 처럼 console의 경우 정상적인 객체로 반환된다

 

 

 

 

하지만 require의 경우 node.js 콘솔에서 객체로 반환되지만,

해당 사이트에서는 어떤것도 반환되지 않고 timeout이 발생하는 것을 알 수 있다

 

 

 

 

 

몇몇 시도 끝에 process는 정상적인 객체를 반환함을 알 수 있었고 root 사용자로 실행시킨 것 까지 확인할 수 있었다

 

 

 

 

 

node.js API 를 다시 뒤지던 중 process.mainModule이라는 함수를 찾을 수 있다. 해당 함수는 require.main을 대신할 수 있다는 설명이 보여 바로 시도해 보았다

 

 

 

 

 

require를 실행시키면 객체형태의 함수로 반환되는 것을 알 수 있다

 

 

 

 

 

node.js에서 exec를 하기 위해서는 child_process를 import해야한다

따라서 import를 실행했더니 정상적인 객체 type의 함수가 반환되는 것을 알 수 있다

 

 

 

 

 

하지만 위의 구문으로 ls 명령의 return을 반환받으려 했으나, 위와 같은 메시지만 return 되어 올 뿐이었다

 

 

 

 

 

node.js 콘솔에서 해당 구문을 똑같이 실행해어 보았더나 위와 같은 결과를 볼 수 있었다

문제는 '[object Object]'가 반환된 이후 개행 버퍼가 비워지지 않아 위와 같은 결과만 나타날 뿐이었다

해당 사이트에서는 1줄 이상의 return은 처리하지 못하는 걸 이전의 시도를 통해 확인 했기에 다른 방법을 찾아 구글을 뒤져보았다

 

 

 

 

 

한시간쯤 뒤지고 있는데 위의 소스를 발견했다. execSync 함수로는 간단하게 ls를 return 받을 수 있었다

 

 

 

 

 

process.mainModule.require('child_process').execSync('ls -al').toString() 의 결과이다

디렉토리 리스팅에 성공한 것을 알 수 있다

 

 

 

 

 

 

flag 파일이 있을 줄 알았는데 개행을 직접 줘서 확인해 본 결과 그딴건 없었다

index.js를 확인하도록 하자

 

 

 

 

 

flag : m3m0ry_l34k_Schm3m0ry_l34k

 

 

 

후기

 

풀 때는 진짜 피똥싸면서 했는데 막상 적고보니 별 거 없다...

node.js 문제가 요즘 ctf에서 많이 나오니 열심히 공부하도록 하자......

'Security' 카테고리의 다른 글

fake argv1  (0) 2018.09.20
참고용  (0) 2018.09.20
Assault Cube Aimbot  (0) 2017.06.07
Securityfest CTF writeup - A temple jest  (0) 2017.06.01
Linux system call  (0) 2017.03.02
댓글
댓글쓰기 폼
공지사항
최근에 달린 댓글
Total
7,274
Today
2
Yesterday
22
링크
TAG
more
«   2018/12   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
글 보관함