level 1과 같이 <script>alert(1);</script> 코드를 주입해보면  위 코드가 필터링 된다.

저 문자열에 있는 여러 문자열을 포함하여 시도해보니 '<알파벳' 을 필터링 하는 것 같다.

script 태그를 사용할 수 없기에 image태그를 이용하여 우회할 수 있다.

<img src=1 onerror="alert(1);">태그를 이용하면 지정한 이미지를 로드할 수 없을 때 alert 코드를 실행시킨다.

위 태그를 주입하면 클리어가 가능하다.

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

[ XSS game] Level 4  (0) 2019.08.07
[XSS game] Level 3  (0) 2019.08.06
[XSS game] Level 1  (0) 2019.08.06
[webhacking.kr] Challenge 18  (0) 2019.06.21
[webhacking.kr] Challenge 17  (0) 2019.06.13

첫번째 문제다.

위에 있는 문제 설명을 읽어보면 alert(경고창)을 띄우라고 한다.

평범한 js코드를 주입하면 문제 클리어가 가능하다

<script>alert(1);</script>

 

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

[XSS game] Level 3  (0) 2019.08.06
[XSS game] Level 2  (0) 2019.08.06
[webhacking.kr] Challenge 18  (0) 2019.06.21
[webhacking.kr] Challenge 17  (0) 2019.06.13
[webhacking.kr] Challenge 16  (0) 2019.06.08

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

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

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

문제를 보면 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

문제를 보면 퍼즐이 있는데 로직 퍼즐 인것 같다.

로직은 숫자만큼 비어있는 칸을 색칠하는 규칙을 가진 형태의 퍼즐이다.

빈 칸을 클릭해보면 검은색으로 칠해진다.

이 퍼즐을 풀어보면 다음과 같은 모양이 나온다.


밑에 gogo 버튼을 누르면 이름을 입력하는 칸이 나온다.

이 칸에 admin이라고 입력하고 write를 누르면 

이런 내용이 나왔다.

여기의 answer값을 인증시켜 보니 답은 아니였다.

다시 name 칸으로 돌아가 소스를 확인해 보니 입력 받는 곳의 코드는 이렇게 되 있었다.


value의 값을 참으로 해주기 위해 위 코드에 or 1 을 추가해 보았다.

1을 입력하고 write를 클릭하니 no hack 라고 나왔다.

or 이라는 문자열을 필터링하는 것 같다.


or과 같은 뜻을 가진 기호인 ||를 사용하여 코드를 수정해 보자.


수정 후 1을 입력하면 다음과 같은 내용이 나오고 answer값을 인증하면 문제가 해결된다.












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

[webhacking.kr] Challenge 11  (0) 2019.03.07
[webhacking.kr] Challenge 10  (0) 2019.03.06
[webhacking.kr] Challenge 6  (0) 2019.02.18
[SuNiNaTaS] Forensic 31  (0) 2019.02.11
[SuNiNaTaS] Forensic 30  (0) 2019.02.10

문제를 보면 힌트에 base64가 있고, index.phps로 들어갈 수 있다.

index에 들어가보면 php 코드들이 있는데 

이 부분을 보면 base64로 20번 인코딩 되어 있는 것을 확인 할 수 있다.

쿠키값을 보게되면 base64로 인코딩 되어 있는 것을 볼 수 있다.


그리고 php코드의 아랫부분을 보면 

디코드 한 아이디와 패스워드의 값이 admin이면 문제가 해결되는 것 같다.


admin을 base64로 20번 디코딩 하면 다음과 같은 값이 나온다.


이 값을 user과 password의 쿠키 값에 넣으면 문제가 해결된다.


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

[webhacking.kr] Challenge 10  (0) 2019.03.06
[webhacking.kr] Challenge 3  (0) 2019.02.21
[SuNiNaTaS] Forensic 31  (0) 2019.02.11
[SuNiNaTaS] Forensic 30  (0) 2019.02.10
[SuNiNaTaS] Forensic 29  (0) 2019.02.09

문제를 보면 파일은 USB 이미지 파일이다.

USB는 FAT32 파일 시스템을 사용한다.

파일을 HxD로 열어보면 

FAT32 파일시스템의 BR은 1섹터(512byte)의 크기를 가지고 있고, 55 AA로 끝난다.

이 USB 이미지를 보면 BR부분이 망가져 있다.

처음부터 55 AA 까지의 길이는  296이므로 512byte가 되려면 296 byte 만큼 00 으로 추가 해 주어야 한다.

파일을 저장하고 FTK Imager 이라는 툴을 이용해 이 이미지 파일을 열면 

2차 테러 계획이라는 파일이 보인다.

이 파일을 다운로드 받아 속성을 보면 

문서의 수정 일시는 2016-05-30_11:44:02 이고,

테러 장소는 Rose Park 이다. 


이 답들을 조합하여 md5로 해시하면 문제가 해결된다.







+ Recent posts