Challenge 47

Web Hacking 2015. 2. 27. 17:23



< http://webhacking.kr/challenge/bonus/bonus-11/index.phps > 로 들어가 보면 소스가 뜬다.



PHP mail() 함수



: mail(받는사람, 제목, 내용, 옵션)


php의 mail()함수의 내용을 해석해 보면

admin@webhacking.kr 에게 'readme'라는 제목으로 "password is $pass" 내용을 보내라.


뒤에 $header 이 무슨내용인지 모르겠다.

문제 페이지에서 mail header injection 이라는 hint 가 있었다.

mail header injection에 대해 찾아보았다.




Cc(숨은 참조자)의 역할이 중요하다고 한다. 

숨은 참조자는 숨은 참조자로 지정해준 메일의 주소로도 메일이 날라가게 하는 것이다.


URL 인코딩으로 고쳐주면 될 것 같다.

URL 인코딩은 문자를 오직 ASCII코드로 바꿔 보내주는 것 같다.


그런데 웹에서의 값을 어떻게 바꿔 보내줄 수 있을까?!

'피들러'를 이용하면 된다고 한다.







이메일 창에 내 아이디를 넣어 보내보았다.

왼쪽편에 창이 하나더 뜨고 클릭한 다음 오른쪽에 inspertions 안에 Raw에 들어가 보니 밑에

email=oyeahhh%40naver.com이 생겼다.


composer창으로 들어가서 Request Body부분에

Cc:oyeahhh%40naver.com을 추가 하고

오른쪽 위에 Execute를 눌었다.


그랬더니 왼쪽편에 새로운 hppt가 생겼다. body는 399로 다른것들과 달랐다.

클릭해서 Webview에서 보면 밑에 Password is 하고 뜬다.

password를 Auth에 입력하면 된다!



피들러의 사용법을 몰라서 고생을 했다.

피들러 사용법 설명이 잘 된 동영상이 있어서 보고 참고하면서 했다.


http://www.youtube.com/watch?v=gXRzR-YU35c



'Web Hacking' 카테고리의 다른 글

Challenge 15  (0) 2015.02.27
Challenge 25  (0) 2015.02.27
Challenge 4  (0) 2015.02.27
Challenge 14  (3) 2014.10.01
challenge 6  (5) 2014.10.01
Posted by oyeahhh
,

Challenge 15

Web Hacking 2015. 2. 27. 17:22

15번을 누르고 들어가면 팝업창이 하나 뜬다.



바로 확인을 누르면 Challenge 화면이 뜬다.


15번을 누르고 무슨 이유였는지 확인을 누르지 않고 다른 일을 하다가 다시 들어가서 확인을 누르니

하얀 화면만 떴다.

그래서 소스보기를 했더니!!



password는 하고 답이 나와있는 것이다!


답을 Auth에 넣어 보았다!




정답~


무슨 원리인지는 모르겠다... ㅎㅎㅎ



'Web Hacking' 카테고리의 다른 글

Challenge 47  (0) 2015.02.27
Challenge 25  (0) 2015.02.27
Challenge 4  (0) 2015.02.27
Challenge 14  (3) 2014.10.01
challenge 6  (5) 2014.10.01
Posted by oyeahhh
,

Challenge 25

Web Hacking 2015. 2. 27. 17:21


음? 올드좀비 유저 뭐시기...음?

hello.txt 와 index.php 그리고 password.php를 들어가 봐야할 것 같다.


소스파일을 보니 별거 없다




먼저 index.php로 들어가 보았다.



똑같다. 별 차이가 없다. 차이가 있다면 주소창에 /index.php 가 추가되었다는거?


hello.txt에 들어가 보았다.


hello world!


password.php에 들어가 보았다.


별거 없다... ㅎㅎㅎ


처음 시작부터 ?file=hello 라는

어떤 값이 들어가 있었다.

그래서 file에 다른 것들을 다 넣어 보았다.

모두다 아무런 변화가 없었다. 

음....


재우에게 물어 보았더니

lfi취약점을 찾아 보라고 한다...

lfi...  모르는게 끝도 없다 ㅎㅎㅎㅎㅎ


로컬 파일 인클루션(Local File Inclusion)란?


LFI란 Local File Inclusion의 약자로 웹 브라우저를 통해 서버에 파일을 포함시키는 과정입니다.

이 취약점은 인클루드할 페이지 경로가 적절히 필터링되지 않았고 디렉토리 변경 명령어들의 

삽입을 허용했을때 일어납니다. 대부분의 LFI 취약점은 URL을 통해 이뤄지는데 이는 보통 개발자가 

GET Method 사용을 선호하기 때문입니다.



더보기



요약하자면

------------------------------------------------------------------------------------------------


http://www.site.com/index.php?pages=../../../../etc/passwd


../../../ 와 같이 ../를 여러번 붙여 주는 이유는 /etc/passwd 디렉토리의 상위디렉토리 존재 가능성 때문입니다.

위 URL처럼 시도하면 /etc/passwd를 읽어올수 있겠지만 조건에 따라 여전히 안 읽어질수도 있습니다.

여러 이유들이 존재할수 있지만 하나의 이유로는 코딩에 의해 생성된 쓰레기 값 때문 일수 있습니다.

아래 URL대로 시도를 해주면 쓰레기값을 성공적으로 날려버릴수 있습니다.


http://www.site.com/index.php?pages=../../../../etc/passwd%00


/etc/passwd 뒤에 %00은 널바이트로써 /etc/passwd 뒤에 붙는 쓸데없는 값들을 널바이트로 날려버립니다.


------------------------------------------------------------------------------------------------


page= 말고도 아래와 같이 이러한 경로를 갖는 URL들은 LFI를 의심해볼수 있습니다.

file=            path=             doc=            pdf=

folder=          style=            document=       PHP_PATH= 

lang=            template=         pg=             document_root=



file= 를 갖고 있기 때문에 LFI라는걸 알수 있고 %00를 사용하요 쓰레기 값을 날려버리면 된다.




file=password.php%00 값을 넣으면 password가 나타난다!



~~nullbye2~~값을 Auth에 넣으면



challenges clear! 이란 창이 뜬다! ㅎㅎㅎ



'Web Hacking' 카테고리의 다른 글

Challenge 47  (0) 2015.02.27
Challenge 15  (0) 2015.02.27
Challenge 4  (0) 2015.02.27
Challenge 14  (3) 2014.10.01
challenge 6  (5) 2014.10.01
Posted by oyeahhh
,