본문 바로가기
워게임/natas

[natas - WEB hacking] level19 -> leve20

by B T Y 2017. 10. 8.
반응형

[natas - WEB hacking] level19 -> leve20

 

 

 

 

[ 풀이과정 ]

 

페이지에 접속하자마자 'You are logged in as a regular user. Login as an admin to retrieve credentials for natas21.'라는 문구가 있었고

'일반 사용자로 접속했기 때문에 natas21을 인증할 수 있는 관리자로 로그인하라'는 뜻이였다..

페이지에는 username을 보내는 폼과 전송버튼이 있었다...

 

 

 

 

 

 

이 문제를 풀기 위해서는 debug를 이용해야한다...

우선 url창에 debug=true&name=admin과 같이 값을 줘서 결과를 확인해봤고

세션값을 받아오기전에 myread()와 mywrite()가 실행되기 때문에 여러번 새로고침을 해줘야한다..

 

 

 

 

session_set_save_handler() 함수는 사용자가 session 저장방식을 재정의 할수 있도록 하는 함수이다.

여기서는 myread()와 mywrite() 함수를 주의깊게 봐야한다..

 

mywrite()에서는 세션에 있는 key와 value를 공백으로 구분하고 뒤에 \n문자를 넣어서 직렬화시켜 파일에 저장한다..

그리고 myread()로 해당 세션을 불러올때는 \n으로 세션을 구분해서 읽어드리고 해당 key에 대한 값은 

explode()를 이용해서 배열로 처리해 array[0]이라는 key에 array[1]의 값을 넣어주는 형식으로 세션을 다시 세팅한다.

세션과 세션은 개행문자(\n)로 구분하고 key와 value는 공백으로 구분한다면 이걸 이용해서 

세션에 admin이라는 key를 주고 그 값을 1로 세팅할수 있게 된다..

 

debug=true&admin%0aadmin 1과 같이 값을 보내주게 되면 admin의 값을 1로 세팅하게 되면서 natas21에 대한 패스워드를 알아낼수 있다..

 

 

 

 

 

IFekPyrQXftziDEsUr3x21sYuahypdgJ

 

 

 

 

반응형

댓글