문제를 보면 sql 인젝션 문제인 것 같다. 

 

페이지 소스를 보면 hi admin을 출력해야 하는 것 같다. get방식으로 no의 값을 받는다. 

erigi 함수를 보면 sql 인젝션을 방어하기 위해 필터링하는 문자들이 보이는데 공백문자도 필터링하고있다.

이는 %0a 로 우회할 수 있다.

또한 mysql_query 함수를 보면 id는 guest로 지정하고 있고 no값만 get방식으로 받고 있다.

우선 입력창에 1을 입력하면 결과값으로 hi guest가 출력된다. guest의 no 값은 1이다.

admin의 no 값은 1보다 큰 값일 것이라고 추측할 수 있다.

 

url에 get 방식으로 "no=12 or no>1" 을 우회하여 "?no=12%0aor%0ano>1" 을 전달하면 문제가 해결된다.

guest의 no 값은 1 이기 때문에 12는 거짓이므로 뒤에 no>1을 참으로 하여 admin으로 인식되어 문제가 해결된다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[XSS game] Level 2  (0) 2019.08.06
[XSS game] Level 1  (0) 2019.08.06
[webhacking.kr] Challenge 17  (0) 2019.06.13
[webhacking.kr] Challenge 16  (0) 2019.06.08
[webhacking.kr] Challenge 14  (0) 2019.06.06

문제에 들어가면 입력창이 하나가 있다.

소스 코드의 스크립트 부분을 보면

unlock라는 변수에 복잡한 식이 있고, sub라는 함수에서 Password를 출력하는데,

입력값이 unlock라는 값과 같으면 Password를 출력한다.

unlock의 값을 콘솔창에 붙여넣기 하면 저 식의 값을 구할 수 있다.

unlock의 값은 9997809307이고, 이 값을 입력창에 입력하면 Password가 출력된다.

이 Password값을 인증하면 문제가 해결된다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[XSS game] Level 1  (0) 2019.08.06
[webhacking.kr] Challenge 18  (0) 2019.06.21
[webhacking.kr] Challenge 16  (0) 2019.06.08
[webhacking.kr] Challenge 14  (0) 2019.06.06
[webhacking.kr] Challenge12  (0) 2019.06.06

문제를 보면 *이 있고 이 페이지 에서는 힌트가 없을 것 같아서, 페이지 소스를 봤다.

스크립트의 mv함수를 보면 cd의 값에 따라 조건문을 수행한다.

조건문을 수행할 수 있는 cd의 값은 100, 97, 119, 115, 124 인데,

cd가 124 일 경우 location.href를 통해 새 페이지로 이동한다. 이 조건을 만족 시켜야 할 것 같다.

여기 이 값들은 아스키코드의 값이고, 100은 d, 97은 a, 119는 w, 115는 s, 124는 | 이다.

키보드로 | 를 누르면 password를 알려주는 페이지를 볼 수 있다.

이 값을 auth에 인증하면 문제가 해결 된다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 18  (0) 2019.06.21
[webhacking.kr] Challenge 17  (0) 2019.06.13
[webhacking.kr] Challenge 14  (0) 2019.06.06
[webhacking.kr] Challenge12  (0) 2019.06.06
[webhacking.kr] Challenge 15  (0) 2019.03.08

문제에 들어가면 입력창이 하나가 있다.

페이지의 소스를 보면 다음과 같은 스크립트를 볼 수 있다.

위 내용을 해석해보면 ul의 값과 input_pwd(입력값)이 같으면 password를 출력하는데

ul 값은 url에서 ".kr"의 시작위치 곱하기 30을 한 값이다.

http://webhacking.kr/challenge/javascript/js1.html 에서 .kr은 17번째 index에서 시작하고, 17*30=510 이다.

510을 입력하면 password가 출력되고, 이 값을 인증하면 문제가 해결된다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 17  (0) 2019.06.13
[webhacking.kr] Challenge 16  (0) 2019.06.08
[webhacking.kr] Challenge12  (0) 2019.06.06
[webhacking.kr] Challenge 15  (0) 2019.03.08
[webhacking.kr] Challenge 11  (0) 2019.03.07

문제에 들어가면 javascript challenge 라고 되어있고,

페이지의 소스를 보면 다음과 같은 스크립트를 볼 수 있다.

아스키 코드처럼 보이는 난독화된 스크립트를 볼수 있는데 

