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

우리는 흔히 공백을 제거해야 되는 경우를 겪는다. 그럴때 어떻게 해야 공백을 제거할수 있을지 고민하다가 파이썬으로 한번 코딩해보기로 했다.

 

 

저렇게 중간 공백을 제거해줄 수 있다.

 

 

또한 replace를 통해 간단하게 바꿀수도 있다.

 

 

저렇게 쓰면 양 옆에 공백을 제거해준다.

 

 

그리고 저렇게 쓰면 중복된 공백을 제거해준다.

 

일단 파이썬을 이용한 간단한 공백 제거에 대해 알아보았다.

 

728x90

코게 2018문제를 풀다가 큰 수를 소인수분해해야될 일이 생겼다. 파이썬으로 코딩을 해도 시간이 엄청 걸릴것같아서 툴을 찾아보다가 yafu라는 툴을 알게 되었다.

 

https://sourceforge.net/projects/yafu/ 

 

일단 저 사이트에서 다운을 받자.

 

 

압축을 풀면 저렇게 구성되어 있다. 딱봐도 cmd같은곳에서 실행하게 생겼다. 일단 그러면 환경변수 설정부터 해두자. 어떻게 하는지는 다 알겠지만 일단 혹시나 해서 이번만 설명을 하겠다.

 

1. 제어판 -> 시스템 및 보안 -> 시스템

 

2. 내 PC 우클릭 -> 속성

 

 

위의 두가지 방법중 아무거나 사용하면 된다. 그렇게 들어간 다음 고급 시스템 설정을 클릭한다.

 

 

그리고 고급을 클릭한다.

 

 

 

그다음 환경변수를 클릭한다.

 

 

 

그리고 Path를 더블클릭해준다. 들어가서 새로 만들기를 클릭한후에 아까 yafu를 깔았던 곳으로 가자.

 

 

위에 주소창을 클릭하면 저렇게 경로가 뜬다. 저걸 복붙해주고 확인을 클릭하면 환경변수 설정이 된다. 물론 yafu말고 모든 환경변수 설정을 이렇게 하면 된다.

 

 

 

이제 명령 프롬프트를 들어가서 yafu-x64를 실행시켜보자. 위의 사진처럼 오류가 안나면 성공한것이다.

 

 

사용방법은 yafu-x64 factor(숫자) -threads2를 해주면된다. 물론 threads를 안하면 1로 기본 세팅된다. 보통 그냥 기본 세팅으로 하면 될것이다.

 

 

계산기를 보니 저기 3223857은 0x313131에 대한 10진수 값이다.

 

 

10진수를 넣으면 그냥 그 10진수가 나온다.

 

 

 

내가 풀 n은 띄워져 있어서 되는지 봤더니 그건 안되는것같다.

 

 

 

그럼 파이썬으로 코딩해서 공백을 없애주자!

 

 

이렇게 나온다. 다 나오기를 기다릴려고 했는데 너무 오래걸릴 것 같아서 그냥 중간과정만 캡쳐했다. 하여튼 이렇게 yafu라는 툴을 쓰면 된다.

 

 

'Hacking > Tool' 카테고리의 다른 글

NoSQLMap  (0) 2018.01.22
gdb-peda  (0) 2018.01.09

+ Recent posts