二进制安全学习 第一天

这篇具有很好参考价值的文章主要介绍了二进制安全学习 第一天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

(仅用作自己学习)XMCVE 2020 CTF Pwn入门课程_哔哩哔哩_bilibili

二进制安全学习 第一天,安全

 文章来源地址https://www.toymoban.com/news/detail-854052.html

屏幕剪辑的捕获时间: 2024/3/15 17:13

 

 

Terminal:终端

shell:区别于GUI的提供给系统的用户接口

 

为什么c和c++的市场占额会下不去?

很多编译型语言都存在,Gc:垃圾收集器,例如 go语言,虽然也能编译成二进制程序,但是因为gc会阻塞程序运行,不能应用在对时间精度要求很高的应用上,比如12306抢票,金融证券交易。

 

Linux ——》通过文件头识别文件类型

Windows ——》仅通过后缀名识别

 

windows上完全可以通过修改后缀名欺骗系统,但linux不行。

 

:%!Xxd   vim进入二进制显示模式

二进制安全学习 第一天,安全

 

最左侧为偏移:距离文件头的距离。

 

二进制安全学习 第一天,安全

 

 

语言编译过程十分复杂,pwn中关注两个过程 汇编以及链接,尤其是链接,有动态,静态之分,在攻击时采用不同的思路。

第一层编译之后的文件中以大量的机器码储存,类似int main return0 这类的是机器系统可以直接读懂的,但是printf之类的由大神程序员写好之后集成在库或者系统中的这类,需要链接之后才能成为一个ELF可执行文件。 a.o --> a.out

 

二进制安全学习 第一天,安全

 

 

汇编和机器码存在双向映射的关系

 

Gcc -S 编译成为汇编语言文件

./a.out 绝对路径   ~/Documents/a.out

都可以操作a这个可执行文件。

 

二进制安全学习 第一天,安全

 

二进制安全学习 第一天,安全

 

二进制安全学习 第一天,安全

 

 

ELF文件在硬盘和内存中以不同形式存放,在执行时从硬盘进入内存时,存储时的几个同权限的section合成一段,操作系统看到的只有段,形成DATA和CODE两个段。

 

 

现代操作系统,全权接管硬件,程序员不能直接操作硬件,只能通过系统的接口调用,例如:在内存中,给进程分配的内存实际为虚拟内存,一个32位系统的4g内存条,可能其中1g是每个程序共用的系统进程的部分,分给每个进程的虚拟内存都为剩下的3g,但进程实际存储不会用完,只会在物理内存上占实际的大小。

 

用户空间每个进程一份,内核空间所有进程共享一份。

段视图规定进程运行时不同的权限,节视图规定了如何生成和如何存储。

 

二进制安全学习 第一天,安全

 

系统看到节只是权限不同的节,但人看到时不同功能的模块,text节是用户定义的代码功能,plt节是系统调用动态链接函数的实际地址。

 .got.plt段用于解析plt节的实际地址并存储下来,.bss段

用于存储尚未初始化的声明变量,所以不占实际内存

 

二进制安全学习 第一天,安全

 

屏幕剪辑的捕获时间: 2024/3/16 10:47

 

如图。其中,由于malloc申请的空间是动态的,所以只有当执行到这条语句的时候,系统才能划出内存空间给其使用,因此不能放在静态存储区,因为静态存储区是在载入内存的时候就已经划分好的存储区域。当给ptr传入一个值的时候,就会将它放在动态存储的heap区,而局部变量通通被存放在stack中,在局部变量被丢弃的时候,对应的栈帧也会被丢弃因此放在动态区很合适。,在存储图中没出现的维二两个 x,y为形参,仅在调用时起到传递的作用,在32位系统中,会在创建sum函数的栈帧之前压栈,在64位系统中,因为寄存器空间扩展的很大,因此被放在速度最快的寄存器中,函数用到时直接在寄存器中取用。

 

 

二进制安全学习 第一天,安全

 

 

屏幕剪辑的捕获时间: 2024/3/16 11:01

 

两种不同的数据存储方式,小端序相对于大端序更容易被利用 例如:

0x00在c语言中作为字符串的结尾,0x00002345,因为小端序从低位往高位写入数据,就可以利用更低位的数据溢出将2345修改为想要的数据,直到遇到00系统知道这是个字符串结束了,所以可以任意修改其低位的数据。(因为一般来说数据存不满内存地址)而在大端序中,数据从高位向低位存,则变成0x45230000,这样在溢出时直接读到一个00就结束了。

 

二进制安全学习 第一天,安全

 

屏幕剪辑的捕获时间: 2024/3/16 11:13

 

