본문 바로가기

 

52번 문제에요.

배점은 400점, 분야는 명령어 + DB 에요.

 

admin page 에 접근을 하래요.

게스트는 guest / guest

프록시를 주네요.

 

그냥 admin page 에 들어가보면

 

 

인증이 필요하대요.

 

guest / guest

를 넣어보면?

 

 

안뇽 게스트

넌 어드민이 아니야

래요.

 

거기에다가 괜히 프록시를 준것같지가 않아서

admin 으로 인증해야함 + 로컬로 접근해야함

두개를 다 만족시켜야 문제가 풀리나봐요.

 

그러면 이제 프록시를 볼게요.

 

 

흐ㅡㅡㅡㅡㅡ음

 

 

어디에 접근할건지를 get 방식으로 전달하니

?page=/admin/

으로 바꿔주면

 

 

인증이 없으니 로그인에 실패해요.

 

 

어떤식으로 인증이 이루어지는지 피들러를 켜서 보니

딱봐도 BASE64 처럼 생긴게 있네요.

 

 

디코딩을 해보면

id:pw

를 BASE64로 인코딩해서 넘긴다는걸 알수있네요.

 

그러면 인증이 어떤식으로 돌아가는지도 알았으니

프록시 헤더를 건들여서 인증을 해야겠네요.

 

 

/admin/ HTTP/1.1%0d%0aCookie: PHPSSID=...

%0d%0a 로 개행해서

필요한 헤더를 채워넣고

마지막에 %0d%0a%0d%0a 로 요청을 끝내버리면?

 

 

guest 로 로그인이 됬네요.

 

그러면 이제

admin' #:aaa

를 BASE64로 인코딩해서

select {????} from {table} where id='admin' #' and pw='aaa' 

가 되게끔

 

 

헤더에 넣어주면?

 

FLAG{Server_Side_Request_Forgery_with_proxy!}



이제 FLAG 를 Auth 에다가 넣어주면?



빠밤!

문제가 풀렸네요.

댓글