Natas Level 21 입니다.
메인 페이지 입니다. 저번 레벨과 같이, natas22의 password를 얻고 싶다면 admin 계정으로 로그인 하라고 합니다.
특이하게도, natas21-experimenter 페이지와 환경을 공유한다고 합니다.
experimenter 페이지입니다. 편의상 페이지2라고 하겠습니다.
해당 페이지엔 css관련 설정을 할 수 있는 폼이 있군요.
일단 각 페이지 소스코드를 살펴봅시다.
password출력 조건문이 존재하는군요. password를 직접 획득할 수 있는 페이지는 이곳인 것 같습니다.
세션명 "admin" , value값은 1일 때 password를 출력합니다.
저번 레벨과 조건 자체는 같군요.
페이지2 소스코드입니다.
css 값들을 입력받아 적용하는 코드인 것 같은데요.
페이지2의 입력 폼도, css 설정 변경을 위한 폼만 존재할 뿐 우리가 세션값 조작을 시도해볼 폼은 존재하지 않네요.
어떻게 admin = 1 값을 추가할 수 있을까요?
이것은 페이지2 맨 윗부분에 있는 소스코드입니다.
"submit" 폼을 통해 전달된 요청값들을,
세션에 key와 value 형태로 저장하고 있어요.
이 부분을 이용하면, 우리가 "admin" 세션을 임의로 추가할 수 있습니다.
개발자도구로 살펴보았을 때, 페이지2의 Update 버튼이 "submit" 폼 이라는 것을 알 수 있습니다.
따라서 Burp Suite로 Update버튼을 누를 때의 패킷을 잡아야 합니다.
패킷을 잡으신 후 오른쪽 마우스를 클릭하여 Send to Repeater 버튼을 눌러 Repeater로 옮겨 줍시다.
그리고 PHPSESSID 값을 지워 주시고,
맨 아래 파라미터들 옆에 "&admin=1" 을 입력해 줍니다.
그리고 Send 누르시기 전에, Proxy 탭 가셔서 잡았던 패킷 일단 보내주신 후( 꼬이지 않게 )
다시 Repeater 탭으로 와서 Send 버튼을 클릭!
이후 Response 탭을 눌러보면
이렇게 세션값이 도착해 있습니다. 저 값을 복사해 줍니다.
자, 다시 페이지1로 와서 이번엔 새로고침 패킷을 잡아줍시다.
그리고 아래쪽 PHPSESSID 값을, 조금 전에 복사했던 값으로 붙여넣기 해주신 후 Forward 를 클릭!
password를 획득했습니다.
페이지2의 세션 등록 기능을 가진 함수를 이용해서 우리가 원하는 admin => 1 세션을 등록했고, 그에 대한 PHPSESSID값을 얻었습니다.
이후 페이지1,2가 공유된다는 특성을 이용해 PHPSESSID 값을 페이지1에 대입하여 admin 계정 로그인에 성공할 수 있었습니다.
'Hacking > [Web]Natas' 카테고리의 다른 글
OverTheWire [Natas Level 23] (0) | 2023.04.11 |
---|---|
OverTheWire [Natas Level 22] (0) | 2023.04.05 |
OverTheWire [Natas Level 20] (0) | 2023.04.04 |
OverTheWire [Natas Level 19] (0) | 2023.04.04 |
OverTheWire [Natas Level 18] (0) | 2023.03.29 |