728x90
반응형
728x90
반응형
728x90
반응형

비트에 몸을 맡겨라!

브포 때려서 말이 되는거 찾아서 넣으면 된다.


blank

whitespace -> directory indexing -> whitespace

vii5ard.github.io/whitespace/

 

Whitelips the Whitespace IDE

Stack: Heap:

vii5ard.github.io


TRUST's math class

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from sympy import *
from pwn import *
 
def cleaneqn(s):
    s = str(s)
    s = s.replace("b'""")
    s = s.replace("=0\\n'","")
    s = s.replace("x","*x")
    s = s.replace("y","*y")
    return s
 
def solveeqn(a1, a2): #연립방정식 풀어서 x와 y값 구하기
    x, y = symbols('x y')
    return eval("solve( [ Eq("+a1+" ,0), Eq("+a2+", 0) ], [x,y] )"#입력 형태 맞춰 넣기가 애매해서 eval함수 사용했습니다.
 
def solve_func(e):
    x, y = symbols('x y')
 
    for i in range(2):
        e[i] = cleaneqn(e[i]) #입력받은 방정식을 sympy가 입력받을 수 있는 형태로 변환
 
    ans = solveeqn(e[0], e[1]) #교점 좌표 구하기
    print(ans[x])
    return ans[x], ans[y]
 
#main
equation = ["0"]*2 #방정식을 저장하기 위함
= remote("n1net4il.xyz"31339)
p.recvuntil("===== TRUST's Math Class =====\n")
for i in range(0100):
    equation[0= p.recvline()
    equation[1= p.recvline()
    for j in range(2):
        print(equation[j])
    x, y = solve_func(equation)
    p.recvuntil(":")
    p.sendline(str(eval(str(x))))
    p.recvuntil(":")
    p.sendline(str(eval(str(y))))
 
p.interactive()
 
cs

Listen PIZ!!

pptx 파일을 zip으로 바꾸고

slide23.xml을 보면

base64 문자열이 있다.

728x90

ultimate hacking defense

vmdk 파일이 주어진다.

ftk imager로 열자

필요한 파일들은 뭘까 문제 지문을 잘 읽어보자.

 

해커가 가장 마지막으로 접속했던 웹사이트에서 해킹툴을 다운받았고, 터미널에서 TRUST 서버를 공격하기 위해 여러 명령어들을 썼다는 정보를 입수했다

마지막으로 접속한 웹사이트, 터미널

인터넷 접속 기록과 터미널 입력 기록을 살펴보면 되겠다.

 

크롬, 파폭, 웨일등의 브라우저가 설치되지 않았다.

바로 ie를 보면 되겠다.

ie 히스토리 (C:\Users\user\AppData\Local\Microsoft\Internet Explorer\Recovery\Last Active\{7A1FA2C8-7768-11EB-94AC-001A7DDA7113}.dat)를 직접 봐도 되겠지만

ie에 마지막으로 입력한 url 기록은 NTUSER.DAT에서도 찾아볼 수 있다.

해당 파일을 추출하여 regripper을 돌려준다.

forensic.korea.ac.kr/DFWIKI/index.php/RegRipper

 

RegRipper - Digital Forensic Wikipedia

Regripper는 Harlan Carvey에서 개발한 레지스트리 분석 도구로 오픈소스로 제공된다. 최신 업데이트는 2013년 4월이며, 최신 버전은 v2.8이다. 본 항에서는 최신버전인 v2.8버전을 사용하였다. Regripper는 C

forensic.korea.ac.kr

해당 페이지에 들어가면 플래그 뒷부분을 얻을 수 있다.

 

 

이어서, 최근 문서에서 consolehost_history.txt를 볼 수 있다.

파워쉘을 사용했다는 것을 알 수 있다.

해당 파일을 찾아 추출하자

C:\Users\Devleo\AppData\Roaming\Microsoft\Windows\Powershell\PSReadLine\ConsoleHost_history.txt

플래그 앞부분 TRUST{ 를 검색하면 된다.

728x90
반응형

'CTF Write Up' 카테고리의 다른 글

BCA CTF 2021 Write up  (0) 2021.03.14
BSidesSF CTF 2021 write up  (0) 2021.03.09
TRUST CTF 2021 write up  (0) 2021.02.28
Tenable CTF 2021 write up  (0) 2021.02.23
Union CTF 2021 Write up  (0) 2021.02.22
darkCON CTF 2021 write up  (0) 2021.02.21
728x90
반응형

2020 Defenit CTF Write-up 6/5 09:00 ~ 6/7 09:00 (UTC, 48h)

 

 

 

Forensic

Baby Steganography

I heared you can find hide data in Audio Sub Bit. Do you want to look for it?

 

 

.wav 파일이 주어진다. 문제 지문을 보면 Audio Sub Bit에 데이터를 숨긴다고 한다.

 

Audio Sub Bit...

 

Sub Bit...

 

SB...

 

LSB?

 

LSB가 아닐까 생각을 해보고서 바로 구글링을 했다.

 

 

 

https://medium.com/@sumit.arora/audio-steganography-the-art-of-hiding-secrets-within-earshot-part-2-of-2-c76b1be719b3

 

Audio Steganography : The art of hiding secrets within earshot (part 2 of 2)

In this article we take a look at methods and tools along with code walk-through for performing Audio Steganography.

medium.com

Audio Steganography : LSB

 

 

포스트를 내리다보면 Python으로 작성된 Decode 코드가 있다. 바로 긁어다가 실행해 보았다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Use wave package (native to Python) for reading the received audio file
import wave
song = wave.open("problem", mode='rb')
# Convert audio to byte array
frame_bytes = bytearray(list(song.readframes(song.getnframes())))
 
# Extract the LSB of each byte
extracted = [frame_bytes[i] & 1 for i in range(len(frame_bytes))]
# Convert byte array back to string
string = "".join(chr(int("".join(map(str,extracted[i:i+8])),2)) for i in range(0,len(extracted),8))
# Cut off at the filler characters
decoded = string.split("###")[0]
 
# Print the extracted text
print("Sucessfully decoded: "+decoded)
song.close()
 
cs

 

Sucessfully decoded: Defenit{Y0u_knOw_tH3_@uD10_5t39@No9rAphy?!}

 

결과는 대성공.

 

 

 

 


Misc

QR Generator

Escape from QR devil!

 

nc 연결을 하자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Let's START!
 
< QR >
1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 
1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 
1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 0 1 1 1 0 1 
1 0 1 1 1 0 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 1 
1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 1 0 1 
1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 
1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 
0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 
0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 1 1 1 1 1 
0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 0 0 1 1 0 1 0 0 1 1 0 1 1 
0 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 1 
1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 
0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 
1 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 
0 1 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 1 
0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 
1 0 0 1 1 0 1 1 1 1 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 1 0 0 1 
1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 
1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 
0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 
1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 
0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 0 0 0 1 0 0 0 0 
1 1 1 1 1 1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 
1 0 0 0 0 0 1 0 1 1 1 1 0 1 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 
1 0 1 1 1 0 1 0 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 
1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 1 1 0 
1 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 
1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 
1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 
 
STAGE 1
>> Time Over!
 
cs

 

1과 0으로 된 qrcode를 보내준다.

 

하얀배경 이미지를 불러와서 값이 1이면 해당 위치의 픽셀의 값을 검정으로 바꾸도록 코드를 쓱-싹 작성해 준다.

하얀배경 이미지는 포토샵을 이용한다. 넉넉하게 200px*200px

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
from pwn import *
from PIL import Image
 
= remote("qr-generator.ctf.defenit.kr"9000)
p.recvuntil('name?')
p.sendline('M4ndU')
img = Image.open('./200.png') #load white background 200*200 image
img = img.convert("RGB")
newData = []
 
qrbin = [0* 200
p.recvuntil('< QR >\n')
for i in range(200):
    data = str(p.recvline())
    data = data.replace("b'""")
    data = data.replace("\\n'""")
    data = data.replace(" """)
    if data == "":
        print(p.recvline())
        break
    qrbin[i] = data
 
for x in range(len(qrbin)):
    if qrbin[x] == 0:
        break
    for y in range(len(str(qrbin[x]))):
        if qrbin[x][y] == "1":
            img.putpixel( (x, y), (000)) #black
 
img.save("./dimg/TransparentImage"+str(n)+".png""PNG")
 
 
p.interactive()
 
cs

 

그러면 이러한 qrcode 이미지를 만들어 낼 수 있다.

(제공되는 qrcode 크기가 제각각 이어서 배경 이미지의 크기에 여유를 주었다. 인식하는데에는 문제가 없었다.)

 

 

이제 이 qrcode를 decoding해서 보내주기만 하면 된다. 그러나 이 과정에서 삽질이 있었다.

 

이 qrcode이미지를 디코딩하는 방법에는 여러가지가 있다.

qrcode를 디코딩해주는 사이트에 리퀘스트 날려서 크롤링하는 방법. (이미지 보내고 크롤링 해야되는 무조건 버리고)

파이썬 모듈을 이용해서 디코딩 하는 방법.

 

qrcode를 디코딩할 수 있는 파이썬 모듈에는 여러가지가 있었다.

 

먼저 qrtools.

 

$sudo pip3 install qrtools

 

      qr = qrtools.QR()

AttributeError: module 'qrtools' has no attribute 'QR'

 

음? (오류 1스택)

파이썬 2로 다시시도..

 

 

$sudo pip install qrtools

 

import qrtools
ImportError: No module named qrtools

 

??????? (오류 2스택)

 

다음 시도한 것이 qrcode

 

 d = qrcode.Decoder()
AttributeError: module 'qrcode' has no attribute 'Decoder'

 

문서에서는 이렇게 쓰라고 나와있었는데 뭐지..(오류 3스택)

 

 

pyzbar를 사용해볼까

>>> decode(img)
[]

 

도대체 되는게 뭡니까(오류 4스택)

 

 

$ sudo pip3 install pyqrcode

$ sudo apt-get install python-qrtools

 

>>> import pyqrcode
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pyqrcode
(오류 5스택)

 

>>> import qrtools

>>> qr = qrtools.QR()

>>> qr.decode("./TransparentImage.png")
False

(오류 6스택)

 

AttributeError: module 'pyqrcode' has no attribute 'Decoder'

(오류 7스택)

 

 

...

 

웹으로 해결할까 생각이 들어서 테스트때 디코딩에 성공했던 ZXng Decode Online에 들어가봤다.

 

https://zxing.org/w/decode.jspx

 

ZXing Decoder Online

 

zxing.org

하단 내용을 보면 오픈소스 프로젝트라고 써있다.

 

혹시 파이썬 모듈도 있나 들어가봤다.

 

pyzxing Python wrapper to ZXing library

 

있다.

 

바로 설치.

 

>>> from pyzxing import BarCodeReader

>>> reader = BarCodeReader()

>>> results = reader.decode( './TransparentImage.png')

>>> results
[{'filename': 'file:///home/mandu/Desktop/p/./TransparentImage.png', 'format': 'QR_CODE', 'type': 'TEXT', 'raw': '0pXenF4L00pza6n9XO45WjUvM4RvBUuoQICQAraBTh1rJIBeYUpxxJFNFsGOQ7DFNZ67QzuP0fNzl8of6j3wfObKWkRuUO1xrn2iMLQl7KCBJ6waeBboITBQRPDYtZUmQmHHa85ll4J', 'parsed': '0pXenF4L00pza6n9XO45WjUvM4RvBUuoQICQAraBTh1rJIBeYUpxxJFNFsGOQ7DFNZ67QzuP0fNzl8of6j3wfObKWkRuUO1xrn2iMLQl7KCBJ6waeBboITBQRPDYtZUmQmHHa85ll4J', 'points': [(3.5, 49.5), (3.5, 3.5), (49.5, 3.5), (46.5, 46.5)]}]
>>> results[0]['raw']
'0pXenF4L00pza6n9XO45WjUvM4RvBUuoQICQAraBTh1rJIBeYUpxxJFNFsGOQ7DFNZ67QzuP0fNzl8of6j3wfObKWkRuUO1xrn2iMLQl7KCBJ6waeBboITBQRPDYtZUmQmHHa85ll4J'

 

성공.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from pwn import *
from PIL import Image
from pyzxing import BarCodeReader
 
= remote("qr-generator.ctf.defenit.kr"9000)
p.recvuntil('name?')
p.sendline('M4ndU')
for n in range(100):
    img = Image.open('./200.png')
    img = img.convert("RGB")
    newData = []
 
    qrbin = [0* 200
    p.recvuntil('< QR >\n')
    for i in range(200):
        data = str(p.recvline())
        data = data.replace("b'""")
        data = data.replace("\\n'""")
        data = data.replace(" """)
        if data == "":
            print(p.recvline())
            break
        qrbin[i] = data
 
    for x in range(len(qrbin)):
        if qrbin[x] == 0:
            break
        for y in range(len(str(qrbin[x]))):
            if qrbin[x][y] == "1":
                img.putpixel( (x, y), (000))
 
    img.save("./dimg/TransparentImage"+str(n)+".png""PNG")
 
 
    reader = BarCodeReader()
    results = reader.decode('./dimg/TransparentImage'+str(n)+'.png')
    print(results[0]['raw'])
 
    p.sendline(results[0]['raw'])
 
p.interactive()
 
cs

 

 

 

 

 

 

 


Minesweeper

Can you solve the minesweeper in one minute?

 

 

1분안에 지뢰찾기를 성공하면 되는 문제.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
     a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   
   -----------------------------------------------------------------
 1 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 2 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 3 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 4 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 5 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 6 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 7 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 8 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 9 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
10 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
11 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
12 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
13 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
14 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
15 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
16 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 
Type the column followed by the row (eg. a5). To put or remove a flag, add 'f' to the cell (eg. a5f). Type 'help' to show this message again.
 
Enter the cell (40 mines left): 
 
cs

 

이런식으로 칸이 주어지고, a1을 입력하면 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
     a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   
   -----------------------------------------------------------------
 1 | 0 | 0 | 0 | 0 | 0 | 1 |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 2 | 0 | 0 | 0 | 0 | 0 | 1 |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 3 | 0 | 1 | 2 | 2 | 1 | 1 |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 4 | 0 | 1 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 5 | 0 | 1 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 6 | 1 | 1 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 7 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 8 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 9 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
10 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
11 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
12 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
13 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
14 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
15 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
16 |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
   -----------------------------------------------------------------
 
cs

주변 3*3범위에 폭탄의 개수를 알려준다.

 

지뢰의 위치에는 깃발을 꽂아야 한다. 저기서는 C4자리에 폭탄이 있으니 c4f를 입력해주어야 한다.

다음으로 지뢰가 없는 c5를 입력하여 나아가도록 한다.

 

이 과정을 자동화 하자.

 

 

http://www.hakank.org/numberjack/minesweeper.py

구글링 해서 찾아낸 지뢰찾기 솔버.

 

사용을 위해서 Numberjack 모듈을 설치해준다.

https://github.com/eomahony/Numberjack

 

eomahony/Numberjack

Python Combinatorial Optimisation Platform. Contribute to eomahony/Numberjack development by creating an account on GitHub.

github.com

X = -1

default_game = [
            [2,3,X,2,2,X,2,1],
            [X,X,4,X,X,4,X,2],
            [X,X,X,X,X,X,4,X],
            [X,5,X,6,X,X,X,2],
            [2,X,X,X,5,5,X,2],
            [1,3,4,X,X,X,4,X],
            [0,1,X,4,X,X,X,3],
            [0,1,2,X,2,3,X,2]
            ]

이렇게 지뢰찾기 배열을 넘겨주면

0 0 1 0 0 1 0 0 
1 1 0 0 1 0 1 0 
0 0 1 1 0 1 0 1 
1 0 1 0 1 1 0 0 
0 1 1 1 0 0 1 0 
0 0 0 0 1 1 0 1 
0 0 1 0 1 0 1 0 
0 0 0 1 0 0 1 0 
Nodes: 3  Time: 0.0

 

0: 지뢰없음 1: 지뢰있음 으로 결과를 출력해준다. 확실하지 않은 곳은 확률을 반환해준다. 이것을 개조했다.

 

문제에 아무 위치 한곳을 입력해주고 그 출력값을 위 코드로 분석하여 확실한 지뢰가 아닌 곳(0)과 지뢰인 곳(1)을 구해낼 수 있다. 지뢰인 곳에는 flag를 세우고 지뢰가 아닌 곳은 입력해서 주변 값들도 알아낸다.

 

이제 다시 맵의 결과값을 바탕으로 위 루틴을 전체를 구해낼 때까지 돌린다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#!/usr/bin/python
"""
This Numberjack model was created by
Hakan Kjellerstrand (hakank@bonetmail.com)
 
See also my Numberjack page http://www.hakank.org/numberjack/
"""
import sys
from Numberjack import *
 
from pwn import *
 
colNum = "abcdefghijklmnop"
 
= -1
alreadyInput = [[0 for ccccc in range(16)] for ddddd in range(16)]
row = [['0' for cola in range(16)] for rowa in range(16)]
gamerow = [[-1 for colas in range(16)] for rowas in range(16)]
 
= remote("minesweeper.ctf.defenit.kr"3333)
p.recvuntil(':')
p.sendline('h7'#중앙을 파면 한 번에 많은 위치를 분석할 수 있지 않을까
 
default_game = gamerow
default_r = 16
default_c = 16
 
#
# Solve the Minesweeper problem
#
def minesweeper(libs, game="", r="", c=""):
 
    # Set default problem
    if game == "":
        game = default_game
        r = default_r
        c = default_c
    else:
        print "rows:", r, " cols:", c
 
    #
    # Decision variables
    # Note: Matrix is defined with cols,rows,...
    #
    mines = Matrix(c,r,0,1)
 
    S = [-1,0,1]  # for the neighbors of this cell
 
    model = Model()
 
    for i in range(r):
        for j in range(c):
            if game[i][j] >= 0:
                model.add(mines[i,j] == 0)
                # this cell is the sum of all the surrounding cells
                model.add(
                    game[i][j] == Sum([mines[i+a,j+b]
                                       for a in S for b in S
                                       if i+a>=0 and
                                          j+b>=0 and
                                          i+a<r  and
                                          j+b<c
                                       ])
                    )
            if game[i][j] > X:
                # This cell cannot be a mine
                model.add(mines[i,j] == 0)
 
    # print model
 
 
    for library in libs:
        solver = model.load(library)
        # print solver
        print ''
        if solver.solve():
            solver.printStatistics()
            print_mines(mines, r, c)
            print 'Nodes:', solver.getNodes(), ' Time:', solver.getTime()
            #while library == 'Mistral' and solver.getNextSolution():
            #    print_mines(mines, r, c)
            #    print 'Nodes:', solver.getNodes(), ' Time:', solver.getTime()
 
        else:
            print "No solution"
            p.interactive()
        print ''
 
#
# Print the mines
#
def print_mines(mines, rows, cols):
    for i in range(rows):
        print i+1,
        for j in range(cols): #이부분을 수정했다. 불확실한 곳은 ?표시
            if len(str(mines[i,j])) > 4:
                print "?",
            else : #확실
                print str(mines[i,j]),
                if str(mines[i,j]) == '1'#지뢰는 플래그를 세우자
                    if alreadyInput[i][j] == 0#중복 입력 방지
                        print(colNum[j]+str(i+1)+"f"+'\n')
                        try:
                            p.send(colNum[j]+str(i+1)+"f"+'\n')
                            p.recvuntil("):")
                        except Exception as e:
                            p.interactive()
                elif str(mines[i,j]) == '0'#지뢰가 아니면 주변을 더 알아내자
                    if alreadyInput[i][j] == 0#중복 입력 방지
                        print(colNum[j]+str(i+1)+'\n')
                        try:
                            p.send(colNum[j]+str(i+1)+'\n')
                            p.recvuntil("):")
                        except Exception as e:
                            p.interactive()
        print ''
 
def print_game(game, rows, cols):
    for i in range(rows):
        print i+1,
        for j in range(cols):
            if game[i][j] == -1:
                print "?"#모르거나 지뢰인 곳은 ?표시
            else :
                print game[i][j],
        print ''
 
 
# file = "minesweeper1.txt"
 
for aa in range(6): #루틴을 몇번 돌릴 것인지. 끝까지 돌리는게 최고지만 정확성이 떨어져서 적당히 맞춰줘야 했다.
    row = [['0' for cola in range(16)] for rowa in range(16)]
    gamerow = [[-1 for colas in range(16)] for rowas in range(16)]
 
    p.recvline()
    p.recvline()
    p.recvline()
    p.recvline()
    p.recvline()
    for i in range(16):
        data = p.recvline()
        row[i] = str(data).split('|')
        p.recvline()
        for j in range(117):
            try:
                if row[i][j] == '   ':
                    gamerow[i][j-1= -1;
                elif row[i][j] == ' F ':
                    alreadyInput[i][j-1= -1 #중복입력을 방지하기 위함. 깃발을 세웠다는건 여기를 더 이상 이 위치를 입력할 필요가 없다는 것
                else :
                    gamerow[i][j-1= int(row[i][j].strip());
                    alreadyInput[i][j-1= 1 #중복입력ㅇ르 방지하기 위함. 이곳의 값이 있다는건 더 이상 이 위치를 입력할 필요가 없다는
            except Exception as e:
                p.interactive()
 
 
    default_game = gamerow
    print_game(default_game, 1616)
    # minesweeper(['NumberjackSolver', 'Mistral'])
    minesweeper(['Mistral'])
    # minesweeper(['SCIP'])
    print "================================================="
    p.sendline("h7")
 
p.interactive()
 
cs

 

 

근데 solver가 완벽하지는 않다. 완벽한 지뢰 위치를 찾아주지 못한다. 그래서 중간에 game over가 나기도 한다.

그래서 약 6번의 루틴을 시도하게 하고, 코드를 수십번 돌려서 운좋게 165행 코드가 실행이 되면 약 3칸정도가 남는다. 이건 눈으로 보고 풀어서 flag를 받을 수 있었다.

 

 

It took you 0 minutes and 17 seconds.

You Win!!!
Defenit{min35w33p3r_i5_ezpz}

 

 

 

 

728x90
반응형

'CTF Write Up' 카테고리의 다른 글

CCE2020 Quals Write-up  (0) 2020.09.26
FIESTA 2020 Write up  (2) 2020.09.07
2020 Defenit CTF Write Up  (2) 2020.06.06
angstrom CTF 2020 write up  (0) 2020.03.14
UTCTF 2020 Write up  (0) 2020.03.07
RiceTeaCatPanda CTF 2020 Write up  (0) 2020.01.22
  1. npk1007 2020.11.17 17:31

    유용한 내용 정말 잘 배우고 가용~

728x90
반응형

MISC

 

Triple Bass 50

base64 몇 번 돌리면 된다.

 

Honamseon

50

-1_0으로 치환 후,

 

6자리는 앞에 00을

7자리는 앞에 0을 붙여주어 8자리를 만들어 준 뒤에

 

아스키코드로 변환하면 된다.

 

 

Brain JS

150

 

두 개의 과정을 거치면 된다.

 

https://enkhee-osiris.github.io/Decoder-JSFuck/

 

 

JSFuck de-obfuscator

JSFuck decoder, de-obfuscator

enkhee-osiris.github.io

 

https://copy.sh/brainfuck/

 

El Brainfuck

A Brainfuck editor & optimizing interpreter, written in JavaScript. The code is converted to JavaScript code and then run in a web worker, which speeds up execution at lot (try mandelbrot.b for example). Load example program hanoi.bf yapi.b hellom.bf numwa

copy.sh

728x90
반응형
728x90
반응형

Misc

Welcome N00b World~!

50

 

디스코드 접속

728x90
반응형
728x90
반응형

지금은 문제가 없어졌다.

 

그냥 브포 문제라서 그런 것 같다.

 

저번 해캠때도 비슷한 브포 문제가 있었는데 출제자 분이 동일했던 것으로 기억한다. (제가 아는 분입니다.)

 

 

이번 문제 내용은 이렇다.

 

import random 
import sys 
url= ['h','t','t','p','s',':','/','/','x','x','x', '.' 'x','x','/','1','2','3','4','5','6','7'] 
 #url is https://xxx.xx/XXXXXXX 
 # flag in this site. #guess what !!!! 
random.shuffle(url) 
for i in range(0,21): 
    sys.stdout.write(url[i]) 
    sys.stdout.flush()

 

이렇게 소스 코드 하나 주고, 출력도 주는.....ㄷ....ㅔ??

 

Aㅏ 따로 저장해두지 않았다....

 

 

출력은 저 구해야 되는 url의 문자들이 랜덤으로 배치된 문자열을 준다.

 

url이 https://xxx.xx/XXXXXXX 이와 같은 형태라고 하는데 xxx.xx을 보고

0. 단축 url이다.

1. bit.ly

을 유추해 냈다.

 

출력값에서 h t t p s : / / b i t . l y / 을 빼내면 A B C D E F G가 남게 된다.

(이 문제는 단순 브포에다가 bit.ly에 5000번 정도를 접속을 해야 하기 때문에 그냥 문자를 ABCDEFG로 바꾸었습니다.

외부 공개된 CTF문제에서도 빠진 것을 보면, 굳이 그대로 올리는 건 좋지 않은 것 같았습니다.)

 

저 7개 문자를 가져다가 순열을 만들어서 다 접속해보면 된다.

 

from itertools import permutations
import requests

a = list(permutations(['A','B','C','D','E','F','G']))
url = "https://bit.ly/"

print(len(a))
for i in range(0, 5041): #4967
    print(i)
    b = a[i]
    b = str(b).replace(",", "")
    b = str(b).replace("(", "")
    b = str(b).replace(")", "")
    b = str(b).replace("'", "")
    b = str(b).replace(" ", "")

    d = url + b
    print(d)

    response = requests.post(d)
    print(response)

 

0. 200 응답만 오는 걸 출력하도록 조건문을 추가하는 것이 더 좋다.

1. 돌리다 보면 request에서 오류가 나는 경우가 있는데, 해당 url 다음 번째부터 다시 코드를 돌려주면 된다.

2. 코드가 잘 돌다가 어느 순간부터 403으로만 응답이 오면 bit.ly로 부터 차단된 것이다. 몇 분 기다렸다가 다시 시도해 c주어야 한다.

 

CTF때, url 하나 접속하고 응답받는데 약 2초정도 걸렸었다. 혼자 돌리는 건 매우 오래걸릴 것 같아서 팀원 2명과 같이 범위를 나누어서 돌렸었는데, 그 중 한분이 구글 콜라보레이터를 알려주시면서 빠르게 코드를 돌릴 수 있었다.

 

4000개쯤 시도했을 때... 이거 다 돌려도 안나오면 어떡하지 라는 걱정을 했었는데 결국 4967번째에서 찾을 수 있었다.

(뒤에서부터 돌릴걸 그랬다.)

728x90
반응형
728x90
반응형

Baseball Price 50

EZ

 

BF 50

-[------->+<]>-.[--->++++<]>+.++.++++++++.[->+++<]>++.>-[--->+<]>-.[----->+<]>++.>--[-->+++++<]>.-[-->+++++<]>.----------.---[->+++<]>+.--------------.[--->+<]>-.------------.[-->+<]>---.-[----->+<]>--.---.-[-->+<]>----.-[----->+<]>--.[-->+<]>-.------[->++<]>-.-[->++++++<]>.---[->++<]>.[-->+<]>-.+[--->++<]>-.-.+[->+++<]>.[--->+<]>-.------------.[-->+<]>-.---[->++<]>-.[--->+<]>+.-.---------.++.[-->+<]>----.++++++[->++<]>.[-->+<]>-----.---[->++<]>.[-->+<]>.+++++[->++<]>.[-->+<]>-----.[--->++<]>--.+++++.[->+++++<]>++.-[->++++++<]>.+++[->++<]>.[-->+<]>---.++[->++<]>.-[--->+<]>.-[++>---<]>+.----.++++.-----[->++<]>-.---[->++++<]>.++.--[->+++++<]>.+++++[->++<]>.[-->+<]>--.-[->++<]>-.-[--->+<]>--.+++++++++.

brainfuck이다.

 

HackCTF{1'm_th1nk1n6_4b0ut_th3_vuln3r4b1l1ty_4n4ly515_pr0j3ct}

 

 

Who am I?

답 : ret

 

 

QRCODE

150

 

4개의 사각형 내부가 하얀색으로 비워져 있다. 그림판으로 해당 부분을 검정으로 채우고 읽으면 된다.

 

 

 

 

달라란 침공

150

nc ctf.j0n9hyun.xyz 9003

 

 

 

1, 2, 3 모두 계산해야 되는 식들이 나온다.

식의 결과값을 입력해주면 된다.

1은 20개 2는 30개 3은 40개의 문제가 있다.

 

 

from pwn import *

p = remote("ctf.j0n9hyun.xyz", 9003)
p.recvuntil("input ) ")
p.sendline("1")
p.recvline()
for zzzz in range(0,20):
    m = p.recvline()
    m = m.replace("\n", "")
    print(m)
    a = eval(m)
    p.recvuntil(": ")
    p.sendline(str(a))
    print(p.recvline())
    print(p.recvline())

p.recvuntil("input ) ")
p.sendline("2")
p.recvline()
for zzzz in range(0,30):
    m = p.recvline()
    m = m.replace("\n", "")
    print(m)
    a = eval(m)
    p.recvuntil(": ")
    p.sendline(str(a))
    print(p.recvline())
    print(p.recvline())

p.recvuntil("input ) ")
p.sendline("3")
p.recvline()
for zzzz in range(0,40):
    m = p.recvline()
    m = m.replace("\n", "")
    print(m)
    a = eval(m)
    p.recvuntil(": ")
    p.sendline(str(a))
    print(p.recvline())
    print(p.recvline())
p.interactive()

 

DNA

200

GTCATAATGCCGGGACTTGGT{ACATTC_CAGAAAAAAATT_GGCTATTCT}

 

 

구글에 ctf dna cryptography 라고 검색을 했다.

 

https://embeddedworld.home.blog/2019/05/16/hacking-walkthrough-ctf-challenge/

이 블로그에서 dna cryptography 부분을 보면 된다.

 

이 블로그에 나와있는 소스코드를 가져다 돌렸다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
mappings = {
    'AAA' : 'a',
    'AAC' : 'b',
    'AAG' : 'c',
    'AAT' : 'd',
    'ACA' : 'e',
    'ACC' : 'f',
    'ACG' : 'g',
    'ACT' : 'h',
    'AGA' : 'i',
    'AGC' : 'j',
    'AGG' : 'k',
    'AGT' : 'l',
    'ATA' : 'm',
    'ATC' : 'n',
    'ATG' : 'o',
    'ATT' : 'p',
    'CAA' : 'q',
    'CAC' : 'r',
    'CAG' : 's',
    'CAT' : 't',
    'CCA' : 'u',
    'CCC' : 'v',
    'CCG' : 'w',
    'CCT' : 'x',
    'CGA' : 'y',
    'CGC' : 'z',
    'CGG' : 'A',
    'CGT' : 'B',
    'CTA' : 'C',
    'CTC' : 'D',
    'CTG' : 'E',
    'CTT' : 'F',
    'GAA' : 'G',
    'GAC' : 'H',
    'GAG' : 'I',
    'GAT' : 'J',
    'GCA' : 'K',
    'GCC' : 'L',
    'GCG' : 'M',
    'GCT' : 'N',
    'GGA' : 'O',
    'GGC' : 'P',
    'GGG' : 'Q',
    'GGT' : 'R',
    'GTA' : 'S',
    'GTC' : 'T',
    'GTG' : 'U',
    'GTT' : 'V',
    'TAA' : 'W',
    'TAC' : 'X',
    'TAG' : 'Y',
    'TAT' : 'Z',
    'TCA' : '1',
    'TCC' : '2',
    'TCG' : '3',
    'TCT' : '4',
    'TGA' : '5',
    'TGC' : '6',
    'TGG' : '7',
    'TGT' : '8',
    'TTA' : '9',
    'TTC' : '0',
    'TTG' : ' ',
    'TTT' : '.'
    }
 
= "GTCATAATGCCGGGACTTGGTACATTCCAGAAAAAAATTGGCTATTCT"
flag = []
 
#Mapping
for x in range(0,len(f),3):
    piece = f[x:x+3]
    flag.append(mappings[piece])
 
print (''.join(flag))
 
cs

 

나온 결과 : TmowOFRe0saapPZ4

{, _, } 을 다시 붙여준다.

 

TmowOFR{e0_saap_PZ4}

플래그 형식 HackCTF와 대소문자 형태는 같다.

caesar를 돌리면 플래그가 나온다.

 

탈옥

250

nc ctf.j0n9hyun.xyz 9002

 

 

builtins 모듈에서 import를 가져오고 os모듈을 import해서 os모듈의 system함수를 가져와 실행한다.

import와 system은 .lower()로 우회

728x90
반응형
728x90
반응형

미슼



5자리 숫자의 패스워드가 걸린 압축파일을 brute force로 풀고

아래 사이트에서 인증하면 되는 것 같다.


advanced zip password recovery 를 이용했다.






짠!


압축을 풀고 PW~.txt를 읽으면 패스워드가 있다.


asjkfhhdkjnxsdfiiuiui1258398298



요걸 인증해주면 플래그가 나온다.


FLAG{0H?!_Did_y0U_s01v3_it??}




728x90
반응형

'WAR GAME > Ch4n3 World' 카테고리의 다른 글

Ch4n3 World [발표자료가 안열려..] 풀이  (0) 2018.11.10
Ch4n3 World [Random Integer] 풀이  (0) 2018.11.10
Ch4n3 World [Brute-Force] 풀이  (0) 2018.11.10
Ch4n3 World [King Sejong] 풀이  (0) 2018.11.10
Ch4n3 World [Reverse!] 풀이  (0) 2018.11.06
Ch4n3 World [Fruit_php] 풀이  (0) 2018.11.06
728x90
반응형

미슼




EBB0A3EBB0A3EB94B0EBB0A6EB8BA4EBA7A3EBB0A3EBB0A2EB94B0EBB0A4EB8BA4EBA7A3EBB09EEBB09DEB94B0EBB095EB8BA4EBA7A3EBB0A3EBB0A3EB94B0EBB09DEB8BA4EBA7A3EBB09CEBB0A3EB94B0EBB09BEB94B0EBB0AAEB8BA4EBA7A3EBB0A1EBB09DEB94B0EBB095EB8BA4EBA7A3EBB0A3EBB0A2EB94B0EBA7A3EBB0A3EBB0A3EB94B0EBB09AEB8BA4EBA7A3EBB09FEBB09EEB94B0EBB0A4EB8BA4EBA7A3EBB0A3EBB0A3EB94B0EBB0A1EB8BA4EBA7A3EBB09EEBB09FEB94B0EBB0A3EB8BA4EBB0A6EB8BA4EBA7A3EBB0A0EBB0A0EB94B0EBA7A3EBB0A4EBB0A2EB94B0EBA7A3EBB09EEBB0A2EB94B0EBB0A3EB8BA4EBB0A6EB8BA4EBA7A3EBB0A6EBB0A0EB94B0EBB095EB94B0EBA7A3EBB0A2EBB0AEEB8BA4EBB0A3EB94B0EBA7A3EBB0A0EBB0A0EB94B0EBB098EB8BA4EBA7A3EBB09EEBB09EEB94B0EBB0A3EB8BA4EBB0A6EB8BA4EBA7A3EBB09DEBB0A0EB94B0EBB098EB94B0EBA7A3EBB0A0EBB09DEB94B0EBB095EB8BA4EBA7A3EBB0A5EBB099EB94B0EBB09BEB8BA4EBB09AEB94B0EBA7A3EBB09AEBB099EB94B0EBB0A5EB8BA4EBB0AEEB94B0EBA7A3EBB0A1EBB0A1EB94B0EBB0A3EB8BA4EBB0A6EB8BA4EBA7A3EBB0A3EBB0A1EB94B0EBB097EB8BA4EBA7A3EBB09EEBB099EB94B0EBB09DEB8BA4EBA7A3EBB09BEBB09AEB94B0EBB09DEB94B0EBB099EB8BA4EBA7A3EBB0A5EBB0A4EB94B0EBB0A6EB94B0EBB0A0EB8BA4EBA7A3EBB0A0EBB0A6EB8BA4EBB0A1EB94B0EBA7A3EBB0ADEBB09CEB94B0EBB09AEB94B0EBB0AAED8380EBA7A3EBB097EBB0A4EB94B0EBB0A6EB94B0EBB09DEB8BA4EBA7A3EBB0A0EBB09DEB94B0EBB095EB8BA4EBA7A3EBB0A6EBB099EB8BA4EBB0ACEB94B0EBA7A3EBB0A6EBB09AEB8BA4EBB0ACEB94B0EBA7A3EBB099EBB09CEB94B0EBB09CEB94B0EBA7A3ED9598


아마 한글과 관련된 문제인 듯 하다.



일단 두글자마다 %를 붙여주어 url 디코딩을 해보았다.


%EB%B0%A3%EB%B0%A3%EB%94%B0%EB%B0%A6%EB%8B%A4%EB%A7%A3%EB%B0%A3%EB%B0%A2%EB%94%B0%EB%B0%A4%EB%8B%A4%EB%A7%A3%EB%B0%9E%EB%B0%9D%EB%94%B0%EB%B0%95%EB%8B%A4%EB%A7%A3%EB%B0%A3%EB%B0%A3%EB%94%B0%EB%B0%9D%EB%8B%A4%EB%A7%A3%EB%B0%9C%EB%B0%A3%EB%94%B0%EB%B0%9B%EB%94%B0%EB%B0%AA%EB%8B%A4%EB%A7%A3%EB%B0%A1%EB%B0%9D%EB%94%B0%EB%B0%95%EB%8B%A4%EB%A7%A3%EB%B0%A3%EB%B0%A2%EB%94%B0%EB%A7%A3%EB%B0%A3%EB%B0%A3%EB%94%B0%EB%B0%9A%EB%8B%A4%EB%A7%A3%EB%B0%9F%EB%B0%9E%EB%94%B0%EB%B0%A4%EB%8B%A4%EB%A7%A3%EB%B0%A3%EB%B0%A3%EB%94%B0%EB%B0%A1%EB%8B%A4%EB%A7%A3%EB%B0%9E%EB%B0%9F%EB%94%B0%EB%B0%A3%EB%8B%A4%EB%B0%A6%EB%8B%A4%EB%A7%A3%EB%B0%A0%EB%B0%A0%EB%94%B0%EB%A7%A3%EB%B0%A4%EB%B0%A2%EB%94%B0%EB%A7%A3%EB%B0%9E%EB%B0%A2%EB%94%B0%EB%B0%A3%EB%8B%A4%EB%B0%A6%EB%8B%A4%EB%A7%A3%EB%B0%A6%EB%B0%A0%EB%94%B0%EB%B0%95%EB%94%B0%EB%A7%A3%EB%B0%A2%EB%B0%AE%EB%8B%A4%EB%B0%A3%EB%94%B0%EB%A7%A3%EB%B0%A0%EB%B0%A0%EB%94%B0%EB%B0%98%EB%8B%A4%EB%A7%A3%EB%B0%9E%EB%B0%9E%EB%94%B0%EB%B0%A3%EB%8B%A4%EB%B0%A6%EB%8B%A4%EB%A7%A3%EB%B0%9D%EB%B0%A0%EB%94%B0%EB%B0%98%EB%94%B0%EB%A7%A3%EB%B0%A0%EB%B0%9D%EB%94%B0%EB%B0%95%EB%8B%A4%EB%A7%A3%EB%B0%A5%EB%B0%99%EB%94%B0%EB%B0%9B%EB%8B%A4%EB%B0%9A%EB%94%B0%EB%A7%A3%EB%B0%9A%EB%B0%99%EB%94%B0%EB%B0%A5%EB%8B%A4%EB%B0%AE%EB%94%B0%EB%A7%A3%EB%B0%A1%EB%B0%A1%EB%94%B0%EB%B0%A3%EB%8B%A4%EB%B0%A6%EB%8B%A4%EB%A7%A3%EB%B0%A3%EB%B0%A1%EB%94%B0%EB%B0%97%EB%8B%A4%EB%A7%A3%EB%B0%9E%EB%B0%99%EB%94%B0%EB%B0%9D%EB%8B%A4%EB%A7%A3%EB%B0%9B%EB%B0%9A%EB%94%B0%EB%B0%9D%EB%94%B0%EB%B0%99%EB%8B%A4%EB%A7%A3%EB%B0%A5%EB%B0%A4%EB%94%B0%EB%B0%A6%EB%94%B0%EB%B0%A0%EB%8B%A4%EB%A7%A3%EB%B0%A0%EB%B0%A6%EB%8B%A4%EB%B0%A1%EB%94%B0%EB%A7%A3%EB%B0%AD%EB%B0%9C%EB%94%B0%EB%B0%9A%EB%94%B0%EB%B0%AA%ED%83%80%EB%A7%A3%EB%B0%97%EB%B0%A4%EB%94%B0%EB%B0%A6%EB%94%B0%EB%B0%9D%EB%8B%A4%EB%A7%A3%EB%B0%A0%EB%B0%9D%EB%94%B0%EB%B0%95%EB%8B%A4%EB%A7%A3%EB%B0%A6%EB%B0%99%EB%8B%A4%EB%B0%AC%EB%94%B0%EB%A7%A3%EB%B0%A6%EB%B0%9A%EB%8B%A4%EB%B0%AC%EB%94%B0%EB%A7%A3%EB%B0%99%EB%B0%9C%EB%94%B0%EB%B0%9C%EB%94%B0%EB%A7%A3%ED%95%98


밣밣따밦다맣밣밢따밤다맣밞밝따박다맣밣밣따밝다맣발밣따받따밪다맣밡밝따박다맣밣밢따맣밣밣따밚다맣밟밞따밤다맣밣밣따밡다맣밞밟따밣다밦다맣밠밠따맣밤밢따맣밞밢따밣다밦다맣밦밠따박따맣밢밮다밣따맣밠밠따반다맣밞밞따밣다밦다맣밝밠따반따맣밠밝따박다맣밥밙따받다밚따맣밚밙따밥다밮따맣밡밡따밣다밦다맣밣밡따밗다맣밞밙따밝다맣받밚따밝따밙다맣밥밤따밦따밠다맣밠밦다밡따맣밭발따밚따밪타맣밗밤따밦따밝다맣밠밝따박다맣밦밙다밬따맣밦밚다밬따맣밙발따발따맣하



이건 아희다.


http://puzzlet.org/doc/aheui/jsaheui_ko.html


FLAG{AHEUI_1$_Th3_b3st_L4nguag3!!} 요렇게 플래그가 나온다.


728x90
반응형

'WAR GAME > Ch4n3 World' 카테고리의 다른 글

Ch4n3 World [Random Integer] 풀이  (0) 2018.11.10
Ch4n3 World [Brute-Force] 풀이  (0) 2018.11.10
Ch4n3 World [King Sejong] 풀이  (0) 2018.11.10
Ch4n3 World [Reverse!] 풀이  (0) 2018.11.06
Ch4n3 World [Fruit_php] 풀이  (0) 2018.11.06
Ch4n3 World [First_Reversing] 풀이  (0) 2018.11.06
728x90
반응형

미슼



brainfuck이라는 언어다.


https://www.dcode.fr/brainfuck-language 디코딩!




이건 base64다.


https://www.base64decode.org/ 디코딩!





링크가 하나 나왔다.




아 이건아니자나.... 포기.

728x90
반응형
728x90
반응형

MISC 미슼






간단히 페이지 소스보는 문제






FLAG : Th1$_15_sT4rt!!


1점짜리 문제 


728x90
반응형

+ Recent posts