티스토리 뷰

수업 노트/natas

natas8 solution

오리지날초이 2022. 5. 24. 18:28

URL : http://natas8.natas.labs.overthewire.org/

id : natas8

password :a6bZCNYwdKqN5cGP11ZdtPg0iImQQhAB

(2023. 03 기준)

 

natas6 에서 풀었던 유형인것 같네요?

소스코드를 보니 복잡해 보이는 무언가가 있습니다.

 

php 코드를 알아야 풀 수 있는 문제입니다. 풀이를 살펴봅시다.

 

더보기

php 구문을 살펴보니 $encodedSecret 변수에 "3d3d516343746d4d6d6c315669563362" 값을 대입하네요.

 

natas8 페이지에서 입력받은 $secret 값을

php 함수로 bin2hex(strrev(base64_encode($secret)) 처리한 최종 결과값이

아까 입력받은 $encodedSecret 값과 같으면

숨겨진 패스워드를 오픈해주는 구조입니다.

 

bin2hex(strrev(base64_encode($secret)) 가 복잡해 보이지만

모두 php 자체에서 제공하는 함수입니다.

 

base64_encode 로 $secret 값을 변환해주고

그 값을 strrev() 함수로 한번 더 변환

그 결과값을 또 bin2hex() 함수로 변환해주네요.

 

일단 문제 해결을 위해서 php 구문을 직접 실행해보겠습니다.

내 컴퓨터에서 php 를 동작시키려면 apache 와 같은 웹서버 프로그램이 필요합니다.

 

간단한 예제를 실행시키기 위해 웹서버를 찾고 설치하는게 번거로우니

온라인 상에서 php 작성, 실행이 가능한 사이트를 찾읍시다.

 

google.com 에서 online php compiler 라는 키워드로 찾으면 해당기능을 제공하는 사이트를 쉽게 찾을 수 있습니다.

저는 그중 하나인 https://onecompiler.com/php 에서 풀이를 진행하겠습니다.

 

최초 접소하면 hello world 를 출력할 수 있는 샘플 코드가 있네요.

run 버튼을 누르면 화면에 결과값이 출력됩니다.

 

여기에 natas 에서 제공해주는 힌트 코드를 활용해야겠죠? 

natas 에서 사용되는 function encodeSecret($secret) 함수를 활용한 예제를 작성했습니다.

 

$secret 값은 원래 화면에서 제출버튼을 누르면 php 변수로 전달되는 input box 값입니다.

전 php 개발환경에서 샘플코드로 "hello world" 라는 문자열을 $secret 변수에 전달했는데

이는 제가 input box 에 "hello world" 값을 입력한 것과 동일한 효과를 가집니다.

실제 $secret 변수에 저장된 "hello world" 문자열은

base64_encode() 함수, strrev() 함수, bin2hex() 함수를 거쳐서 

"3d514762793932646738476273564761" 로 치환이 되네요.

 

다시 코드를 살펴보면 우리가 입력한 $secret 값이 세번의 함수변환을 차례로 거쳐서

$encodedSecret 값과 동일하면 문제가 해결됨을 알 수 있습니다. 

 

그렇다면 $encodedSecret 값을 특정값으로 만들어내려면 어떻게 해야할까요?

 

우선 base64_encode() 함수, strrev() 함수, bin2hex() 의 기능과 역할을 찾아서 살펴보시기 바랍니다.

 

해당 함수들은 모두 php 내장함수로 특정한 방식을 사용하며 문자열을 변환해주는데

두 각각의 규칙이 있기에 역변환도 가능합니다.

 

따라서 base64_encode() 함수는 base64_decode()

strrev() 함수는 다시 한번더 strrev() 함수

bin2hex() 는 hex2bin() 함수로 역변환을 시도하면 됩니다.

 

역변환 함수를 선언할 때는 기존 함수의 순서와 흐름을 헤깔리지 않고 잘 고려하세요.

 

그러면 $encodedSectet 값을 역변환해서 최초에 입력되어야 하는 $secret 값을 구해낼 수 있습니다.

 

이제 이 $secret 값을 원래 화면에 입력하고 제출하면 됩니다.

 

성공적으로 9단계로의 패스워드를 획득했습니다.


natas 사이트에서 통하는 취약점은 실제로 아주 오래전에는 통했을지도 몰라도

지금은 먹히지 않는게 대부분입니다.

 

혹시라도 natas 에서 배운 기법을 활용해서 현실세계에서 웹취약점을 탐색하는 행위는

하지 않기를 강력하게 권고합니다.

 

natas 는 보안 학습을 위해 제작된 사이트로 취약점 탐색 행위를 하는것을 허용하게끔 설계되었고

그 영향력이 제한적이지만 동일한 방식으로 현실에 존재하는 개인/상업 사이트에 취약점 점검을 한다면

여러분은 법적인 책임을 지게 될 수 있습니다.

 

국내외 대부분의 사이트들은 침입탐지 시스템 등을 운영하고 이상 탐색 행위를 추적할 수 있습니다.

 

이곳에서는 웹보안에 대한 기본적인 개념을 익히는데 만족하고

그 외 다양한 시도는 사전 협의된 테스트 환경이나 본인이 감당할 수 있는 실험 환경 등에서만

진행하길 바랍니다.


 

728x90
반응형

'수업 노트 > natas' 카테고리의 다른 글

natas10 solution  (0) 2023.04.06
natas9 solution  (0) 2023.03.13
natas7 solution  (0) 2022.05.17
natas6 solution  (0) 2022.05.17
natas5 solution  (0) 2022.05.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함