buuctf pwn刷题(1)

本文详细介绍了buuctf中的多个Pwn题目,包括test_your_nc、pwn1、warmup_csaw_2016、pwn1_sctf_2016、ciscn_2019_n_1和level0。通过查壳、ida分析和检查程序保护,发现了栈溢出漏洞,并展示了如何利用这些漏洞获取shell权限。涉及的技术包括静态分析、动态调试和脚本编写。

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

1.test_your_nc

先用exeinfo查壳,是64位的程序
在这里插入图片描述

用64位ida静态分析一下,找到main函数
在这里插入图片描述
F5反汇编,看到system("/bin/sh")
system()的作用———执行shell命令也就是向dos发送一条指令。
即执行/bin/sh命令,获得shell权限
在这里插入图片描述
在这里插入图片描述
用虚拟机连node3.buuoj.cn:27191
nc node3.buuoj.cn 27191
查看文件目录
ls
查看flag中的内容
cat flag
在这里插入图片描述

2.pwn1

查壳,64位程序
在这里插入图片描述
用虚拟机看一下有什么保护
在这里插入图片描述

64位ida静态分析,看一看main函数以及有特殊含义的函数
发现main函数中有gets()函数,所以有栈溢出漏洞
gets()函数可以输入无限长度的字符,所以容易超出系统分配的栈的最大长度。而在调用函数时栈中存有调用函数之后的命令的地址,所以只要将原本应该返回的地址覆盖掉,就能让程序进入fun函数,从而得到权限。
在这里插入图片描述
发现fun函数可以获得shell权限,那么只要让程序执行fun函数即可
在这里插入图片描述
进入到gets函数的s中
在这里插入图片描述
我们要将阴影部分填充入垃圾数据,在发送fun所在地址到r即可
在这里插入图片描述
脚本

#!/usr/bin/env python3

from pwn import*

context(os="linux",arch="amd64",log_level="debug")

#zdb=process("./pwn1")
zdb=remote("no
### 关于陕西省大学生CTF Pwn类比赛的准备方法 #### 学习基础知识 对于参与Pwn类竞赛的学生来说,掌握操作系统原理、编程语言尤其是C/C++以及汇编语言的基础知识至关重要。理解内存管理机制如堆栈的工作方式,熟悉常见的安全措施例如地址空间布局随机化(ASLR)、栈保护金丝雀(Stack Canary),这些都属于必备技能[^2]。 #### 练习环境搭建 为了更好地模拟实际攻击场景并测试自己的技术能力,在本地建立一个实验性的Linux服务器是非常有必要的。可以安装虚拟机软件如VirtualBox来运行不同版本的操作系统镜像文件;同时配置好GDB调试器以便能够动态跟踪目标程序的行为变化过程[^1]。 #### 积累经验 积极参加各类在线平台上的练习目有助于提高解速度和技术水平。BUUCTF提供了丰富的挑战项目供参赛者们反复实践,其中包括许多经典的Pwn目等待着大家去攻克。另外还可以关注其他知名网站比如Bugku CTF等资源库,它们也收录了不少高质量的学习案例和教程文章[^4]。 #### 加入社区交流 加入一些活跃的技术论坛或者QQ群组可以让选手更快地融入这个圈子,并从中获得更多的灵感和支持。与其他爱好者分享心得体验、共同探讨难解决方案都是十分有益的事情。此外阅读前辈们的博客日志也能学到不少实用技巧[^5]。 ```bash # 安装gdb工具用于调试程序 sudo apt-get install gdb ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值