CTF/Write UPs 29

[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

[BISC CTF 2020 : pwn] oldschool 풀이

문제 풀이 환경 : ubuntu 16.04.7 처음으로 대회시간 안에 CTF에서 포너블 문제를 풀었다. 쉽고 간단한 문제지만... 기념으로 롸업을 작성해본다 ㅎ 제공된 파일은 두개, libc 파일과 바이너리 문제 파일이다. 먼저 보호기법을 확인해 보았다. 보호기법을 먼저 확인해 보았다. Partial RELRO... GOT overwriting을 하는 문제일까? 이제 IDA로 바이너리를 분석해보자. vuln 함수의 return을 보고 RET를 조작하여 main으로 돌려서 read함수의 got를 system 함수의 주소로 바꾸고 인자를 '/bin/sh'로 주어야겠다고 생각했다. 그 전에 read 함수의 got 주소가 leak되어야 한다. 여기서 주의해야할 게 "Hello BOB" 라는 문자열 뒤에 leak..

CTF/Write UPs 2020.11.30