티스토리 뷰

Wargame/Webhacking.kr

Challenge 44

do9dark 2015. 8. 28. 13:52

name을 입력할 수 있는 공간과 Make 버튼이 있다.



숫자를 입력해보면 아래와 같이 다섯칸으로 되어있다.



Make 버튼을 누르면 index/go.html 페이지로 이동되고 페이지 내용에 hello 12345 가 출력되어 있는 것을 볼 수 있다.

즉, 첫 페이지에서 입력한 내용 중 5글자만 index/go.html 페이지에 출력이 된다는 것을 알 수 있다.



Code Injection 취약점을 이용한 문제로 추측을 하고 문제의 구조를 파악해보면 다음과 같다.


1. name 으로 입력한 값이 $_POST['name']으로 전달

2. $name = substr($_POST['name'],0,5); 5글자만 전달

3. system("echo 'hello $name' > index/go.html"); system() 함수를 이용하여 전달받은 값을 가지고 index/go.html 페이지 생성

4. index/go.html 페이지로 이동


그리고, ls 를 입력할 경우 빈페이지만 보여준다.

이러한 특징을 토대로 문제를 풀어보면 입력을 할 수 있는 부분은 $name에 5 글자로 제한이 되어있다.

그렇기 때문에 '&l's 로 입력을 하면 아래와 같이 된다.


echo 'hello '&l's' > index/go.html


색을 구분하여 명령어가 실행되는 구조를 보면 아래와 같다.


echo 'hello '&l's' > index/go.html


echo 'hello ' 부분이 &에 의해서 백그라운드로 실행이 되고 ls 명령어 실행한 결과가 index/go.html 페이지로 리다이렉션이 된다.

'& 는 ls 명령어를 실행시키기 위해서 echo 부분을 닫아주고 백그라운드로 실행을 한 부분이고, l's 는 ls 만 입력할 경우 정상적으로 실행이 되지 않기 때문에 우회하기 위해서 ls 사이에 '를 넣어서 우회를 해주는 것과 동시에 '의 짝을 맞춰줄 수 있다.



따라서 실행을 하게 되면 index/go.html 페이지에 ls 명령어를 실행한 결과가 출력이 되고 내용을 보면 패스워드로 의심이 가는 파일을 볼 수 있다.



challenge44_PaSs_w0Rd___.php 파일을 실행해보면 문제를 풀 수 있다.




+ 추가


Bash Shell에서 `(backquote/backtick), '(singlequote), "(doublequote)


`(backquote/backtick)

backquote 안에 있는 명령어의 표준출력(stdout)를 표준입력(stdin)으로 바꾸는 기능이 있다.

예를 들어 uname 이라는 파일을 만들어서 ls를 하게 되면 출력은 uname이 된다.

이때, `ls`를 하게 되면 출력인 uname이 입력으로 바뀌기 때문에 uname 명령어를 실행한 결과가 출력된다.


'(singlequote)

singluequote 안에 있는 내용을 문자열 그대로 인식한다.


"(doublequote)

doublequote 안에 있는 내용 중 특수문자($, `(backquote), \(escape character)가 있을 경우 해석하여 인식한다.

예를 들어 t=temp 를 쓰고 난 다음 echo '$t' 와 echo "$t" 를 실행해보면 출력은 $t, temp 가 된다.

공백이 포함되어 있는 문자열도 하나로 인식하게 해줄 때도 사용한다.


! (History Expansion)

'Wargame > Webhacking.kr' 카테고리의 다른 글

Challenge 49  (0) 2015.09.03
Challenge 48  (0) 2015.08.31
Challenge 47  (0) 2015.08.31
Challenge 46  (0) 2015.08.29
Challenge 45  (0) 2015.08.28
Challenge 44  (0) 2015.08.28
Challenge 43  (0) 2015.08.28
Challenge 42  (0) 2015.08.28
Challenge 41  (0) 2015.08.15
Challenge 40  (0) 2015.08.14
Challenge 39  (0) 2015.08.14
댓글
댓글쓰기 폼
«   2020/07   »
      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  
링크
공지사항
Total
103,581
Today
0
Yesterday
64