Wargame | CTF/CTF WriteUp

    BCACTF - Basic Pass 3

    netcat을 이용하여 패스워드를 유추하는 문제입니다. 넷켓에 접속하면, 패스워드 입력을 요구받고, 패스워드가 맞으면 해당 패스워드 자리에 1을, 틀리면 0을 반환하여 사용자가 패스워드가 맞는지 틀렸는지 알 수 있도록 하는데요. 간단하게 pwntools 을 이용하여 파이썬 코드를 짜주었습니다. (pwntools은 파이썬 3버전이 안되나봐요.) 넷켓을 remote 함수로 접속해주고, 한자리 씩 증가시키면서 1면 플래그를 추가하도록 했습니다. 정상적으로 잘나오네요

    HSCTF - Return to Sender (Binary)

    매우 기초적인 Bof 문제입니다. 이것도 안한지 오래되서 까먹어서 헤맸습니다.. vuln() 함수내에 있는 get(dest) 를 이용해서 ret 주소를 win() 함수로 변경시키면 되는 문제입니다. 먼저 gdb로 열어준 뒤, set disassembly-flavor intel 명령어로 intel 표현식으로 바꿔줍니다(보기편함) disas vuln 명령어로 확인해본 결과, 해당 함수 내 get 함수는 ebp-0x10 의 주소에있는 버퍼에 문자열을 입력받는것을 알았습니다. 여기서 우리는 ebp 주소를 굳이 알 필요 는 없죠. 버퍼의 주소와 ret 가 있는 주소 까지의 거리만 알면 됩니다. 16 + ebp(4 byte) = 20 byte 총 20바이트만큼 덮어쓰고, ret 주소를 바꿔주면 됩니다. 그러면.. ..

    HSCTF - Networked Password (WEB)

    서버 리스폰스로 flag를 구하는 문제입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 import requests import time import threading url = 'https://networked-password.web.chal.hsctf.com' string = '_-!@#$^&*()~abcdefghijklmnopqrstuvwxyz}ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' password = '' def execute(i): global password data = {'password': password + i } startTime = time.time..

    CBM CTF / WriteUp (web - 45point)

    CBM CTF 입니다. 4/7 03:00 ~ 4/8 03:00 까지 진행됩니다. 웹 45point 문제입니다. 해당 URL로 접근해 줍니다. cool 이라는 버튼하나만 떡하니 있습니다. 버튼을 누르면 destination 이라는 URL 로 이동하게 됩니다. Burp Suite로 site 맵을 확인해 보니, 브라우저 에서는 확인할 수 없었던 Redirection 페이지들이 보입니다. 그 중에 cool9 라는 페이지에서 쿠키 값안에 플래그가 숨어 있습니다.