Over the Wire/natas

[natas] level 7 → 8

ruming 2021. 5. 9. 15:30

입력창이 있다. 

 

소스코드를 확인해보았다.

<html>
<head>
<!-- This stuff in the header has nothing to do with the level -->
<link rel="stylesheet" type="text/css" href="http://natas.labs.overthewire.org/css/level.css">
<link rel="stylesheet" href="http://natas.labs.overthewire.org/css/jquery-ui.css" />
<link rel="stylesheet" href="http://natas.labs.overthewire.org/css/wechall.css" />
<script src="http://natas.labs.overthewire.org/js/jquery-1.9.1.js"></script>
<script src="http://natas.labs.overthewire.org/js/jquery-ui.js"></script>
<script src=http://natas.labs.overthewire.org/js/wechall-data.js></script><script src="http://natas.labs.overthewire.org/js/wechall.js"></script>
<script>var wechallinfo = { "level": "natas8", "pass": "<censored>" };</script></head>
<body>
<h1>natas8</h1>
<div id="content">

<?

$encodedSecret = "3d3d516343746d4d6d6c315669563362";

function encodeSecret($secret) {
    return bin2hex(strrev(base64_encode($secret)));
}

if(array_key_exists("submit", $_POST)) {
    if(encodeSecret($_POST['secret']) == $encodedSecret) {
    print "Access granted. The password for natas9 is <censored>";
    } else {
    print "Wrong secret";
    }
}
?>

<form method=post>
Input secret: <input name=secret><br>
<input type=submit name=submit>
</form>

<div id="viewsource"><a href="index-source.html">View sourcecode</a></div>
</div>
</body>
</html>

일단 secret값을 찾으면 되는 것 같은데 base64인코딩이 되어있나보다. encodedSecret이 인코딩 된 값일테니 디코딩을 하면 될 것 같다.

$encodedSecret = "3d3d516343746d4d6d6c315669563362";

 

bin2hex

2진수를 16진수로 변환하는 함수다.

bin2hex(number, [places])

number는 변환하려는 2진수, 10비트를 초과할 수 없다.

places는 사용할 자릿수이다. 반환 값의 앞부분을 0으로 채울 수 있다. 생략하면 필요한 최소 자릿수가 사용된다.

그 외 정보는 위의 링크에서 얻을 수 있다.

 

strrev

문자열을 뒤집는 함수다.

 

Base64 인코딩

binary data를 text로 바꾸는 인코딩이다. 

binary data를 6bit씩 자른 뒤 6bit에 해당하는 문자를 base64 색인표에서 찾아 치환한다고 한다. 

문자열이 3개씩 끊어지지 않을때는 padding문자인 =가 빈자리만큼 들어간다.

 

즉 base64 인코딩을 한 뒤 문자열을 뒤집어서 16진수로 변환한 거 같은데, 이 반대로 수행해보겠다.

php 온라인 컴파일러에서 함수를 반대로 사용해줬더니 oubWYf2kBq값이 나왔다.

 

secret값을 넣어주면 다음 패스워드가 나온다.

 

W0mMhUcRRnG8dcghE4qvk3JA9lGt8nDl

'Over the Wire > natas' 카테고리의 다른 글

[OvertheWire:natas] level 9 → 10  (0) 2021.05.16
[natas] level 8 → 9  (0) 2021.05.09
[natas] level 6 → 7  (0) 2021.04.10
[natas] level 5 → 6  (0) 2021.04.10
[natas] level 4 → 5  (0) 2021.04.04