메인화면입니다.

[admin page 클릭]

ID와 PW를 입력하는 창이 뜹니다.

위치는 /admin/ 입니다.

[guest/guest로 로그인]

이러한 문구가 뜹니다.

[로그인 실패시]

"Login Fail"문구와 함께 소스보기 링크를 걸어놨습니다.

[view-source]

[간단 소스해석]

1. session['login']이 admin이어야 하고 접속자 공인 IP는 172.16.0.으로 시작해야 함

2. 입력된 id,pw을 토대로 DB에서 id를 가져와서 id가 존재하면 session에 저장

[proxy 클릭]

현재 페이지 위치는 '/' 로 확인

먼저 session에 id를 저장하는 쿼리가 간단하여 id 부분에 admin'# 을 입력하여 pw에 관계 없이 록인이 되도록 인젝션을 걸어보겠습니다.

가상 IP로 접속할 수 있다네요 ~

벼래별짓 다 해봤습니다. ㅋㅋㅋ

vmware로 nat걸고 172.17.0.0/24 로 할당해서해보았으나 ~

생각해보니 서버로 전송되는 ip는 저의 공인 ip이기 때문에 절대 172.17.0.0/24 로 보낼 수 가 없습니다.

문제를 다 풀고 생각해보니 172.17.0.0/24는 proxy서버의 ip일 것이라고 생각됩니다.

우선 그렇게 머리속에 정리를 해놓고 문제를 풀어봅시다.

자 ! 그럼 /admin/여기서는 죽어도 문제를 풀수가 없습니다.

그럼 proxy.php?page=/ 이 부분을 이용하여 풀 수 밖에 없습니다.

1. 프록시 admin login이 성공하는 순간을 잡는다.

"Authorization: Basic YWRtaW4nIzoxMTEx" 이 부분에 주목할 필요가 있습니다.

"Authorization" 는 사용자 에이전트가 (프록시) 서버에 인증을 하기 위한 인증 정보를 포함하고 있습니다.또한 type을 Basic으로 설정하면 base64를 이용하여 인코딩된 사용자 ID/비밀번호 쌍의 인증 정보를 전달합니다.

그럼 여기서 "YWRtaW4nIzoxMTEx"이 부분을 복호화 하면 id와 pw를 확인할 수 있을 것입니다.

id: admin'#

pw: 1111

입니다.

이로써 우선 인증정보를 전달한다는 것을 확인했습니다.

2.헤더 조작 및 프록시 서버 전달

헤더를 아래와 같이 조작합니다.

"webhacking.kr:10008/proxy.php?page=/admin/ HTTP/1.1%0D%0AAuthorization: Basic YWRtaW4nIzoxMTEx"

여기서 %0d%0a는 캐리지 리턴, 라인피드를 의미합니다.(엔터키의 역할)

위와 같이 URL에 입력했을 때 메인페이지로 바로 넘어가게 되어 있습니다.

프록시를 이용하여 어떤 정보를 받는지 확인해 보겠습니다.

스크립트를 이용하여 바로 페이지가 넘어갑니다.

여기서 중요한 것은 Set-Cookie입니다.

서버에서 인증 받은 클라이언트에 대해 위와 같은 쿠키를 설정해주는 것 같습니다.

즉, 쿠키정보도 인증의 한 부분인 것 같습니다.

이 쿠키를 이용하여 헤더를 한번 수정해 줍니다.

3.헤더에 쿠키추가

"webhacking.kr:10008/proxy.php?page=/admin/ HTTP/1.1%0D%0AAuthorization: Basic YWRtaW4nIzoxMTEx%0D%0aCookie: PHPSESSID=64dko9o9o2rph1ek882igmp3en;"

이처럼 만들수 있습니다.

이제 URL에 입력을 해주면!

FLAG를 획득할 수 있습니다.

챌린지 52 성공!

휴....................

이해가 너무 안가서 힘들었습니다...

https://k-owl.tistory.com/157

여기서 이 문제를 이해하는데 도움을 많이 받았습니다 필요하신분은 참고하세요 ~~

반전은! 172.17.0.0/24로 시작하는 IP는 내가 아닌 프록시 서버다 ! ㅋㅋㅋ

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

[webhacking.kr] Level54 (old)  (2) 2020.04.28
[webhacking.kr] Level53 (old)  (125) 2020.04.28
[webhacking.kr] Level51 (old)  (343) 2020.04.28
[webhacking.kr] Level50 (old)  (311) 2020.04.28
[webhacking.kr] Level49 (old)  (304) 2020.04.28

+ Recent posts