到了这里,关于二进制安全学习 第一天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【二进制安全】堆漏洞:Double Free原理

    参考:https://www.anquanke.com/post/id/241598 次要参考:https://xz.aliyun.com/t/6342 malloc_chunk 的源码如下: 释放的chunk 会以单向链表的形式回收到fastbin 里面。 fastbin 是 LIFO 的数据结构,使用单向链表实现。 示例代码: 需要使用glibc 2.27编译。 Linux下更换glibc版本的方法:https://blog.csdn.

    2024年02月14日
    浏览(47)
  • 安全研究 # 二进制代码相似性检测综述

    本文参考: [1]方磊,武泽慧,魏强.二进制代码相似性检测技术综述[J].计算机科学,2021,48(05):1-8. (信息工程大学数学工程与先进计算国家重点实验室, 国家重点研发课题,北大核心) 代码相似性检测常用于 代码预测 、 知识产权保护 和 漏洞搜索 等领域,可分为 源代码相似性检测

    2024年02月02日
    浏览(39)
  • 安全研究 # 课题:二进制成分分析(Binary SCA)

    本文参考多篇文章写作而成,出处在文末注明(本文在课题开展过程中长期保持更新)。 SCA(Software Composition Analysis)软件成分分析,通俗的理解就是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理、追踪的技术。通常用来对软件源码、二进制软件包等进行静

    2024年02月16日
    浏览(38)
  • 二进制学习(pwn)-shellcode

    安装好了pwntool、ROPgadget、onegadget以及pwngdb,读懂并手写脚本复现了上一篇中基于64位有后门的栈溢出漏洞,恭喜你少年,你已经完成二进制的筑基啦。接下来,我们要介绍的是栈溢出的第二种利用形式:基于shellcode的栈溢出。 在编程语言中要想获得系统执行权限,可以使用s

    2024年02月08日
    浏览(40)
  • 【渗透测试之二进制安全系列】格式化漏洞揭秘(一)

    相信学习过C语言的童鞋儿们,都有接触过比较基础的输入输出函数(例如,scanf和printf等),那么对于%s、%d、%f、%c、%x等 格式化符号 应该并不会感到陌生。学习过汇编语言,并且有逆向工程基础的童鞋儿们,应该都对C语言翻译成汇编语言代码的大概格式会有所了解! 我们

    2024年02月04日
    浏览(45)
  • 二进制安全虚拟机Protostar靶场 安装,基础知识讲解,破解STACK ZERO

    pwn是ctf比赛的方向之一,也是门槛最高的,学pwn前需要很多知识,这里建议先去在某宝上买一本汇编语言第四版,看完之后学一下python和c语言,python推荐看油管FreeCodeCamp的教程,c语言也是 pwn题目大部分是破解在远程服务器上运行的二进制文件,利用二进制文件中的漏洞来获

    2024年02月09日
    浏览(38)
  • FPGA 学习笔记:Vivado simulation 仿真波形二进制显示

    最近在学习FPGA,发现除了烧写到FPGA上验证功能,最有效的方式就是软件仿真 软件仿真:simulation,就像是模拟器一样,写好测试用例,然后看是否可以输出想要的结果,用于验证FPGA逻辑的准确性 当前仿真成功后,还是需要真机实测验证 当前安装了好几个版本的Vivado ,当然

    2024年02月12日
    浏览(57)
  • 二进制安全虚拟机Protostar靶场(2)基础知识讲解,栈溢出覆盖变量 Stack One,Stack Two

    Protostar靶场的安装和一些二进制安全的基础介绍在前文已经介绍过了,这里是文章链接 当系统向缓冲区写入的数据多于它可以容纳的数据时,就会发生缓冲区溢出或缓冲区溢出,用更简单的话说就是在程序运行时,系统会为程序在内存里生成一个固定空间,如果超过了这个空

    2024年02月09日
    浏览(39)
  • 【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】

    原题链接 本题我们先需要知道 十进制 如何转 二进制 二进制 如何转 十进制 十进制 如何转 二进制: 十进制转成二进制 例如 173 转成 二进制 就把173 短除法 除到0 然后 得到的余数, 从下往上写 二进制 转成 十进制 利用如图方法,把二进制 转成 十进制 本题是高精度,如何

    2023年04月26日
    浏览(50)
  • 将数据转二进制流文件,用PostMan发送二进制流请求

    一、将byte数组转二进制流文件,并保存到本地 byte [] oneshotBytes=new byte[]{78,-29,51,-125,86,-105,56,82,-94,-115,-22,-105,0,-45,-48,-114,27,13,38,45,-24,-15,-13,46,88,-90,-66,-29,52,-23,40,-2,116,2,-115,17,36,15,-84,88,-72,22,-86,41,-90,-19,-58,19,99,-4,-63,29,51,-69,117,-120,121,3,-103,-75,44,64,-58,-34,73,-22,110,-90,92,-35,-18,-128,16,-

    2024年02月15日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包