분류 전체보기 309

64bit에서 FSB (Format String Bug) 이해하기 -(1)

참고자료 : JSec님 블로그(blog.naver.com/yjw_sz/221889244689) 32bit FSB 시리즈 : 32bit에서 FSB (Format String Bug) 이해하기 -(1),(2),(3) 지난 10월... 32bit에서 FSB를 이해했었다. 이제 드디어..! 64bit에서 FSB를 제대로! 이해해보려 한다.(이때까지 문제 푼거는 야매로 문제 푼 것 .. .. ....) 사실 32bit FSB 열심히 공부해놨는데, 정작 문제들은 다 64bit에서의 FSB라서 슬펐다..ㅠ 아무튼~ 시작해 봅시당~ tmi 더보기 초반에는 단순 FSB 개념이기 때문에 32bit에서와 겹친다. 하지만 64bit에서의 특별한 FSB 설명도 있을 수도.. 64bit 함수 호출 규약 함수 호출 규약 : 함수를..

[HackCTF : Pwnable] You are silver 풀이 (64bit, FSB) (수정)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 64bit FSB 잘 몰라서 진짜 대충대충 인터넷에 떠도는 fsb 자료들 보고 야매로 풀었다... ㅎ 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 이름을 입력하니까 입력했던게 출력이 되고, 나보고 silver라고 한다. 그리고 세폴이 뜨며 중지된다. 왜그런거지..?! IDA main을 살펴보자. 저기 대놓고 fsb가 터진다. bof도 터지는데, 쪼잔하게 터져서 RET를 건들수 없다. 문제풀 때 대충 그린건데.... 이해는 갈거라 생각한다. get_tier함수를 살펴보자. 요악하자면 인자가 a1인데, 인자로 들어온게 'K' 즉, 75보다 크면 4를 반환한다. (내가 왜 여기만 보여주는지는 밑에가서 알 수 있을 것) ..

WAR GAME/HackCTF 2021.04.20

[HackCTF : Pwnable] Unexploitable #3 풀이 (64bit, RTC, fwrite)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro RTC 기법으로는 인자를 3개까지 제어할 수 있다. 그런데 fwrite는 인자가 4개이다. 마지막 인자는 어떻게 제어해야 할까...? 가 이 문제의 핵심이다. 주어진 파일은 문제파일 바이너리 Analysis 일단 실행 이전 unex~1,2랑 흐름이 똑같다. IDA main에서 bof가 일어난다. gift 함수가 있는데.... 가젯 안준단다. 너무하다.... How to exploit fwrite로 leak해서 ROP를 진행해야겠다. 그런데 ROPgadget으로 잘 살펴보면 가젯이 부족하다... 이럴때 요긴하게 쓸 수 있는 방법이 아래의 RTC 기법이다. jiravvit.tistory.com/entry/RTC-Return-to-C..

WAR GAME/HackCTF 2021.04.20

[HackCTF : Pwnable] RTC 풀이 (64bit, RTC)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 인텐 풀이. 주어진 파일은 문제파일 바이너리 and libc Analysis jiravvit.tistory.com/entry/HackCTF-Pwnable-RTC-%ED%92%80%EC%9D%B4-64bit-ROP [HackCTF : Pwnable] RTC 풀이 (64bit, ROP) 문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro RTC 기법 공부해보려고 이 문제 풀었는데 호옥시나..?! 하는 마음에 풀어봤더니 성공했다. 주어진 파일은 문제파일 바이너리 and libc Analsysis 일단 실 jiravvit.tistory.com How to exploit RTC 기법 사용 jiravvit.tist..

WAR GAME/HackCTF 2021.04.20

RTC (Return to CSU) (수정)