이 스크립트의 WorkTimeFun을 console.log로 콘솔창에 출력하면 읽을 수 있는 형태가 된다.

이 코드 if안에 있는 값이 우리가 알아내야 할 password 인것 같다.

if문 안에 있는 값을 콘솔에 입력하면 

youaregood~~~~~~! 라는 값이 나오는데 이 값을 인증하면 문제가 해결된다.

'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 16  (0) 2019.06.08
[webhacking.kr] Challenge 14  (0) 2019.06.06
[webhacking.kr] Challenge 15  (0) 2019.03.08
[webhacking.kr] Challenge 11  (0) 2019.03.07
[webhacking.kr] Challenge 10  (0) 2019.03.06

문제를 보면 Access_Denied 라는 경고창이 뜬다.


확인을 눌러보면 password ~~ 하는 문자열이 잠시 나오고 사라진다.

잠시 나올때 그 부분을 캡처하면 다음 내용을 볼 수 있다.


여기서 나온 password값을 인증하면 문제가 해결된다.

50점인 이유가 있는 것 같다..


'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 14  (0) 2019.06.06
[webhacking.kr] Challenge12  (0) 2019.06.06
[webhacking.kr] Challenge 11  (0) 2019.03.07
[webhacking.kr] Challenge 10  (0) 2019.03.06
[webhacking.kr] Challenge 3  (0) 2019.02.21


문제를 보면 pat 라는 변수에 정규식을 저장하고 있다.

정규식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.


그리고 그 밑에줄의 코드를 보면 preg_match() 라는 함수를 사용하고 있는데, 이 함수는 php에서 문자열을 매칭시키는 기능을 한다.

그래서 이 코드를 해석해보면 pat의 값을 val에 GET형식으로 매칭시켜주면 Password를 출력해 주는 것 같다.


다음은 PHP 정규식을 설명한 표 이다. (출처 : https://iam777.tistory.com/m/306)

이 표를 보고 정규식을 해석해보면 1에서 3 사이의 숫자 1개, a에서 f사이의 알파벳 5개, 그리고 \t는 tab를 의미하는데, url 인코딩 하면 %09 이다.

따라서 1aaaaa_.*ip주소.*%09p%09a%09s%09s/가 나온다.


이 변수를 val 파라미터 값으로 넘겨주면 문제가 해결된다.




'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge12  (0) 2019.06.06
[webhacking.kr] Challenge 15  (0) 2019.03.08
[webhacking.kr] Challenge 10  (0) 2019.03.06
[webhacking.kr] Challenge 3  (0) 2019.02.21
[webhacking.kr] Challenge 6  (0) 2019.02.18


10번 문제에 처음 들어가면 볼 수 있는 화면이다.

회색공간의 O에 커서를 가져가면 순간적으로 yOu라고 바뀌는 것을 볼 수 있다.


이 부분의 소스코드를 확인해 보면 다음과 같은 코드가 있다.

코드를 읽어보니 posLeft가 800이 되면 ?go 라는 페이지로 이동하게 되고(if(this.style.posLeft==800)this.href='?go='+this.style.posLeft"),

한번 클릭을 할 때 마다 posLeft가 1씩 증가한다. (onclick="this.style.posLeft+=1)

또한 현재 값은 0이다.


그러나 클릭을 아무리 많이 해도 화면상의 변화가 보이지 않는다.

구글링을 통해 확인해 봤더니 이 문제는 internet explorer 브라우저에서 적용된다고 한다....ㅠ


ie브라우저에서 문제를 다시 확인해보면 여러번 클릭했을 때 다음과 같이 'O' 글자가 이동하는 것을 볼 수 있다.

이것을 800번 누르면 문제가 해결되는것 같은데 800번 누르기는 매우 힘들기 때문에 한 번 클릭씨 800이 증가하게 소스코드를 수정해 주었다.


다음과 같이 800으로 변경하고 한번 클릭하게 되면 left 값이 800이 되어 문제가 해결된다.





'Security & Hacking > Wargame' 카테고리의 다른 글

[webhacking.kr] Challenge 15  (0) 2019.03.08
[webhacking.kr] Challenge 11  (0) 2019.03.07
[webhacking.kr] Challenge 3  (0) 2019.02.21
[webhacking.kr] Challenge 6  (0) 2019.02.18
[SuNiNaTaS] Forensic 31  (0) 2019.02.11

+ Recent posts