Wargame/natas 26

Natas Level 25 풀이

Username: natas25URL: http://natas25.natas.labs.overthewire.org   배드 보이 버비의 인용문이 있다.   언어를 독일어랑 영어로 설정할 수 있는데, 아래와 같이 lang 파라미터가 붙는다.   소스코드를 보면,    // cheers and     // - morla     function setLanguage(){        /* language setup */        if(array_key_exists("lang",$_REQUEST))            if(safeinclude("language/" . $_REQUEST["lang"] ))                return 1;        safeinclude("language/en"..

Wargame/natas 2024.12.31

Natas Level 24 풀이

Username: natas24URL: http://natas24.natas.labs.overthewire.org 이번에도 패스워드를 입력하라고 한다. 소스코드를 보면, 이전 단계와 달리 패스워드의 문자열이 가려져있고, 그냥 정확한 패스워드를 입력해야 풀린다. 처음엔 sql injection 스크립트를 써야하나..싶었는데......다행히 저 strcmp()라는 함수에 대해 찾아본 결과, strcmp()는 배열을 입력받았을 때, 경고를 발생시키고 0을 반환한다고 한다. 0이 반환되면 조건문이 참이 되어 패스워드가 나오게 되므로, 따라서 배열만 입력하면 저 if문을 우회할 수 있다. url에 passwd[] 파라미터만 붙여서 보내면 다음 패스워드가 나온다.

Wargame/natas 2024.12.13

Natas Level 23 풀이

Username: natas23URL: http://natas23.natas.labs.overthewire.org  이번엔 패스워드를 입력하라고 한다.   소스코드를 보면, passwd로 받는 입력값에 iloveyou 문자열이 있고, 그 길이가 10을 넘으면 다음 패스워드가 나온다.  처음엔 iloveyou111 이런식으로 iloveyou뒤에 문자나 숫자를 넣었는데, 안 풀렸었다. 찾아보니 strstr 함수는 부분 문자열이 발견되면, 그 위치부터 문자열의 끝까지만 반환한다고 한다. 따라서 숫자뒤에 iloveyou를 붙여 넣으면, 숫자 뒤의 iloveyou만 반환하고 길이도 10이 넘게 만들 수 있다. 아래와 같이 123iloveyou 를 passwd에 입력하면 다음 단계의 패스워드가 나온다.

Wargame/natas 2024.12.13

Natas Level 22 풀이

Username: natas22URL: http://natas22.natas.labs.overthewire.org  페이지에 아무것도 없다  소스코드를 보면, url에 GET 변수로 revelio 가 있고 admin이면 패스워드를 출력한다. 따라서 url에 revelio 파라미터를 붙여서 보낸 뒤 히스토리를 봤다.  코드 상 admin이 아니면 revelio 파라미터를 붙여도 원래의 홈 페이지(/)로 리다이렉트(302)시키는데, 그 과정에서 natas23 패스워드가 노출되고 있었다.

Wargame/natas 2024.12.12

Natas Level 21 풀이

Username: natas21URL: http://natas21.natas.labs.overthewire.org admin으로 로그인해야한다. 저 실험실 페이지에 들어가면 아래와 같이 hello world! 텍스트의 css 편집을 할 수 있는 입력창이 나온다. 각 페이지의 소스코드를 보면, 이번에도 admin 1 키-값 쌍을 보내야 하나보다. 실험실 페이지 소스코드를 보니 입력받는 css 속성값을 세션에 넣고 있음 $_SESSION 을 디버깅메시지로 화면에 출력하고 있으니까.. 전부 admin으로 입력하고 확인해보았다. 입력한 값들이 그대로 $_SESSION 배열에 들어간 걸 확인할 수 있다.따라서 입력값에 admin 1 만 추가하면 될 것 같다. 세션값 일단 삭제해놓고css 변경 요..

Wargame/natas 2024.12.08

Natas Level 19 풀이

Username: natas19URL: http://natas19.natas.labs.overthewire.org  이번에도 admin으로 로그인해야 하는 문제이다. 소스코드는 지난 단계와 비슷하지만, 세션아이디가 순차적이지 않다고 한다.     username 에는 admin으로, password는 아무거나 입력하면서 세션아이디가 어떻게 나오는지 확인해보았는데,항상 세션아이디 끝자리는 2d61646d696e 로 출력된다. 어떤 규칙으로 인코딩한 게 분명하다. 몇 가지 확인해보았더니 "000-admin" 텍스트를 16진수값으로 변환한 ascii코드였다. 000 자리에는 0부터 999까지의 랜덤숫자로 세션아이디를 생성시키는 듯 하다.     이를 바탕으로 "0-admin"부터 "999-admin"까지 as..

Wargame/natas 2024.05.02

Natas Level 18 풀이

Username: natas18URL: http://natas18.natas.labs.overthewire.org   이번에는 username과 password를 입력하는 칸이 있다.    admin으로 로그인해야 하는데, 소스코드를 보면 $maxid = 640; // 640 should be enough for everyonefunction isValidAdminLogin() { /* {{{ */    if($_REQUEST["username"] == "admin") {    /* This method of authentication appears to be unsafe and has been disabled for now. */        //return 1;    }    return 0;}/* ..

Wargame/natas 2024.04.23

Natas Level 17 풀이

Username: natas17URL: http://natas17.natas.labs.overthewire.org  이번에는 username을 입력하는 칸이 있다.   소스코드를 보면, /*CREATE TABLE `users` (  `username` varchar(64) DEFAULT NULL,  `password` varchar(64) DEFAULT NULL);*/if(array_key_exists("username", $_REQUEST)) {    $link = mysqli_connect('localhost', 'natas17', '');    mysqli_select_db($link, 'natas17');    $query = "SELECT * from users where username=\""..

Wargame/natas 2024.04.13

Natas Level 16 풀이

Username: natas16 URL: http://natas16.natas.labs.overthewire.org 소스코드가 익숙하다.. 찾아보니 natas9->10과 비슷한 문제처럼 보인다. Natas Level 9 → Level 10Username: natas10 URL: http://natas10.natas.labs.overthewire.org 이번에는 특수 문자를 필터링한다고 한다. 소스코드를 보면 입력값에 '/[;|&]/' 가 있으면 "input contains an illegal character!" 을 출력시킨다. 따라서 이00yj.tistory.com 그런데 이번에는 Natas 9 to 10 에서 보다 많은 특수문자를 필터링하고 있으며, key로 받는 입력값도 명령어에 주입되지 않도록 "..

Wargame/natas 2024.04.08