목록Wargame (39)
Sh4n3e
이번에도 우선 Natas3 문제로 접속해보자 그래 이번에도 이 페이지에는 패스워드가 없구나? 그럼 어딨지?우선은 소스를 한번 보자. 힌트가 적혀있다.""No more information leaks!! Not even Google will find it this time..."정보가 새지 않는단다. 구글도 찾을 수 없을 거란다...이건 뭐지? 하는 사람이 있을 거다.하지만 구글엔진 봇은 항상 인터넷을 떠돌며 정보를 수집하는데, 보통은 robots.txt에 disallow되어있는 곳은 수집이 불가능하다. 그렇기 때문에 구글이 찾을 수 없을 거라고 써놓은 것이다.따라서 우리는 robots.txt로 들어가보면 정보를 얻을 수 있지 않을까 하고 들어가본다. /s3cr3t/의 위치가 Disallow되어 있는 것을..
Natas2 문제를 풀어보자. 링크에 접속하면 아래와 같은 화면을 볼 수 있다. 이 페이지에는 없다고 한다.... 이렇게 문제는 끝났다고 한다...라고 하기엔 너무 아쉽지 않은가 우선 소스를 보러 가보자. 소스를 보는데 구린냄새가 난다. 이전 소스들과는 다르게 img태그가 존재한다.구린냄새가 나면 들어가보자. 하얀색 작은 점 하나가 보인다. 이게 저 pixel.png파일이다. 여기서 끝? 하고 끝낼 수는 없는 일이다.느낌이 온다. pixel.png는 files이라는 디렉터리 안에 존재하는 파일이다.만약 이 페이지에 디렉터리 리스팅 취약점이 존재한다면 우리는 files 디렉터리 안에 있는 파일을 볼 수 있을 것이다.이런 가정하에 한번 natas2.natas.labs.overthewire.org/files/..
문제를 풀어보자.문제 링크로 들어가면 다음과 같은 화면을 우리는 볼 수 있다. 문제에서는 우측 클릭을 막아놨다고 한다. 정말 막혔는지 한번 보자. 정말 막혔다. 그럼 우리는 소스보기를 어떻게 해야할까? 근데 너무나도 간단한 방법이 존재한다.URL 앞에 view-source: 를 붙여주기만 해도 우리는 소스를 볼 수 있다. 문제는 풀렸다. The password for natas2 is ZluruAthQk7Q2MqmDeTiUij2ZvWy2mBi 다음 문제로 넘어가보자.
Natas0 로 접속하면 우리는 아래와 같은 화면을 볼 수 있다. 문제는 "You can find the password for the next level on this page." 라고 말하고 있다.페이지에서 패스워드를 찾을 수 있다는 건데... 정답은 간단하다. 소스보기를 해보자. 패스워드는 "The password for natas1 is gtVrDuiDfck831PqWsLEZy5gyDz1clto" 라고 명시되어 있다. 그럼 다음 문제를 풀어보러 가보자. URL : https://natas1.natas.labs.overthewire.orgID : natas1PW : 위에~
오늘부터 간간히 Natas 문제를 풀어 포스팅하고자 한다. 해당 문제는 아래의 주소로 접속하면 Natas 0로 접속하는 링크와 Id/Pw를 제공한다. http://overthewire.org/wargames/natas/ 들어가보면 페이지의 내용은 아래와 같다. NatasNatas teaches the basics of serverside web-security.Each level of natas consists of its own website located at http://natasX.natas.labs.overthewire.org, where X is the level number. There is no SSH login. To access a level, enter the username for ..
이번 문제는 이전 문제와 비슷하면서도 약간 응용이 필요한 문제이다. 보면 FEBP라고 써있는데, 딱봐도 EBP를 이용해라 라고 말해주고있다. [assassin@localhost assassin]$ cat zombie_assassin.c/* The Lord of the BOF : The Fellowship of the BOF - zombie_assassin - FEBP*/ #include #include main(int argc, char *argv[]){char buffer[40]; if(argc < 2){printf("argv error\n");exit(0);} if(argv[1][47] == '\xbf'){printf("stack retbayed you!\n");exit(0);} if(argv[1][..
해당 문제는 RET에 \xbf와 \x40을 쓰지못하는 문제다.이것은 기존 Stack으로 Return해서 Shellcode를 실행할 수 없고, RTL을 사용할 수 없다.그럼 우리는 딱 argv[1][47]이 \xbf, \x40인 것만 회피하면 된다. 따라서 나는 여기서 main함수의 ret를 다시한번 호출하는 아이디어를 이용했다. [giant@localhost giant]$ cat assassin.c/* The Lord of the BOF : The Fellowship of the BOF - assassin - no stack, no RTL*/ #include #include main(int argc, char *argv[]){char buffer[40]; if(argc < 2){printf("argv e..
이번 문제는 앞의 문제와는 다르게 execve()함수를 이용해서 RTL을 진행해야한다.execve()함수의 속성을 알기위해서는 아래의 주소를 참조한다. 문자열 "/bin/sh" 의 주소값을 얻는 방법과 execve()함수의 주소를 얻는 방법은 이전 문제에서 진행했던것과 동일하다. http://linux.die.net/man/3/execve 아래는 해당 문제의 C코드와 어셈블 코드가 있다. [bugbear@localhost bugbear]$ cat giant.c /* The Lord of the BOF : The Fellowship of the BOF - giant - RTL2*/ #include #include #include main(int argc, char *argv[]){char buffer[40..
해당 문제는 BOF에 Basic RTL을 보면 좀더 쉽게 이해할 수 있다. 아래는 진행관련해서 순서적으로 나열했다. [darkknight@localhost darkknight]$ cat bugbear.c /* The Lord of the BOF : The Fellowship of the BOF - bugbear - RTL1 */ #include #include main(int argc, char *argv[]) { char buffer[40]; int i; if(argc < 2){ printf("argv error\n"); exit(0); } if(argv[1][47] == '\xbf') { printf("stack betrayed you!!\n"); exit(0); } strcpy(buffer, arg..
input box아래에 "select szPwd from T_Web13 where nIdx = '3' and szPwd = '"&pwd&"'"가 존재하는 것을 보면, 이 부분은 SQL Injection으로 풀어야 하는 것을 깨달을 수 있다. 우리가 기본적으로 아는 ‘ or 1 = 1 -- 을 넣었을 때, 다음과 같이 NO! hacking!이라는 Alert창이 뜬다. 이것은 기본적인 SQL injection을 막아놨다라고 봐도 무방하다. SQL injection의 원리는 결국 위의 Query문을 참(True)로 만들어 우회하는 것을 목적으로 한다. 따라서 우리는 다른 방법으로 참을 만들어야 함을 깨닫게 된다. select szPwd from T_Web13 where nIdx = '3' and szPwd =..