728x90

 

처음 문제를 들어가면 이렇게 되어있다. 볼게 없으니 바로 Articles로 들어가보자.

 

이렇게 나온다. 저기 위쪽을 보면 대놓고 xss인것처럼 나타냈지만 이건 그 취약점이 아니다.

 

Create a post를 눌려보면 이렇게 뜬다. 소스 코드를 보자.

 

보면 hidden이 있다. 저기에 버프슈트를 이용하여 아무말이나 쳐보자.

 

 

이렇게 쳐보았다.

 

 

영어를 막아놓은것같은데 일단 제대로 전송은 되는것같다.

 

 

이제 저기 숫자 연산을 쳐보자.

 

 

10-4를 한 결과값이 나온다. 그럼 저기 리버스 쉘을 올리면 되겠다.

 

https://github.com/secjohn/ruby-shells/blob/master/revshell.rb에서 퍼온 리버스 쉘을 url encoding해서 넣어보자.

 

그럼 flag를 찾아서 읽으면된다.

'ctf write-up > RITSEC CTF 2018' 카테고리의 다른 글

What a cute dog! - web  (0) 2018.11.19
The Tangled Web - web  (0) 2018.11.19
Space Force - web  (0) 2018.11.19
728x90

 

문제의 처음 화면은 이렇게 나와있다. 저 일일이 링크를 따라서 가면 반복되는 부분도 있고 막혀있는 부분도 있다. 나는 마인드맵처럼 그림을 그려가면서 하였다.

 

 

그럼 여기까지 올수있는데 뭔가 이상해보인다. 소스코드를 보자.

 

역시 한 페이지가 숨겨져있었다.

 

 

들어가봤는데 또 이렇게 되어있었다. 다시 소스코드를 보자.

 

그럼 이게 보인다. 밑에 주석은 나중에 맨 마지막 문제를 풀 때 쓴다. 위에 저건 base64로 디코딩하면 되겠다. 한번 해보자.

 

 

flag가 나왔다. 이것도 굉장히 귀찮지만 쉬운 문제였다.

'ctf write-up > RITSEC CTF 2018' 카테고리의 다른 글

What a cute dog! - web  (0) 2018.11.19
Crazy Train - web  (0) 2018.11.19
Space Force - web  (0) 2018.11.19
728x90

 

처음 들어가보면 이런 Ship Leaderboard가 있고 배의 이름을 입력할수있는 검색창이 있다. 그럼 간단하게 쿼리를 날려보자.

 

 

이런식으로 날리면 모든 내용을 다볼수있을것이다.

 

 

그러면 이렇게 flag가 나온다. 아주 간단한 문제였다.

'ctf write-up > RITSEC CTF 2018' 카테고리의 다른 글

What a cute dog! - web  (0) 2018.11.19
Crazy Train - web  (0) 2018.11.19
The Tangled Web - web  (0) 2018.11.19
728x90

이 문제는 복호화해주는 사이트랑 압축파일, 암호화된 사진을 주었다. 일단 사이트를 들어가보자.

 

 

나름 신경써서 만든 사이트같다. 암호화는 막혀져있는데 어차피 쓸것도 아니니 신경쓸필요없다. 복호화를 하려면 UUID가 있어야된다. 문제설명에 뭔가 설명이 있었던것같다. 한번 보자.

 

 

UUID를 지웠다고 한다. 그래도 9e4a로 시작되는건 기억하고 있으니 다행이다. 브루트포싱을 한다고 해도 확률이 확 줄거같다. 이제 압축파일을 풀어보자.

 

 

그래도 이번 대회가 좋은게 이렇게 모든걸 다 압축해서 준다. 추후에 풀어보기도 좋을것같다. 일단 PHP파일들을 읽어보자.

 

 

 

decrypt를 쭉 읽다보니 저런게 있다. sql 인젝션이 들어가겠다. 그런데 무작정 하려고 하니깐 안된다. 왜그런지 다른 PHP파일들을 읽어보자.

 

 

조건들이 있었다. 저기에 맞는 조건으로 sql 인젝션을 하면 될것같다. 그럼 쿼리를 대충 짜보면 'or id/*-aaaa-aaaa-aaaa-*/LIKE'9e5a%로 짤수있을것같다.

 

 

 

네이버 글자수세기로 글자수를 보니 글자수도 만족한다. 그럼 바로 넣어보자.

 

 

이렇게 하고 제출을 눌려주면 png파일 하나가 다운받아진다. 열어보자.

 

 

flag가 적혀있다.

 

 

 

 

'ctf write-up > Harekaze CTF 2018' 카테고리의 다른 글

Obfuscated Password Checker - web  (0) 2018.02.12
recursive zip - warmup  (0) 2018.02.12
easy problem - warmup  (0) 2018.02.12
728x90

