반응형
반응형
반응형

javascript puzzle challenge

just enjoy!

 

 

페이지 소스를 통해 qr코드 조각 하나를 보면

<div class="jqp-piece" style="width: 81px; height: 81px; background-image: url(&quot;./img/qr.png&quot;); border-width: 0px; margin: 0px; padding: 0px; position: absolute; overflow: hidden; display: block; visibility: inherit; cursor: default; left: 415px; top: 83px; background-position: -415px -249px;" current="11"><span style="display: none;">24</span></div>

./img/gr.png에서 잘라가져오는 것을 알 수 있다.

 

해당 이미지로 이동하면 완전한 qr코드 이미지를 구할 수 있다.

 

qr코드를 스캔하면 된다.

 

스캔해서 나온 url로 이동하면 플래그가 나온다.

반응형
반응형

click the button!

i can't catch it!

 

 

버튼을 클릭할 수가 없다. 페이지 소스를 보자

 

1
<input type="button" onfocus="nokp();" onclick="window.location='?key=f477';" value="click me!">
cs

 

?key=f477로 이동한다. 직접 url에 쿼리값을 줘서 이동하자

 

http://wargame.kr:8080/flee_button/?key-f477

 

 

 

반응형

'WAR GAME > wargame.kr' 카테고리의 다른 글

Wargame.kr [fly me to the moon] 풀이  (0) 2019.12.23
Wargame.kr [md5 password] 풀이  (0) 2019.08.22
Wargame.kr [WTF_CODE] 풀이  (0) 2019.08.22
Wargame.kr [login filtering] 풀이  (0) 2019.08.22
Wargame.kr [already got] 풀이  (0) 2019.08.21
반응형

can you see HTTP Response header?

 

 

 

 

크롬을 이용하면 된다.

 

 

f12 > Network > f5 > Response Headers

 

 

 

반응형

'WAR GAME > wargame.kr' 카테고리의 다른 글

Wargame.kr [fly me to the moon] 풀이  (0) 2019.12.23
Wargame.kr [md5 password] 풀이  (0) 2019.08.22
Wargame.kr [WTF_CODE] 풀이  (0) 2019.08.22
Wargame.kr [login filtering] 풀이  (0) 2019.08.22
Wargame.kr [flee button] 풀이  (0) 2019.08.21
반응형

Xss game 풀이

level1

level2

level3

level4

 

 

https://xss-game.appspot.com/

 

XSS game

Welcome, recruit! Cross-site scripting (XSS) bugs are one of the most common and dangerous types of vulnerabilities in Web applications. These nasty buggers can allow your enemies to steal or modify user data in your apps and you must learn to dispatch the

xss-game.appspot.com

 

 

level1 풀이

 

alert()을 띄워야 한다.

 

 

쿼리에 <<<>>> 등을 입력했을 때 입력한 그대로 출력한다.

 

그래서 입력칸에 <script>alert(1)</script> 을 입력해주면 페이지에 스크립트가 삽입되면서 문제가 풀린다.

 

 

 

 

level2 풀이

 

 

이번에는 그대로 <script>alert(1)</script> 을 입력했을 때, 페이지에 삽입은 그대로 되는데,

스크립트가 실행이 되지 않는다.

 

 

힌트:

 

1. Note that the "welcome" post contains HTML, which indicates that the template doesn't escape the contents of status messages.

2. Entering a <script> tag on this level will not work. Try an element with a JavaScript attribute instead.

3. This level is sponsored by the letters i, m and g and the attribute onerror.

 

img태그의 onerror속성을 이용해서 스크립트를 실행해야 하는 것 같다.

 

 

<img src="./mandu" onerror="alert(1)">

scr파일을 불러올 떄 해당 파일을 찾을 수 없게 해서 에러를 발생시키도록 한다.

 

 

 

level3 풀이

 

입력할 수 있는 칸은 url칸밖에 없는 것 같다.

 

페이지 소스를 확인했다.

