Hacking/[Web]Natas

OverTheWire [Natas Level 21]

양선규 2023. 4. 4. 23:22
728x90
반응형

Natas Level 21 입니다.

 

 

메인 페이지

 

메인 페이지 입니다. 저번 레벨과 같이, natas22의 password를 얻고 싶다면 admin 계정으로 로그인 하라고 합니다.

특이하게도, natas21-experimenter 페이지와 환경을 공유한다고 합니다.

 

 

메인 페이지2

 

experimenter 페이지입니다. 편의상 페이지2라고 하겠습니다.

해당 페이지엔 css관련 설정을 할 수 있는 폼이 있군요.

일단 각 페이지 소스코드를 살펴봅시다.

 

 

페이지1

 

password출력 조건문이 존재하는군요. password를 직접 획득할 수 있는 페이지는 이곳인 것 같습니다.

세션명 "admin" , value값은 1일 때 password를 출력합니다.

저번 레벨과 조건 자체는 같군요.

 

 

페이지2

 

페이지2 소스코드입니다.

css 값들을 입력받아 적용하는 코드인 것 같은데요.

 

 

입력 폼

 

페이지2의 입력 폼도, css 설정 변경을 위한 폼만 존재할 뿐 우리가 세션값 조작을 시도해볼 폼은 존재하지 않네요.

어떻게 admin = 1 값을 추가할 수 있을까요?

 

 

페이지2 핵심 코드

 

이것은 페이지2 맨 윗부분에 있는 소스코드입니다.

"submit" 폼을 통해 전달된 요청값들을, 

세션에 key와 value 형태로 저장하고 있어요.

 

이 부분을 이용하면, 우리가 "admin" 세션을 임의로 추가할 수 있습니다.

 

 

submit 폼은 Update 버튼이다

 

개발자도구로 살펴보았을 때, 페이지2의 Update 버튼이 "submit" 폼 이라는 것을 알 수 있습니다.

따라서 Burp Suite로 Update버튼을 누를 때의 패킷을 잡아야 합니다.

 

 

Repeater

 

패킷을 잡으신 후 오른쪽 마우스를 클릭하여 Send to Repeater 버튼을 눌러 Repeater로 옮겨 줍시다.

그리고 PHPSESSID 값을 지워 주시고,

맨 아래 파라미터들 옆에 "&admin=1" 을 입력해 줍니다.

 

그리고 Send 누르시기 전에, Proxy 탭 가셔서 잡았던 패킷 일단 보내주신 후( 꼬이지 않게 )

다시 Repeater 탭으로 와서 Send 버튼을 클릭!

 

 

 

이후 Response 탭을 눌러보면

이렇게 세션값이 도착해 있습니다. 저 값을 복사해 줍니다.

 

 

페이지1

 

자, 다시 페이지1로 와서 이번엔 새로고침 패킷을 잡아줍시다.

그리고 아래쪽 PHPSESSID 값을, 조금 전에 복사했던 값으로 붙여넣기 해주신 후 Forward 를 클릭!

 

 

password 획득

 

password를 획득했습니다.

 

페이지2의 세션 등록 기능을 가진 함수를 이용해서 우리가 원하는 admin => 1 세션을 등록했고, 그에 대한 PHPSESSID값을 얻었습니다.

이후 페이지1,2가 공유된다는 특성을 이용해 PHPSESSID 값을 페이지1에 대입하여 admin 계정 로그인에 성공할 수 있었습니다.

 

 

 

 

 

728x90
반응형

'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