
[LOS] wolfman
id가 admin이면 풀린다. 공백문자가 필터링 되어 있다. 공백문자를 필터링되어 있을 경우 %09, %0a, %0b, %0c, %0d, %a0, /**/ 를 사용하면 된다. 따라서 php뒤에 다음과 같이 써주면 된다. id=guest&pw='%09or%09id='admin 풀렸다.
id가 admin이면 풀린다. 공백문자가 필터링 되어 있다. 공백문자를 필터링되어 있을 경우 %09, %0a, %0b, %0c, %0d, %a0, /**/ 를 사용하면 된다. 따라서 php뒤에 다음과 같이 써주면 된다. id=guest&pw='%09or%09id='admin 풀렸다.
페이지 소스를 보자 get방식으로 전달이 된다. 따라서 url을 이용해 전달할 수 있다. 버튼을 눌렀더니 다음과 같이 url이 바뀌었다. 코드를 보자 https://xss-game.appspot.com/level4/frame?timer=('{{ timer }}'); 이런식으로 전달이 되는 것같다 url에 이렇게 적었지만 안된다. 2번 힌트를 보니 다음과 같다. 세미콜론을 decode 하면 될거 같다. 세미콜론의 decode값은 %3b이다. 따라서 ;대신 %3b를 넣으면 될거 같다. 풀렸다.
pw가 존재하고 결과값의 pw와 입력값의 pw가 같아야 한다. addslashes( string $str ) : 큰따옴표, 작은 따옴표 앞에 역슬래시 문자를 붙여주는 함수 이 함수 때문에 앞에서 했던거 처럼 할 수가 없다. 따라서 Blind SQL Injection을 통해 pw를 알아내야 한다. [Blind SQL Injection] Blind SQL Injection은 다음과 같은 상황에서 사용 가능하다. 1. 쿼리문으로 참과 거짓 일때의 서버의 반응을 알 때 2. 원하는 결과를 얻을 데이터베이스의 이름을 알 때 이러한 상황일때 쿼리 문의 ascii, limit, substr 등의 구문을 이용한다. 1. ascii ascii는 ascii(문자) 를 하였을때 해당 문자의 아스키코드를 반환한다. 2. li..
Level 6 -> Level 7 들어가면 다음의 화면이 뜬다. home을 누르면 다음과 같이 뜬다 about을 누르면 다음과 같이 뜬다. 소스코드를 보자 hint가 있다. hint에는 etc/natas_webpass/natas8에 비번이 있다고 한다. home화면에서 뒤에 붙여넣었다. 그랬더니 다음과 같이 뜬다. home/etc/natas_webpass/natas8라는 파일이 없다고 한다. url을 살펴보면 page=home/etc/natas_webpass/natas8라고 되어있다. 그렇다면 page=/etc/natas_webpass/natas8로 바꾸면 원하는 페이지가 나올것이라고 유추할 수 있다. 풀렸다. 비번은 DBfUBfqQG69KvJvJ1iAbMoIpwSNQ9bWe Level 7->Level ..
들어갔더니 다음과 같이 뜬다. id가 admin이어야 풀린다. 그럼 guest를 일단 무력화해야될것이다. 먼저 no에 1을 넣어보았더니 다음과 같이 뜬다. no에 1을 넣으니 Hello guest라 뜨니깐 이 부분이 실행이 되었다는 뜻이고 그말은 no가 1일때 guest라는 뜻일것이다. 그럼 무력화 시킬려면 no에 1을 제외한 값을 넣으면 될거 같다. id='guest'&no=100 or id='admin' 이라고 썼더니 다음과 같이 나온다. admin값을 16진수로 바꿔보았다. 16진수로 바꾸면 0x61646d696e 이다. 이것을 다시 넣어보았다. id='guest'&no=100 or id='0x61646d696e' 라고 쓰면 안된다. id='guest'&no=100 or id=0x61646d696e..
다음의 창이 뜬다. alert()창이 뜨게 하는것이 주목적인거 같다. url 바를 잘 활용하라고 한다. 뭔지 모르겠어서 힌트를 봤다. window.location 을 활용해야 될거 같다. 소스코드를 확인해보면 스크립트 부분에 다음과 같은 코드가 적혀있다. 전체적으로 보았을때 사진을 클릭하면 숫자가 전달이 되고 그 숫자에 대해서 뭔가가 일어나는거 같다. 즉 url에서 #뒤를 변형시키면 될 거같다. 근데 그전에 했던거 처럼 #뒤에 단순히 를 써서는 안될거라고 힌트가 말하고 있다. 그러면 onerror라는 error창을 띄워주는 이벤트를 사용해야 될거같다. url을 다음과 같이 작성하였다. 따옴표로 묶은 이유는 chooseTab에서 인자가 전달이 될때 문자열로 전달이 되기 때문이다. 풀렸다.
Level 4-> Level 5 들어가면 다음의 화면이 뜬다. 접근이 허용되지 않았다고 한다. 페이지 소스를 보자 페이지 소스에서 활용할 수 있는것이 없는 거 같다 저번에 깔았던 burp suite를 활용해야 될거 같다 burp suite에서 저번에 했던거 처럼 설정을 해주고 natas5 페이지에서 새로고침을 하면 다음과 같이 뜬다. 이때 loggedin=0이라고 원래 되어있는데 이것을 loggedin=1로 바꿔준다. 그리고 forward를 누른다. 풀렸다. 비번은 aGoY4q2Dc6MgDq4oL4YtoKtyAg9PeHa1 Level 5->Level 6 들어가면 다음의 화면이 뜬다. secret을 집어넣으라 한다. 소스코드를 확인해보자 코드를 보니 secret변수와 폼을 통해 입력한 값이 같으면 pass..
들어가면 다음과 같은 화면이 뜬다. alert()창이 나오도록 하라는 것 같다. post를 save할 수 있기 때문에 리로드 할 때마다 우리가 어찌어찌해서 alert()창을 실행 시키면 내가 reload 할 때마다 이 레벨은 풀릴 수 있다고 한다. 대충 post를 save한다는 것이 핵심인거 같다. 따라서 먼저 level 1에서 했던거 처럼 alert();라 해주었다. 아무것도 안뜬다. XSS 공격은 script 태그로 공격하는 것도 있지만 자바스크립트 링크로 공격하는 것도 있다. 따라서 자바스크립트 링크로 공격해보자 XSS라고 써주었다. 그랬더니 링크가 뜬다. 눌렀더니 풀렸다. 문제에서 말했던 것이 post 들이 save 되기 때문에 alert()창이 뜨도록 하는 링크를 post에 save하도록 하라는..
들어가면 다음과 같은 화면이 뜬다. id가 admin이면 이 문제는 풀리는 거 같다. md5함수가 있는데 이 함수에 대해 찾아보았다. md5는 128비트의 해시 값을 생성하는 해시 함수이다. md5는 단방향 암호화이기 때문에 출력값에서 입력값을 복원하는 것은 절대 불가능하다. 따라서 pw의 값은 우리가 구할수 없고 그렇기 때문에 필요가 없을 것이다. pw값을 무시하기 위해서는 주석처리를 해야될 것이다. 주석 처리를 하기위해 #을 사용한다. 처음에 php뒤에 id=admin#을 했더니 문제가 풀리지 않았다. #은 %23이므로 %23으로 다시 id=admin%23을 해주었다. 그랬더니 이렇게 나온다. id에 #이 들어갔기 때문에 admin까지 id가 되지 않고 그렇기 때문에 admin만 따옴표로 묶어줘야 될..
Level 2->Level 3 들어가면 다음과 같은 화면이 나온다. 페이지 소스를 확인해보았다. 아무런 정보를 얻을 수 없었다. 심지어 구글에서도 찾을수 없다고 되어있다. 저번에 했던거 처럼 url 끝에 /files를 넣어 접속해 보았더니 페이지가 없다. 문제는 구글에서도 찾을수 없다고 했지만 구글은 만능이기 때문에 구글에 검색해 보았다. robots.txt라는 파일이 있는데 이는 검색 엔진 크롤러에서 사이트에 요청할 수 있거나 요청할 수 없는 페이지 또는 파일을 크롤러에 지시하는 파일이라고 한다. 따라서 구글에서 찾을수 없다는것이 robots.txt 파일을 의미한다. 즉, robots.txt에는 Disallow라고 되어있는 디렉토리가 있음을 확인하였고 이 디렉토리로 접근을 해보자 디렉토리에 접속했더니 ..