1.checksec先检查,开启的保护以及程序情况。


开启了NX(地址随机化保护) , 就意味着程序块的地址随机分布在虚拟内存空间( virtual memory )不懂得去看《程序员的修养》(最火的那本)。

32位小段序,输入的变量数据在地址中的存放位置(按照小段序存放)。

2.静态调试(静态查看,静态分析)

将文件拖入到 ida 32位,然后确定。

shift+F12看到程序出现的字符串,发现下面。

有./flag cat %s , 双击字符串并且看到了在.rodata 的存放位置,后面还有一个函数。


双击此函数,查看函数全部信息。

这样就看到了函数全貌。之后按F5(笔记本电脑键盘FN+F5),查看程序伪代码。


看到伪代码如下:
snprintf()函数。
【函数原型】

int snprintf(char *str, size_t size, const char *format, …);

【函数参数】

str:目标字符串;size:拷贝字节数(Bytes); format:源字符串; …格式

【函数功能】

最多从源字符串format中拷贝size字节的内容(含字符串结尾标志’\0’)到目标字符串

实现获得flag{xxxxxx}
怎么能执行int sub_80486CC()函数呢?
哦对,接着分析main()主函数,一切都要从主函数开刀。
ida分析F5伪代码。

注意到有这么个输入函数:

isoc99_scanf()利用此函数进行注入payload,由于isoc99_scanf()函数没有字节限制,可以往这里面打入payload。

在伪代码的最后,看到这个函数指针,我不会,看上去一脸懵,现在会了就是要让这个函数指针跳转到v3变量的所在地址。
解释一下:
&就是取地址 *(&v3)就是间接访问v3指向的函数 而后面那个()是用来存放参数的 这里没有参数。
理想情况要这样 ( (&v3+0)) 也就是 –v14=0,v14=1,这就意味着swtich(1)里面的函数要挨个运行,所以要构造一个符合条件的并且执行到((&v3 + --v14))();

方法一:第一种payload,入手点V12_return_addrss。

条件:

switch(v14)        # (v14=1)

让函数的payload通过switch(v14){的10个规则},并且这时候v14=10,确保了switch里面的C语句不报错。

payload=1234567@qq.com #这个邮箱就通过switch(v14){的10个规则}检查。

那就后面继续加123,这样也通过了检查。

#> 1234567@qq.com123

pwn-进阶-forgot相关推荐

  1. 攻防世界 pwn进阶区----No.012 babyfengshui 解题思路

    攻防世界 pwn进阶区----No.012 babyfengshui 解题思路 1.本题解题思路 1.先期工作 1.运行程序查看基本逻辑 创建用户 展示用户 更新用户 删除用户 到这里就可以猜测这题有 ...

  2. 攻防世界 Pwn 进阶 第二页

    00 这文章更重要的是对这些题进行一个总结,说一些值得注意的地方,写一些自己的理解. 为了形成一个体系,想将前面学过的一些东西都拉来放在一起总结总结,方便学习,方便记忆. 攻防世界 Pwn 新手 攻防 ...

  3. 攻防世界 Pwn 进阶 第一页

    00 要把它跟之前新手区的放在一起总结,先稍稍回顾一下新手区. 攻防世界 Pwn 新手 1.栈溢出,从简单到难,开始有后门函数,到需要自己写函数参数,到最后的ret2libc. 常见漏洞点有read( ...

  4. 攻防世界(PWN)forgot

    感觉有些wp写的不是特别详细,当时我看的时候有的地方也是看不太懂... 先拖进ida中看一下: 找到溢出点,因为我们分配给了v2 32byte的内存,但是scanf不限制长度,所以这里可以溢出. 第8 ...

  5. (攻防世界)(pwn)forgot

    这题我也是想了好久啊,实在是没找到什么办法,后来还是把题目给摸透了根据经验一个个试出来的方法!!! 拿到题目下载附件查看保护: 只开了NX,嗯... 进入IDA,----惊了,这个是啥子意思??? 一 ...

  6. realloc函数UAF利用|攻防世界pwn进阶区supermarket

    文章目录 思路 0x00.tar解压 0x01.查看保护 0x02.查看程序并调试 0x03.漏洞分析 realloc函数详解 0x04.利用思路 利用过程 exp-1 解法二 函数须知 0x00.查 ...

  7. pwn刷题num15----格式化字符串漏洞

    攻防世界pwn进阶区实时数据监测 首先查保护–>看链接类型–>赋予程序可执行权限–>试运行 64位,小端序开启部分RELRO---got表仍可写未开启canary保护---存在栈溢出 ...

  8. 分析自动化测试收益_分析自动化测试结果

    分析自动化测试收益 So, you've set up a sweet automated test framework. You're running it in your CI/CD pipeli ...

  9. 攻防世界高手进阶区 ——forgot

    攻防世界高手进阶区 --forgot 看了半天,啥也没看懂,做出来了才发现啥也不是. 一,分析文件 checksec 还好,只开启了堆栈不可执行. 运行一下 翻译了一下,应该是判断邮箱是否合乎规矩. ...

  10. [攻防世界 pwn]——forgot

    [攻防世界 pwn]--forgot 题目地址: https://adworld.xctf.org.cn/ 题目: 在checksec看下保护 在IDA中, 竟然有后面函数, 找到sub_80486C ...

最新文章

  1. 云米冰箱能控制扫地机器人_用冰箱就能掌控全屋家电?云米21Face 428L确实可以...
  2. 大数据技术基础_【基础】大数据技术栈介绍
  3. Hinton's Dark Knowledge
  4. linux mvn m2目录,Maven C盘用户文件下没有.m2
  5. VMware vCenter升级杂谈
  6. 无线通信技术协议-Zigbee 3.0
  7. mysql newid函数_sql随机函数newID()和RAND()详解
  8. 5 年 Java 面试大厂遭淘汰,面试官:连这个源码都不懂
  9. Mate7微信指纹支付来了 比Touch ID整合微信早一点
  10. 中国哪里的地铁最拥挤
  11. 基于混沌系统的文本加密算法研究(一)——混沌及混沌加密的基础知识
  12. 张一鸣宣布卸任字节跳动CEO!
  13. ORA-01830: date format picture ends before converting entire input string
  14. python爬虫---拉勾网与前程无忧网招聘数据获取(多线程,数据库,反爬虫应对)
  15. 自旋电子器件 —— 概念
  16. 两个地理坐标距离计算
  17. DWR服务器推 教程
  18. LintCode 木材加工
  19. 使用标准C++ 生成一个循环输出数字格式化前面补零的简单demo
  20. 手把手教你使用 Tabris.js 搭建的日记客户端 TuerApp

热门文章

  1. 江苏省计算机高一考试试题,江苏省计算机等级考试试题参考
  2. matlab abc dq,关于matlab及pscad中abc2dq模块的使用.doc
  3. Fvxadvvcssxcvhbnbsaqwerhnvdcnmklllppppppppoooooootretyhgftjhhhfrttyhrxz
  4. iOS 官方文档翻译
  5. 虚拟机网络连接方式 主机连接WLAN(wifi)时
  6. SAP物料凭证中的凭证类型交易/事件
  7. 什么是软件模块化,为什么要模块化?
  8. 你知道这些关于大数据与数据分析的学习网站吗?
  9. Java实现 LeetCode 502 IPO(LeetCode:我疯起来连自己都卖)
  10. iOS打包pod spec