1
2
3
4
5
function chooseTab(num) {
    // Dynamically load the appropriate image.
    var html = "Image " + parseInt(num) + "<br>";
    html += "<img src='/static/level3/cloud" + num + ".jpg' />";
    $('#tabContent').html(html);
cs

 

 

이 num에 들어가는 것을 적절히 입력해주면 될 것 같다.

0.jpg' onerror="alert(1)" '

 

직접 f12눌러서 입력값이 어떻게 들어갔는지 확인하면서 해보면 된다.

 

 

 

 

level4

 

힌트 :

1. Take a look at how the startTimer function is called.

 

함수가 어디서 호출되는지를 보았다.

 

1
2
3
4
5
6
7
<body id="level4">
    <img src="/static/logos/level4.png" />
    <br>
    <img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />
    <br>
    <div id="message">Your timer will execute in {{ timer }} seconds.</div>
  </body>
cs

 

<img src="/static/loading.gif" onload="startTimer('{{ timer }}');" />

t

{{timer}}에 입력한 값이 들어간다. 아래와 같이 되도록 하면 될 것 같다.

 

<img src="/static/loading.gif" onload="startTimer('1'); alert('1');" />

 

input = 1'); alert('1

 

 

 

level5

 

 

 

level6

 

반응형
반응형

아오바 워게임 디스코드

50

플래그는 디스코드 방 안의 가이드라인에 적혀있습니다.

 

 

그렇다. 디스코드 입장해서 flag채팅방 들어가면 플래그가 있다.

 

 

 

카토 목소리

50

[문제 설명] 카토 목소리 너무 귀엽다.
[출제자] 황수민(Xixon)

 

 

다 들으면 플래그를 준다고 한다. 그냥 다 들으면 된다.

 

 

 

XSS의 천적

50

xss의 천적인 나는 누구일까?

본 문제는 플래그 형식이 없습니다.
약자로 입력하신 경우, 대문자로 입력하셔야 합니다.

 

 

xss의 천적이라고 검색하니까 풀이가 먼저 뜨네...

 

CSP

 

 

 

No_Random_No_Life

75

[문제 설명] 확률!!!! 무조건 확률!!!
[출제자] 황수민

nc server2.aover.team 31340

 

 

 

 

 

시원찮은 수민이를 위한 육성방법!!

200

[문제 설명] 사에카노 문제!!!
[출제자] 황수민(Xixon)
[설명] 풀면 ㄴㄷ^^
1번 : OO OO
2번 OOOOO
3번 OOOOO

 

네다^^ 도저히 검색해서 풀 자신이 없다..

답봐야겠...

반응형
반응형

카토 이미지 보고싶다.

200

[문제 설명] 변태 C#
[출제자] 황수민(Xixon)

 

 

exe파일이 하나 주어진다.

Exeinfo PE로 분석해보면 .NET으로 작성된 프로그램임을 알 수 있다.

 

 

dotPeek로 열었다.

업로드 할 파일명이 kato_megumi 이어야 하는 것 같다.

 

 

빈파일 하나 만들어서 이름을 kato_megumi 으로 하고 업로드를 하니 플래그가 나왔다.

 

 

 

 

No_Reverse_No_Life

200

[문제 설명] 허허 풀어 보랑께 노겜노라 시리즈의 시작!!
[출제자] 황수민

 

 

?

반응형
반응형

처음 포렌식과 미슥만 풀 생각으로 시작했다. 근데 대부분 문제가 예선 300점짜리가 나왔고... (솔버0 미슥 300 리벤지!)

점수판이 1000 1000 1000 0 0 0 0 0 0 0 ...이 되버리는 사태가..

거의 대회 마지막까지도 점수판이 1000 0 0 0 0 0 ... 이어서 막판에 힌트가 터져나왔는데, 웹과 포너블만 힌트가 나오고 내가 풀던 포렌식은 힌트가 3개뿐...(그 중 2개는 아는거) 그래서 각 문제에서 솔버가 나온 것이다.

 

 

이번 포렌식 문제의 경우, 포렌식 + 리버싱 + 크립토가 아닌가 싶다.

 

이미지파일 분석해서 바이러스를 찾고, 바이러스 분석해서 암호화된 파일 복호화하기.

이렇게 과정이 2가지인데, 힌트 1번과 2번은 과정1에 대한 것이었고, 힌트 3번은 과정2에 대한 것이었다.

 

과정1의 경우 작년 예선 포렌식100을 풀었었다면 쉽게 풀 수 있다.

 

 

 

 

문제 내용은 대강 이렇다.

스피어 피싱을 당해서 바이러스을 실행시켰고, 그로 인해 파일이 암호화되었다. 바이러스를 찾고 암호화된 파일을 복호화하자!

 

스피어 피싱은 이메일을 통해 이루어진다고 한다. 그래서 이메일 관련 해서 분석을 해보면 된다.

하지만 난 바닥부터 차근차근 해보았다. (사실 처음에 스피어피싱을 제대로 보지 않아서..)

 

 

 

 

일단 \Users\Doctuments에 있는 hwp문서들이 .apworegin 확장자명으로 암호화되어있는 것을 확인한다.

엑세스된 시각은 오전 4:43:04(UTC) = 오후 1:43:04(KST)이다.

 

 

그리고 바이러스 프로그램이 실행되었을테니 프리패치파일을 확인했다.

\Windows\Prefetch

 

폴더 채로 추출해서 내 로컬 프리패치 폴더와 바꿔치기 해서 분석툴로 분석했다.

 

 

비슷한 시간대를 위주로 살펴보면, photoshopsetup.exe이 바이러스파일임을 알 수 있다.

그러나 해당 프로그램의 경로가 나와있지 않는다. 그래서 NTFS log를 분석했다.

 

NTFS Log Tracker을 사용했다. 필요한 파일들의 위치는 아래 블로그를 참고하자.

https://infosecguide.tistory.com/110

 

 

 

파일명으로 검색을 했다.

파일명이 변경되고 실행되고 삭제됨을 알 수 있다. 삭제되었는데 휴지통에서도 찾을 수는 없었다.

파일명이 변경되기 이전을 살펴보았다.

 

 

 

크롬으로 다운로드 되었다.

그래서 크롬 방문기록과 다운로드 기록을 확인하였는데, 해당 파일은 찾을 수 없었다.

여기서 문제를 다시 읽고, 스피어 피싱 = 메일임을 확인했다. 방문기록에 eM Client가 있음을 확인했고, 작년 예선에서 풀어보았기 때문에 해당 프로그램이 이메일 프로그램임을 알고 있었다. 먼저 내 컴퓨터에 eM Client를 설치하고, Appdata\Loaming\ 에 있는 eM Client 파일을 통채로 복사해서 내 컴에 그대로 덮어주고 프로그램을 실행하면 메일 내용을 확인 할 수 있다.

 

 

메일 내용에서 pdf첨부파일을 구할 수 있고, 열어보면 다운로드 링크를 준다.

다운로드 링크를 통해 photoshopsetup.exe을 다운로드 받을 수 있다.

 

 

여기까지 바이러스를 찾는 과정.

다음은 암호화된 파일을 복호화해야한다. 제공된 힌트 3번째 = "파일은 AES로 암호화되었다."

 

 

플래그 형식이 바이러스명_바이러스가 다운로드 된 시각_바이러스를 보낸사람의 이메일 아이디

뭐 이런거면 풀었는데.. 너무 쉽나?

반응형
반응형

Day1은 올클인데 Day2부터 난이도가 높게 느껴졌다...

 

Day3때는 14번 문제 50점 받은것 외엔 문제를 풀지 못했다.

 

 

어떤 문제는 시간초과로 점수를 받지 못했는데, 시간 복잡도를 줄이는 것이 제일 큰 관건이었던 것 같다. (대부분 해결하지 못했다.)

 

 

그리고 코드챌린지와는 채점방식이 달랐다. 코드챌린지는 채점 케이스 하나마다 점수가 있었는데, NYPC는 케이스를 묶어서 종류로 주는데, 이 종류안에 있는 케이스를 모두 통과해야 그 종류에 배정된 점수를 주었다.

 

그래서 야매로 점수를 조금이라도 받는걸 할 수 없었다. 코드챌린지때는 야매로 풀어서 점수를 조금이라도 받은 것이 도움이 되어 본선에 갈 수 있었다.

 

 

어짜피 알고리즘은 공부한 적이 없고 재미로 푸는 거긴 하지만

 

문제 풀이 (python3):

github.com/M4ndU/algorithm_task/tree/master/NYPC2019

반응형
반응형

Moving but not moved

75

[문제 설명] 움직이지 않는 오브젝트는?
[출제자] 정준영(Joon)

 

 

Hxd로 보면 맨 마지막 부분이 PNG의 푸터 시그니쳐다. 헤더 시그니쳐를 찾아서 추출해내면 flag가 나온다.

 

 

 

Archives

100

[문제 설명] 귀여운 아오바가 숨긴 비장의 플래그는 무엇일까?
[출제자] 정준영(Joon)

 

 

pptx파일 하나가 주어진다. 확장자명을 zip으로 바꿔서 ppt > media > image5.png을 열어보면 플래그가 나온다.

 

 

Inside the beat

100

[문제 설명] 비트를 타자
[출제자] 정준영(Joon)

 

 

osz파일이 주어진다. 근데 HxD로 열어보면 파일시그니쳐가 PK, 즉 ZIP파일과 구조가 같음을 알 수 있다.

그래서 zip으로 파일명을 바꿔주고 열어보면 된다.

 

 

그러면 mp3파일을 하나 찾을 수 있고, HxD로 열면 최하단에서 플래그를 찾을 수 있다. 근데 끊어져 있다.

 

그래서 해당 파일 헥스 처음부분을 확인하니 전체부분을 확인할 수 있었다.

 

 

 

Not compressed

100

[문제 설명] 어떻게 압축되었을까?
[출제자] 정준영(Joon)

 

 

 

Hxd로 보면 시그니쳐는 PK로 압축 파일인데 그 다음부분부터는 모두 PNG 부분같다.

 

그래서 헤더를 PNG헤더로 바꿔주었더니 flag을 얻을 수 있었다.

 

 

 

너의 비밀번호는

100

[문제 설명] 최고급 사전을 눈이 아닌 다른것으로 읽어보자.
[출제자] 정준영(Joon)

 

 

사전공격으로 패스워드를 찾아내면 된다.

 

 

 

Note graph

150

[문제 설명] 우리는 음표와 비슷한걸 읽어봐야합니다.
[출제자] 정준영(Joon)

 

 

sonic visualiser을 이용해서 Pane> add spectrugram

플래그!

 

 

 

CAN_YOU_FIND?

250

[문제 설명] 날 찾아줘
[출제자] 황수민

 

 

HxD로 열고 찾기 기능으로 A0V3R을 검색하니 플래그를 찾을 수 있었다.

 

 

 

Extend

300

[문제 설명] 뛰는놈위에 나는놈 있다.
[출제자] 정준영(Joon)

 

 

사진 열어보면 머리카락이라고 한다. 머리카락 = 높이

bmp구조를 봐서 높이 부분의 값을 조금씩 높이다 보면, 플래그가 보이기 시작한다.

 

 

 

카토의 눈은 정말 최고입니다

300

[문제 설명] 마음에 눈으로 보십시오.
[출제자] 황수민(Xixon)

 

 

mp3파일이 하나 주어진다. hxd로 열어서 플래그 찾으니 나온다. 왜????

 

 

 

LAST_SAEKANO

300

[문제 설명] kato_eyes_revenge
[출제자] 황수민

 

mp3파일인데 파일 썸네일을 보면 검을 글자같은게 보인다.

HXD로 열어서 jpg파일 추출해내면 플래그를 확인할 수 있다.

jpg 푸더 시그니쳐는 FF D9이다.

 

 

 

미술품 구매계획

400

[문제 설명] 고가의 미술품을 미리볼 수 있는 프리뷰이다. 한번 둘러보자.
[출제자] 정준영(Joon)

 

 

ppt파일이 주어지는데, 일단 zip으로 바꿔준다.

ppt\media\에 이미지 9개가 있다. 모두 openstego를 써준다.

 

image5.png에서 flag.png가 추출된다. 그런데 flag.png에 이미지가 표시되지 않는다.

hxd로 열어보면 시그니쳐가 png가 아닌 jpg로 되어있는 것을 확인할 수 있다.

시그니쳐를 png로 바꿔주고 다시 열어주면 플래그가 나온다.

Matryoshka Doll

500

[문제 설명] 옛날옛적에 러시아에 살던 어떤 사람이 마트료시카 인형에 중요한 깃발을 숨겨놓았다고 한다. 찾아보자.
[출제자] 정준영(Joon)

 

 

푸터부분을 보면 APNG assembler을 사용한 것을 알 수 있다.

그래서 APNG disassembler을 검색하니까 나오길레 설치해서 해봤다. 2개의 이미지가 나오게 되는데...

 

openstego를 사용하면 docx파일이 하나씩 나온다. (openstego 오랜만에 써본다.)

 

 

flags.docx에서 flag의 절반을 얻을 수 있다.

 

그리고 다시 zip으로 바꿔서 word\fonts.xml을 hxd로 열면 나머지 플래그가 있다.

 

 

정말 많을걸 해야하는 문제...

반응형
반응형

Hand of plus

100

[문제 설명] 귀여운 아오바가 Beatcoin을 채굴하려고 한다. 아오바의 그래픽 카드를 도와주자.
[출제자] 정준영(Joon)

 

 

extract($_COOKIE); 을 사용하고 있다.

구글 확장프로그램을 이용해서 각각 4개의 이름과 값으로 쿠키를 추가해주면 된다.

 

 

 

The great escape

100

[문제 설명] 요원들은 배급받은 키를 쳐야 지령을 받을 수 있다고 한다. 요원들이 받는 지령을 몰래 받아보자.
[출제자] 정준영(Joon)

 

 

1부터 1000까지 브포를 해봤다. 틀렸다. 흠....

 

이것저것 해봤는데 디렉토리 인덱싱이 가능했다.

 

패스워드 찾아서 입력해주면 플래그가 나온다.

 

 

 

핵발사 시스템

300

[문제 설명] 귀여운 아오바가 어딘가로 핵을 쏘고싶어한다. 도와주자.
[출제자] 정준영(Joon)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    if(isset($_POST["Key1"]) && isset($_POST["Key2"]) && isset($_POST["Key3"])){
        if(hash('md5',$_POST["Key1"]) == hash('crc32',$_POST["Key2"])){
            if(hash('crc32',$_POST["Key2"]) == hash("md4"$_POST["Key3"])){
                if(hash("md5"$_POST["Key1"]) == hash("md4"$_POST["Key3"])){
                    echo "<script>alert('[Suzukaze aoba says]\\nThanks a lot! I launched an nuclear to some space!\\n\\nHere\'s a little prize!\\n[FLAG HERE]');</script>"
                }elseecho "3"; Fail(); }
            }elseecho "2"; Fail(); }
        }else{echo "1";  Fail(); }
    }
    function Fail(){ echo "<script>alert('[Suzukaze aoba]\\nT.T... I want to fire nuclear...');</script>"; }
?>
cs

 

매직해시문제 https://www.whitehatsec.com/blog/magic-hashes/

 

md5(Key1) == crc32(Key2) == md4(key3)

 

Key1 = 240610708

Key2 = 2332

Key3 = 48291204

 

반응형

+ Recent posts