전체 글
[0x41414141 CTF] Only Pwnable Writeup
moving-signals There's only __start function. It consists of simple assemblies. Given that there are no NX bit, it seems to e a problem using shellcode(asm). In addition, /bin/sh is at 0x41250. I will use the following payload to leak the stack address. (ROP, RTL chain) payload = 'A'*8 + p64(0x41018) + p64(0x1) + p64(0x41000) + p64(0x41018) + p64(0x0) + p64(0x41000) It is a payload that sets rax..
[HackCTF] wishlist (500p) 풀이 및 알게 된 점
풀이 canary는 없고 Partial RELRO만 걸려있다. (stripped binary) input 함수에서 값을 입력받고 add_wish, view_wish, delete_wish 함수를 실행한다. input 함수에서는 BOF가 발생한다. buf는 0x10칸이지만 0x20칸을 입력받으므로 SFP와 RET를 덮을 수 있다. 새로 알게 된 기법 - Stack Pivoting Stack Pivoting은 SFP와 RET를 덮을 수 있을 때 사용할 수 있는 공격 기법이다. Stack Pivoting은 크게 2단계로 나뉜다. stage #1 - RBP Control 보통 read 함수와 같은 입력 함수는 RBP를 기준으로 입력을 받는다. BOF에서 SFP를 임의 주소로 덮고 RET를 입력 함수의 인자가 세..
[HackCTF] AdultFSB 풀이 (700p)
풀이 이번 FSB 문제에는 FULL RELRO가 걸려있다. AdultFSB 문제는 read 함수에서 넉넉하게 문자열을 입력 받고 총 2번 반복한다. 마찬가지로 printf 에서 FSB가 발생한다. 특이한 점은 exit(0);이 있다는 것이다. 이번 문제는 HackCTF FSB 문제중 제일 빨리 풀었던 것 같다. 전에 FULL RELRO 풀다가 exit 함수에서 free 함수를 call 한다는 사실은 알고 있었기 때문이다. 그러나, 자세하게 어떻게 exit 함수에서 free 함수를 call 하는지는 몰랐는데 이번 문제를 풀면서 새롭게 알게 되었다. kali 2019 version 기준으로 설명하겠다. 실제 문제 풀이를 위해서는 알맞은 문제 서버에 맞는 libc를 사용해야 한다. 먼저 exit 함수는 __r..
[HackCTF] Unexploitable_4 (600p) 알아간 내용
풀이 및 알아간 내용 특이하게 Partial RELRO를 제외하고 모든 보호 기법이 해제되어 있다. s는 [rbp-0x10]에 위치하지만, fgets 에서 0x2C 만큼을 입력받아 BOF가 발생한다. 그런데, RTL Chain을 구성하기에는 너무나도 페이로드의 길이가 짧아질 것이다. 우리는 여기서 SFP를 Control 하여 fgets의 rsi 인자를 수정할 것이고, RET로 fgets의 인자가 setting 되는 주소로 돌아가 필요한 만큼 재입력을 받을 것이다. SFP를 수정한 채로 RET로 돌아가면 fgets의 rsi가 [rbp-0x10]을 가리키고 있기 때문에 원하는 주소에 값을 적어줄 수 있다. 해당 문제에서는 RWX가 켜져 있으므로 bss 근처에다 입력을 받으면 될 듯하다. 입력받는 값은 NX가..
[HackCTF] ChildFSB (600p) 풀이
풀이 Thanks to tmxk4221 babyfsb와는 달리 read에서 0x19 크기만 입력을 받는다. setvbuf, setbuf로 세팅한다. childfsb의 exploit은 3단계로 나눌 수 있다. stage #1 __stack_chk_fail@got 값을 main+33 값으로 덮는다. 왜 main+33 값인지는 stage #3에 나온다. 그리고 스택에 남아있는 __libc_start_main+240 값을 leak 한다. 이제 stack smashing을 일으켜, main+33으로 돌아간다. stage #2 leak을 성공했다면 oneshot_gadget을 구한다. babyfsb와 마찬가지로 oneshot_first, oneshot_mid, oneshot_last로 offset을 나눠준다. st..
[0xL4ugh CTF] Only Pwnable Writeup
Pwn - trigger_happy There is no security check.. Main function calls response function. There is a vulnerability in this function. FSB(Format string bug) occurs in printf(&s). We have to change puts to flaggy(/bin/sh function) function. from pwn import * context.log_level = 'debug' p = remote('ctf.0xl4ugh.com', 1337) e = ELF('./trigger_happy') #flaggy = e.symbols['flaggy'] payload = fmtstr_paylo..
[HackCTF] 훈폰정음 풀이 (700p)
풀이 [*] '/root/pwnable/pro42/hun' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled 풀었다! 내가 이렇게 힙 문제를 빨리 풀 줄이야.. 프로그램을 실행하면 다음과 같은 메뉴가 나타난다. IDA로 슈도코드를 확인해 보자. menu를 출력하고 smooth라는 함수로 값을 입력 받는다. add, edit, delete, check, exit를 선택할 수 있다. 마찬가지로 smooth 함수로 입력을 받는다. 그 후, v1으로 입력 값을 넘기는데 Index가 0 ~ 6 사이인지 검사한다. 만약, 아니라면 함수를 종료한다. heap size는 음수가 될 수 없으며, 1024를 ..