일단 이 문제는 특별하게 zip파일만 주었다. 내 컴퓨터 서버에서 풀라는것이다. 이렇게 되면 directory traversal이나 여타 다른 공격들을 못쓰게된다. 그러면 일단 압푹을 먼저 풀어보자.

 

 

보면 HTML문서랑 JavaScript파일 하나를 주었다. 일단 저 HTML문서를 열어보자. 기본 설정이 인터넷 익스플로러로 되어있는데 크롬으로 열어주자.

 

워게임에서 많이 볼만한 페이지이다. 소스를 봐도 별게 없었다. 그럼 유일한 해결책인 bundle을 한번 보자.

 

 

난독화되어 있었다. 이걸 첨 봤을때는 그냥 난독화를 풀어야겠다는 생각만 들었다. 그래서 툴도 돌리고 해도 좀처럼 풀리지 않았다. 그래서 고민하고 있던 중에 완전 짱짱 해커형이 크롬 개발자도구로 풀어라고 하셔서 들어가보았다.

 

 

다들 알겠지만 크롬에서 f12를 누르면 들어갈수있다. 저기서 디버깅을 하기위해 새로고침을 눌려준다.

 

 

그리고 f11을 0x991f라는게 call stack영역에 뜰때까지 눌려준다음 local쪽에 보면 저런게 있다. 이제 저기서 data를 눌려주면 스크립트를 실행하면서 변수가 선언된 것들을 볼수있다.

 

 

 

그중에 이렇게 flag값이 있다. 진짜 간단한 문제고 저번에 포스팅도 했던 풀이 방법인데 대회때 바로 안떠올라서 풀기 어려웠던 문제이다. 앞으로 대회할때는 기본적인 공격부터 생각해봐야겠다.

 

 

'ctf write-up > Harekaze CTF 2018' 카테고리의 다른 글

Sokosoko Secure Uploader - web  (0) 2018.02.13
recursive zip - warmup  (0) 2018.02.12
easy problem - warmup  (0) 2018.02.12
728x90

연속으로 많이 압축된 파일 하나를 줬다.

 

 

그냥 이 문제를 받고 풀때는 그냥 계속 압축을 풀어줬다. 그래도 계속 같은 이름으로 나오니깐 자동으로 덮어쓰기 해주는 -o를 사용해서 풀어줬다.

 

 

그러니깐 이렇게 flag가 나왔다.

 

'ctf write-up > Harekaze CTF 2018' 카테고리의 다른 글

Sokosoko Secure Uploader - web  (0) 2018.02.13
Obfuscated Password Checker - web  (0) 2018.02.12
easy problem - warmup  (0) 2018.02.12
728x90

 

이걸 굳이 롸업을 써야되나 싶지만 일단 이 문제는 올해 코게를 준비해서 설치해둔 크롬 확장프로그램으로 아주 간단하게 풀었다.

 

 

저기에 ROT13이 있어서 그냥 눌려주었다.

 

 

그러니 이렇게 flag가 나왔다.

'ctf write-up > Harekaze CTF 2018' 카테고리의 다른 글

Sokosoko Secure Uploader - web  (0) 2018.02.13
Obfuscated Password Checker - web  (0) 2018.02.12
recursive zip - warmup  (0) 2018.02.12
728x90

 

문제의 압축을 풀면 위와 같이 두가지가 주어진다. 일단 miro저기서 .cer파일을 추출해야된다.

 

 

 

그럼 pcap으로 바꿔주자. 바꾸는 방법은 간단하다. pcap파일이 아닌것같다. 그럼 pcap으로 바꿔주자. 바꾸는 방법은 간단하다.

 

 

와이어샤크로 miro를 열어주고 Save As를 클릭해준다.

 

 

 

저장할때 두번째 pcap을 선택해주고 이름을 바꾸어 저장한다.

 

 

그걸 넣으면 잘 들어가는걸 볼수있다. 이제 저걸 한번 보자. 우클릭해서 폴더열기를 하면 볼수있다.

 

 

인증서를 준다. 저걸 공격해서 풀어보자.

 

 

공개키가 주어져있다. 인증서를 공격하는 가장 완벽한 방법은 저걸 소인수분해 하는 것이다.

 

 

일단 yafu라는 소인수분해 툴을 쓸거라서 중간 공백을 없애주었다. 앞에 30부터 81은 공개키가 아니고 뒤에 02부터 01까지도 공개키가 아니다. 수업시간에 배웠는데 일단 뭔지는 기억이 안난다. 하여튼 그부분을 빼고 중간 공백을 없애주었다.

 

 

yafu를 이용해 흔히 말하는 p랑 q를 구해주었다. 이제 저 p랑 q를 이용하여 개인키를 만들어 주자.

 

