CTF 46

[angstromCTF 2021 : binary] 내가 푼 문제들 풀이

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 대회 정보 : ctftime.org/event/1265 (angstromCTF 2021) Secure Login '/dev/urandom' 에서 가져온 flag와 나의 인풋값을 strcmp 함수로 비교하고 똑같으면 flag를 던져주는 문제이다. '/dev/urandom' 에서 flag를 가져오는데, 저게 뭔지 몰라서 구글링을 하다가 '/dev/urandom 취약점' 이란 연관검색어를 발견했다. 하지만 그런 취약점은 없고, /dev/urandom은 정말 무조건 랜덤(예측불가능한) 문자열을 가져온다. 여기서 삽질하지 말 것. strcmp 함수는 문자열 두개를 비교할 때 null이 아닐 경우에 한글자한글자를 비교한다. 만약 null이..

CTF/Write UPs 2021.04.08

[Securinets CTF 2021 : pwn] kill shot 풀이 (seccomp, Full RELRO)(수정)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 처음에 와 내가 절대 못풀겠다;;;;;라고 생각했었는데, 막상 풀고보니... 이 정도는 풀어야 할 것 같다............... ㅠ Summery Using fsb, leak libc/stack address __malloc_hook을 gets 함수로 덮어쓰기 malloc(stack주소) -> gets(stack주소) : BOF trigger ROP openat, read, write Analysis - 보호기법 check 보호기법은 전부 다 걸려 있다. Full RELRO에 주목해보면, 특정 함수의 got를 덮는 것은 되지 않는다. 이 때는 malloc_hook, free_hook, _rtld_global._dl_rtld..

CTF/Write UPs 2021.04.03

[picoCTF 2021 : pwn] 내가 푼 문제들 풀이

picoCTF의 pwn 중에서 푼 문제들만 간단하게 롸업 적어보려고 한다. 위의 문제 정도를 풀었는데 16문제 중 8문제.. 딱 절반만 풀었다. ㅎ Binary Gauntlet 0 fsb 트리거 풀고나서 아이다로 코드 살펴보니, 세폴 뜨면 flag 던져주는 함수가 있었다. Stonks 솔브 수는 굉장히 많았는데 그 많은 솔브 수에 비해 푸는데 정말 오래 걸렸다;;;; fsb 트리거 가능 배열 api_buf에 들어가 있는 것은 문자 하나하나가 들어가 있는 것 주소가 아님, flag 하나하나의 값 10진수나 16진수로 printable한 숫자 범위 정도는 딱 봤을 때 눈치를 까야함 너무 작은 수나 너무 큰 수가 포함 안된 경우라고 이해해도 됨 32~126 0x20~0x7e 여기서 저 빨간 네모 부분을 가져와..

CTF/Write UPs 2021.03.31

[zer0pts CTF 2021] Not Beginner's Stack 풀이 (64bit, shellcode)

문제 풀이 환경 : ubuntu 16.04 사용 툴 : IDA 7.5 pro 3/6 - 3/7 한국시간으로 오후 9시에 끝났다. 풀긴 풀었는데 대회시간 끝나고 풀어서 아쉽다. 아 오늘은 조금 특별하게 존댓말로 작성을 해보겠습니다. 문제 설명에 저렇게 적혀있는데 이거를 약 한시간 뒤에 알았습니다 ㅎㅎ; 암튼 단순히 return address를 덮는 문제가 아니라는 것이군요. 주어진 파일은 이렇게 세개입니다. 소스코드! main.S가 주어집니다. Analysis main.S global _start section .text %macro call 1 ;; __stack_shadow[__stack_depth++] = return_address; mov ecx, [__stack_depth] mov qword [_..

CTF/Write UPs 2021.03.08

[HackingCamp CTF 2021 : pwn] vuln 풀이 (출제자 풀이)

문제 풀이 환경 : ubuntu 16.04 내가 낸 문제이다. 감사하게도 많은 분들이 풀어주셨다. (풀어주신 분들 감사합니다.) 주어진 파일은 문제 바이너리 파일 하나 뿐이다. libc를 일부러 주지 않았다. 예전에 문제를 풀다가 libc파일이 있어야 하는데 없어서 엄청 당황했던 적이 있었다. libc가 없어도 libc database나 우분투 버전이 주어지면 libc파일이 없어도 풀 수 있다는 것을 알려주고 싶었다. (도커 파일이 주어져도 됨) Analysis size를 입력받는다. vuln 함수는 누가봐도 취약점이 터지게 생겼다. 사실 이 문제는 integer overflow가 터지는 문제를 풀고 감명받아서 만들었다. (무슨 문제인지는 비밀이다.) 그 감명받았던 문제도 똑같이 인자 타입이 int로 넘..

CTF/Write UPs 2021.02.25

[HackingCamp CTF 2021 : pwn] Secure Test 풀이 (언인텐)

문제 풀이 환경 : ubuntu 20.04 이번 해캠CTF 때 나왔던 문제이다. 우리 팀장님이 내신 문제인데, 내가 힙을 잘 몰라서 인텐으로 못풀고 언인텐으로 풀었다. ... 크로스체킹 때 언인텐 발견 못해서 죄송할 따름이다. (사실 익스보고도 이해를 못해서 체킹도 못했었다) 이 문제를 풀면서 내가 가진 구버전 IDA로는 디컴이 잘 안되가지고 IDA를 7.5로 업그레이드 시켰다.ㅎㅎ 주어진 파일은 libc 파일, 문제 바이너리 파일, c코드 파일인데 깜빡하고(?) c코드 파일은 보지 않고 풀었다. Analysis 일단 바이너리를 실행시켜보면 이런 느낌이다. 각 메뉴를 실행하면 아래와 같은 함수가 실행된다. vuln() safe() clean() vuln()부터 살펴보자. 16번째 줄에서 read 함수로 ..

CTF/Write UPs 2021.02.24