HackCTF에서 RTC 문제를 풀어보려고 하는데, RTC 기법이 뭔지 잘 몰라서 정리를 해본다.. 개요 64bit ROP를 진행하려면 필요한 gadget들이 있어야 한다. 예를 들면,,, read함수를 실행시킨다고 가정하면,, read함수는 인자가 3개니까 pop rdi, pop, rsi, pop rdx 이렇게 세 인자를 제어하는 가젯이 필요하다. 그런데 가끔 가젯이 모자라거나 없는 경우가 있다. 문제 출제자가 친절해서 저렇게 가젯을 넣어 준 거고.. 필요한 모든 가젯이 바이너리 안에 존재하는 건 드문일이다. 이럴 때 RTC 기법을 쓴다고 한다. RTC (Retrun to CSU) ELF 바이너리는 위 사진과 같이 start → libc_start_main → libc_csu_init → ... → m..

System Hacking 2021.04.19

[HackCTF : Pwnable] RTC 풀이 (64bit, ROP)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro RTC 기법 공부해보려고 이 문제 풀었는데 호옥시나..?! 하는 마음에 풀어봤더니 성공했다. 주어진 파일은 문제파일 바이너리 and libc Analsysis 일단 실행 그냥 종료된다. IDA main을 살펴보자. BOF가 터진다. RET를 건들 수 있다. How to exploit 보호기법 plt, got 다 살아있지만 스택에 shellcode 쓰기와 실행은 불가능하다. ROP하는 쪽으로 방향을 잡아보자. ROP 1. read함수 got를 leak 2. libc base 획득! 3. system('/bin/sh\x00') 실행 write함수를 이용하여 read함수의 got를 leak해보자. 그럴려면 3개의 가젯이 필요하다. p..

WAR GAME/HackCTF 2021.04.19

UMDCTF 2021 후기

대회 정보 : ctftime.org/event/1288 대회 시간 : 2021.04.17 06:00 ~ 2021.04.19 06:00 (KST) 내가 적은 롸업 : jiravvit.tistory.com/entry/UMDCTF-2021-Pwnable-%EB%82%B4%EA%B0%80-%ED%91%BC-%EB%AC%B8%EC%A0%9C%EB%93%A4-%ED%92%80%EC%9D%B4 앞의 세문제는 정말정말 쉬웠다. 웃긴게.. 두번째랑 세번째 문제 바이너리가 똑같고 컴파일 옵션을 다르게 준 문제인 것 같다. 두번째 문제 풀 때, 실수로 세번째 바이너리 다운받아서 익스했는데, 두번째 문제 remote 쉘을 땄다.ㅋㅋㅋㅋㅋㅋㅋ 똑같은 익스코드로 두번째, 세번째 문제 둘 다 풀 수 있었다 ㄷㄷ 그런데 Jump I..

CTF/CTF 후기 2021.04.19

[UMDCTF 2021 : Pwnable] 내가 푼 문제들 풀이

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro 대회 정보 : ctftime.org/event/1288 Jump Not Easy get_flag 함수 덕에 쉽게 풀 수 있었음 from pwn import * #p = process('./JNE') p = remote('chals5.umdctf.io', 7003) e = ELF('./JNE') payload = '' payload += 'a'*(0x40+0x8) payload += p64(e.symbols['get_flag']) p.sendlineafter('\n', payload) p.interactive() Jump Is Easy 64bit ROP (shellcode) ㅎ 사실 이거 Jump Not Working문제 바이너리..

CTF/Write UPs 2021.04.17

[HackCTF : Pwnable] SysROP 풀이 (64bit, SROP)

문제 풀이 환경 : ubuntu 18.04 사용 툴 : IDA 7.5 pro syscall rop는 할 줄 알지만.. syscall 가젯을 못찾겠어서 롸업보고 풀었다 ㅠㅠ 주어진 파일은 문제파일 바이너리 and libc Analsysis 일단 실행 그냥 입력받고 종료한다. IDA read함수 ... bof 발생한다. stripped 된 파일이라서 사용자 정의 함수들이 sub_* 이런식으로 되어있다. 그래서 심볼도 없다. 참고로 stripped 되었다는 것은 실행에 필요한 부분을 제외한 다른부분이 없는 것이다. 컴파일/링크되어 생성된 실행파일에는 symbol table과 section, 컴파일러/링커 관련 내용 등등... 여러가지 실행에는 필요없는 부분이 포함되어 있다. strip은 실행파일의 크기를 줄이..

WAR GAME/HackCTF 2021.04.16