from socket import *
from ssl import *
import time

def recv_until(s, string):
    result = ''
    while string not in result:
        result += s.recv(1)
    return result

client_socket=socket(AF_INET, SOCK_STREAM)
tls_client = wrap_socket(client_socket, ssl_version=PROTOCOL_TLSv1_2, cert_reqs=CERT_NONE)

print "[+] Connecting with server.."

tls_client.connect(('ch41l3ng3s.codegate.kr',443))

print "[+] Connect OK"

while 1:
    data = recv_until(tls_client, "Input : ")
    print data
    #message
    user_input = raw_input()

    if user_input == "u":
        tls_client.send("9de133535f4a9fe7de66372047d49865d7cdea654909f63a193842f36038d362\n")
    elif user_input == "d":
        tls_client.send("6423e47152f145ee5bd1c014fc916e1746d66e8f5796606fd85b9b22ad333101\n")
    elif user_input == "r":
        tls_client.send("34660cfdd38bb91960d799d90e89abe49c1978bad73c16c6ce239bc6e3714796\n")
    elif user_input == "l":
        tls_client.send("27692894751dba96ab78121842b9c74b6191fd8c838669a395f65f3db45c03e2\n")
    else:
        print "Invalid input!"
        exit()   

client_socket.shutdown(SHUT_RDWR)
client_socket.close() 

 

그리고 위의 코드를 돌리면 나온다고 한다. 물론 지금은 서버가 닫혀서 확인해볼수는 없었다.

 

 

'ctf write-up > Codegate CTF 2018' 카테고리의 다른 글

BaskinRobins31 - pwn  (0) 2018.02.09
RedVelvet - reversing  (0) 2018.02.09
728x90

이 문제는 pwn중에서 가장 많이 풀린 문제이다. 일단 무슨 파일인지 알아보자.

 

 

보면 또 64비트 ELF파일이다. 그럼 실행시켜보자.

 

 

배스킨라빈스 31게임을 한다. 인터넷에서 필승법을 찾아서 시도했지만 쟤가 반칙을 쓰면서 졌다. 그럼 어쩔수 없이 디버깅을 해야겠다.

 

 

만약 이긴다면 저런 문구를 볼수있다. 일단 힌트가 ROP라고 한다.

 

 

일단 checksec을 통해 보호기법을 확인해보자. NX가 걸려있는걸 봐서는 확실히 힌트가 제대로 된것임을 대충 짐작할 수 있다.

 

 

일단 컴퓨터의 입장에서 your turn에 내가 입력을 넣어준다. 그러니 여기서 분명 오류가 나올것이라고 생각하고 보았다. 이 문제에서는 함수 이름을 바꾸지 않아서 금방 찾을 수 있었다. read함수를 보면 숫자를 입력받는데 문자열로 받고 있다. 그래서 오버플로우가 발생한다.

 

 

 

 

 

 

 

 

 

 

 

'ctf write-up > Codegate CTF 2018' 카테고리의 다른 글

Miro - crypto  (0) 2018.02.09
RedVelvet - reversing  (0) 2018.02.09
728x90

이번 ctf에서 가장 많이 풀린 리버싱 문제이다. 일단 어떤 파일인지 먼저 보자.

 

 

file 명령어를 통해 이 문제는 64비트 ELF파일임을 알았다. 이제 한번 실행을 시켜보자.

 

 

보면 flag를 입력하는곳이 있고 틀린 값이 들어오면 그냥 종료시켜버린다.

 

 

gdb-peda를 통해 종료시키는 함수를 찾았다. 일단 angr를 이용해서 풀것이기 때문에 이 주소를 적어두고 main문을 보자.

 

 

gdb-peda로 보면 0x4012aa에 보이는 func1처럼 밑으로 쭉 내리면 여러 함수들을 거치게 되어있다. 0x401277을 보면 글자수가 26글자인것을 알수있다. 일단 그걸 기억해두고 다시 내려보자.

 

 

여기부분이 일단 가장 괜찮아 보였다. 한번 코딩해보자.

 

 

이렇게 angr를 이용하여 코딩을 해주었다. angr 사용법은 나중에 자세히 포스팅 하겠다. 한번 돌려보자.

 

 

 

돌리면 저렇게 flag값이 나온다. 그런데 저게 인증이 안되었다. 그래서 happiness노래 가사를 찾고 b를 a로 바꾸어서 인증을 하니 성공했다.

 

 

이건 gdb-peda를 이용하여 푼것이고 아이다같은 디버거가 편하면 그걸로 풀어도 상관없다.

 

'ctf write-up > Codegate CTF 2018' 카테고리의 다른 글

Miro - crypto  (0) 2018.02.09
BaskinRobins31 - pwn  (0) 2018.02.09

+ Recent posts