본문 바로가기

분류 전체보기

(267)
Hcamp2022 Simple_Pwn Write up 코드를 먼저 보게되면 메뉴선택을 하고 1번을 선택할 경우 동적할당을해주고 buf에 name을 입력받는다 그 다음 v5변수에 내용을 입력받는다. 근데 코드를 다시보게되면 name입력받는 부분에서 오버플로우가 발생한다. 하지만 오버플로우가 크게 되지 않으므로 ret를 덮는 시나리오는 되지 않는다. 동적할당된 포인터를 덮는것은 가능하니 포인터를 덮어 원하는곳에 메모리 쓰기가 가능하다. 이런 과정들을 정리해서 시나리오를 짜게되면 1. 마지막 부분 puts에 인자값에 그대로 buf를 넣어주고있으므로 puts got를 printf plt 로 바꿈으로써 포멧스트링을 유도한다. 2. 포맷스트링으로 libc 를 leak 을 한 후 system 함수에 주소를 구한다. 3. 다시 puts got를 system 함수로 바꾸어..
Hcamp Discommunication Write up 복사가 가능한 만큼 size를 지정할 수 있고 원하는 곳에 메모리를 저장 할 수 있다. 이걸 이용해서 Exploit을 진행하면 된다. free got를 printf@plt+6 을 주고 leak을 한다음에 다시 free got를 system 주소로 변환 후 Exploit을 하면된다. 코드는 최대한 간단하게 하였고 익스플로잇을 좀 복잡하게 하고 싶었다. 그게 아마 잘 통한거 같기도 하고... #!/usr/bin/env python from pwn import * #p = process("./chall")\ p = remote("ctf-hackingcamp.com", 50505) #p = remote("localhost", 50505) context.log_level = "DEBUG" #pause() payl..
Virtualbox Escape CVE-2019-2525, CVE-2019-2548 환경 구성: host password : demon123 guest password : 123 Escape Full chain 짜기 위해서는 Memory Leak 이 먼저 필요하다. 그렇기 위해서 CVE-2019-2525 를 이용을 할 것이다. 일단 우리는 CVE를 분석을 하는것이기 때문에 어디서 취약점이 터지는지 알 수 있다. #CVE-2019-2525 "crUnpackExtendGetAttribLocation" 여기서 취약점이 발생한다. 일단 취약점이 무슨 함수에서 터지는지 알았으니 astrogrep 이라는 툴을 활용하여 어디에 존재하는지 찾아봐야한다. unpack_shaders.c 파일에서 취약점이 발생하는 것을 알 수 있다. 여기서 취약점이 발생을 한다고 한다. 일단 READ_DATA는 값을 읽는..
35C3 CTF krautflare Write up 일단 제가 이해한 내용을 적었습니다. 틀린 부분이 존재 할 수 있습니다. 먼저 .patch 파일을 총 3개를 주게 되는데 가장 중요한 피일인 revert-bugfix-880207.patch 파일을 보도록 하겠습니다. 먼저 위에를 보면 kMathexpm1 함수에 Return 값을 Number 에서 PlaneNumber또는 NaN 값으로 바꿔주고 있습니다. 이 정도만 가지고 취약점을 파악하기 힘드니 간단한 POC를 통해서 취약점을 알 수 있습니다. 간단한 소스코드 파일에 대한 설명입니다. 저희는 compiler 라는 디렉토리 안에 존재하는데 typer.cc 파일을 바꿨으니 Turbofan이 작동되야지 이 소스코드가 적용이 된다는 것을 알 수 있습니다. 또한 typer.cc 에 의미를 알았으니 디핑 된 파일이..
v8 turbolizer install & used #Install env : Ubuntu 18.04 해보니까 16.04는 안됬다. v8이 빌드 된 상태에서 v8 디렉토리 들어 간 후 curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - sudo apt-get install -y nodejs sudo apt-get install npm cd ~/v8/v8/tools/turbolizer npm i npm run-script build 이런식으로 빌드를 진행하면 된다. 잘 됬는지 확인하는방법은 마지막 라인에 created build/turbolizer.js in 6.5s 이거 비슷한게 있으면 성공 한거다. Use 구글링을 좀 해보니 turbolizer 는 Chrome 환경에서 진행하는게 더 좋다고 ..
diceCTF flippidy Write up 취약점은 어렵지 않게 찾을 수 있었다. 처음에 size를 홀수 를 주게되면 더블프리가 생기므로 원하는곳에 Write가 가능하다. 근데 여기서 메모리 보호기법이 씨게 걸려있어서 GOT Overwrite가 불가능하다. 그래서 첫번쨰로 생각한 익스 방법은 libc를 덮는 방법이였다. 첫번째 size줄때 홀수인데 사이즐 엄청 크게하면 libc아래에 공간을 할당되게 되는데 여기서부터 libc오프셋을 구한다음 size에 큰 값으로 주작을 쳐서 libc를 덮는 겄이였다. 근데 일단 Heap에는 실행권한이 존재하지 않았다 그래서 stdout을 덮을려고 했는데 생각해보니 flags 와 file no 을 못맛춰줘서 Leak 이 불가능하다. 여기까지 생각해보다가 난 여행을 떠나버렸다... 그래서 지금 짬을 내서 문제를 처음..
Codegate2020 babyllvm Write up 간단하게 설명하면 llvmlite를 이용하여 Brainfuck 구현해 놓았다. llvmlite.readthedocs.io/_/downloads/en/stable/pdf/ llvm 관련된 pdf를 보고 분석을 하였다. Compile 함수에서 codegen 을 실행하여 동작하게 되는데 여기서 rel_pos 를 0으로 맟춰준다. 이걸 좀 이용하면 Whiltelist_cpy 튜플을 0으로 맟춰줄 수 있다. 그래서 이걸 이용하여 OOB가 가능하다. #!/usr/bin/env python from pwn import * p = process("./main.py") #pause() payload = ">" payload += "[>> ", ">>.") p.interactive()
bamboofoxCTF2021 babystack Write up 주말에 놀다가 CTF에 늦게 참여해서 1문제 풀고 잤다. 어렵지 않은 문제였다. 코드도 짧고 취약점도 쉽게 발견된다. 일단 스택을 초기화 해주지 않고있고, strlen 으로 사이즈를 빼주고있다. strlen 은 \x00 으로 쉽게 우회가 가능하다 이걸 이용해서 sfp 까지 덮을 수 있다 익스 시나리오를 짜면 일단 스택에 canary 값과 stack 주소들이 있는데 이걸 leak 한다. 근데 여기서 중요한게 서버가 19.04 인데 이게 스택에 libc를 leak 할수 있는곳이 없다 그래서 어떻게 해야하냐면 SFP를 read ret에 스택 주소로 바꾸면 이제 다음 read를 호출할때 그 스택에 인풋이 가능하다. 그걸로 pop rbp 가젯을 이용한 후 0x00000000004011E5 이 주소로 점프 뛴 후 ..