본문 바로가기

CTF/SWING CTF 2023

(16)
[Web] Magic-2 Nop 아래는 페이지 소스 보기. Nop [Web Hacking] PHP extract() function 취약점 (tistory.com) 위 링크를 참고해 PHP extract() function 취약점을 통해 풀 수 있다. extract() 함수는 배열 속의 키 값들을 변수화하는 역할을 한다. $_GET 또는 $_POST 인자도 넘길 수 있으며 넘어오는 파라미터와 값을 변수와 그 초기값으로 설정할 수 있다. 이때 넘어온 인자는 함수 사용 전의 기존 값을 덮어쓸 수 있는(Overw..
[Web] Magic-1 Nop 아래는 페이지 소스 보기. Nop type juggling (tistory.com) Type juggling : 느슨한 비교문자 사용으로 값이 일치하지 않더라도 TRUE 값을 리턴하는 취약점 [Concept] PHP Magic Hash 취약점 (tistory.com) A==B 를 비교하면 자료형이 달라도 데이터만 일치하다면 TRUE 값을 반환하는 이 것을 PHP에서 Magic Hash라고 한다. 이를 방지하려면 A===B라고 표기하자. 여기서 지수 (exponential)을..
[Misc] Nogada 8740번 파일 압축 해제를 하거나 파이썬 코드를 짜거나... 인데... 8500번대에서 컴퓨터가 팟하더니 다 날려서 노가다는 포기하기로 했다. 손가락이 부서지기 이전에 컴퓨터가 못 버티더라. import zipfile import os for i in range(7118,2,-1): a=str(i) zipfile.ZipFile(path="C:\\"+a+".zip").extractall() 코드를 짰는데 자꾸 원인 모를 에러가 나서... 매크로를 활용했다.
[Rev] Unsolvable
[Rev] README Immunity Debugger로 열었더니 아래와 같은 화면이 떴다. Ollydbg x64로 열어보려는데 잘 안되어서... IDA Pro 7.6으로 열어보았다. main IDA View-A F5 눌러서 C언어로 보기 hspace{hey_hey_hey_hey_hey_hey_good_job_lets_go_:D}
[Rev] Simple VM def lets_go(flag, code): registers = [0] * 0x100 flag = [ord(x) for x in list(flag)] pc = 0 while True: if pc == len(code): break cur = code[pc].split('.') pc += 1 if cur[0] == 'A': dest = int(cur[1]) src = int(cur[2]) registers[dest] += registers[src] elif cur[0] == 'B': dest = int(cur[1]) src = int(cur[2]) registers[dest] ^= registers[src] elif cur[0] == 'C': dest = int(cur[1]) src = int(cur[2..
[Rev] Random Defense import random FLAG = b'????' # You must find it! if __name__ == '__main__': random.seed(5952) random_table = bytearray(random.randrange(1, 255) for _ in range(32)) xor_bytes = bytearray(random_table[i] ^ FLAG[i] for i in range(32)) #랜덤한 테이블과 xor random.shuffle(xor_bytes) #xor된 배열을 shuffle assert xor_bytes == b'\x0ea3\x1dq\x98\n\xab\xf9\xec\x95\xd4#\x8d+-,\xa7\x9d\x85\xd1\xf1\xa0\xbb\x89z\xc9\x83..
[Misc] Click Count : 0 부터 시작해서 클릭! 버튼을 누르면 Count가 1씩 증가한다. 클릭! 버튼은 이리저리 옮겨다닌다. 옮겨다니는 위치에 규칙이 있는 것 같지는 않고 그냥 랜덤한 좌표값으로 보인다. 창을 껐다가 켜도 Count가 리셋되지 않는다. 우클릭 후 페이지 소스 보기 혹은 페이지 원본 보기를 누르면, 근데 왜 Count가 같은데 top 과 left px가 달라졌지? 시간 지연을 굳이 넣어준 이유는 컴퓨터가 과열되고 반복이 너무 빠르면 꼬여서 자꾸 이상한 창이 뜨기 때문이다.