전체 글
-
[GDG] MindGame (부제: 파이썬에서 c 함수 실행시키기)CTF/pwn 2022. 10. 10. 17:52
개강을 하고 현생에 치이느라 오랜만에 글을 작성한다...! 이번 GDG ctf에서 새로운 파이썬 모듈을 알았기에 글을 적어보려고 한다. 메인 함수에서는 랜덤값을 할당해주고, 입력값과 같은지 체크한다. 난수와 입력값이 같다면, flag 함수를 실행시킨다. scanf의 bof를 통해 난수가 저장되는 변수를 덮을 수 있나 했지만.... 입력 후에 rand로 난수를 할당해주기에 그 방법은 아니었다. 보통 이런 문제는 랜덤 시드값이 일정해 난수 생성 패턴이 일정하다는 취약점이 있지만, srand(time(NULL))을 통해 랜덤 시드를 초기화 시켜주고 있다. 첫 번째로 생각한 방법은 랜덤값을 초기화 해주는 c 파일을 작성한 후에, c 파일의 출력값을 파이썬으로 전달하는 방법을 생각해봤다! 위와 같이 파일을 두 개..
-
[cor] whack a frogCTF/forensic 2022. 8. 15. 16:57
이 문제는 pcap 파일과, 사이트 주소를 하나 준다. https://whack-a-frog.be.ax/ https://whack-a-frog.be.ax/ whack-a-frog.be.ax 이 사이트에서 통신한 기록을 가지고 무엇을 해야하나보다. 우선 wireshark를 통해 pcap 파일을 뜯어보았다. 중간중간에 /anticheat?x=*&y=*&event=* 처럼 통신한 흔적이 보인다. burpsuite로 사이트를 잡아보니 마우스 클릭, 클릭 해제, 이동과 같은 모든 행동에 대해 통신한다는 것을 알 수 있었다. 클릭을 하고 드래그를 하고 이런 저런 행동을 한 것이 모두 pcap 파일에 저장되어 있는 것이다. 우선 tcp 통신에 대한 패킷들만 추려냈다. tcp.stream을 통해 tcp 통신만 추려냈고..
-
[LIT] additionCTF/rev 2022. 7. 25. 15:54
addition이라는 문제이다. 12번째 줄에서 덧셈을 하는 모습이 보인다. v7에 입력을 받고, v5에서는 어떤 값들을 두 개를 더한 뒤, v5와 v7에 입력한 값을 하나씩 비교를 한다. dword_4060과 dword_40c0에 뭐가있는지 우선 알아야겠다. dword_4060, dword_40c0에는 24개의 숫자가 들어있다. 16진수는 보기 불편하니 10진수로 바꿔보자 ?? 42억이 넘는 숫자가 보인다. 다시 소스코드를 봐보자 main에서 dword_40c0[i]만큼 떨어져 있는 주소의 값과 dword_4060[i]의 값과 더한 후, 입력값과 비교한다. 그렇다면 main주소의 값들도 알아야 한다. main 함수 부분을 hex로 본 것이다. 저기 있는 값들도 가져와야한다. 그렇다면 이제 생각해봐야 할..
-
-
[imaginary] roo cookieCTF/web 2022. 7. 19. 11:34
roo Cookie라는 문제이다 누가 플래그를 하도 훔쳐가서 쿠키에 저장했나보다 엄청나게 플래그같은 쿠키가 하나 있다. 쿠키 생성과정이 나와있다! 문자를 유니코드로 변환하고 43을 빼고 1337을 더한다, 그 뒤에 비트 연산을 하는 척 하지만 >> 0이어서 비트는 변함이 없다. 마지막으로 2진수로 변환하고 문자열을 이어붙인다. 저 과정을 반대로 한다면 플래그가 나올 것이다. a = "10110000011101100000011010111001110110000000101011111001010110111110101111011101011100111010100101110100110000101100000001010111110110101111101101001100001010010111010100110100101001..
-
[imaginary] maasCTF/web 2022. 7. 19. 11:05
여러 ctf를 풀며 pwnable만 하는 것이 아닌 web이나 misc, reversing도 풀었지만 블로그에 올리기에는 좀 그런 아주 기초적인 난이도의 문제들이라 올리지 않고 있었다. 하지만 이번 ctf에서 어떤 웹 문제 하나를 풀었기에 라업을 써보려고 한다 쿠키로 인증을 하는 시스템인가보다! from flask import Flask, render_template, request, make_response, redirect from hashlib import sha256 import time import uuid import random app = Flask(__name__) memes = [l.strip() for l in open("memes.txt").readlines()] users = {} ..
-
-
[bcactf] Format FortuneCTF/pwn 2022. 6. 8. 18:02
소스코드이다. 15번째 줄에서 fsb가 발생한다. 그리고 19번째 줄에서 magic의 값이 0xbeef이면 플래그를 출력해준다. magic의 위치는 0x40408c이다. PIE가 없기에 주소를 알아낼 필요는 없을 것 같다 입력 받는 배열의 위치는 6번째(0x4141...)에 있다. 이를 바탕으로 진행해보자. 32비트와 64비트 모두에서 fsb가 발생하지만 64비트에서는 약간의 차이점이 있다 64비트에서는 8바이트씩 데이터를 넣기 때문에 주소값을 입력할 때 NULL(\x00)이 들어간다 이것은 입력 때는 문제 없이 들어가지만 NULL까지 출력하는 printf 특징 때문에 NULL 뒤에 나올 코드가 실행이 되지 않는다. 그래서 위처럼 쓸 수 있는 코드를 위처럼 바꿔줘야 한다. bbbbb를 넣어주는 이유는 8..