二进制基础

最近开始入坑系统安全大坑,调转方向开始了解pwn,那就要补一些那少得可怜的底层基础啦

  • 先学几个单词:
    • exploit:用于攻击的脚本与方案
    • payload:攻击载荷,是目标进程被劫持控制流的数据(精心构造的恶意数据,目标进程执行后就会触发这个漏洞)
    • shellcode:调用攻击目标的shell的代码
  • 还有一些工具
    在这里插入图片描述

linux下的C语言编译

C语言在pwn里面有着举足轻重的地位,C往往是计算机科班学习的第一门语言(自学的就看自己啦哈哈),C上可写高级语言,下可操作硬件,同时在pwn中有40%的漏洞是由C/C++编写的,是非常重要的一部分。

命令观察

在kali的命令行中,如图进行测试实验
在这里插入图片描述
通过vim创建并编写C语言文件,gcc进行编译,之后可以看到生成了a.out文件,这就是linux里面的可执行文件了。后面要执行的时候注意要用"./a.out",直接写“a.out”的话会被当成命令而显示未找到命令

可以加上‘-o’参数指定输出文件名:
在这里插入图片描述
拿到pwn先运行,看看他是干啥的,再去反编译等内容

打印一下二进制程序:
在这里插入图片描述
这实际就是可执行文件了
再查看一下他的格式
在这里插入图片描述

显示是ELF,64位,小端序(LSB)的,是linux下的可执行文件的格式。

linux提供了读ELF文件的命令:readelf
可以用:readelf -a filename | less
在这里插入图片描述
里面也会记录所用到的一些函数
在这里插入图片描述

  • nm可以查看运行的一些过程,可以看有哪些符号表,用到了哪些函数
    在这里插入图片描述
  • hexdump可以查看其十六进制
    hexdump question_1_x64 | less
    在这里插入图片描述
  • ldd:查看里面用到的库函数的位置
    在这里插入图片描述
    file可以看到用了哪个链接器,但是ldd可以把用到的东西全部显示出来
    如:下面路径下就会有一个libc.so.6
    在这里插入图片描述
  • objdump:可以将程序反编译成汇编指令
    命令:objdump -d filename | less
    在这里插入图片描述
    这是APT模式下的汇编指令,要是想看Intel的汇编指令,可以加参数-M intel:objdump -d -M intel filename | less
    在这里插入图片描述

编译过程

gcc命令可以对C语言文件进行编译,但实际上这条命令为我们隐藏了很多中间过程,具体过程如下图所示
编译过程

  1. 首先要进行一个预处理,不过这对pwn来说不用太关心,这之后就会得到预处理过后的C语言代码
  2. 编译:C语言代码经过汇编转化为汇编代码(此时起作用的是一个汇编器),此时还是给程序员看的汇编代码,而不是给机器看的机器代码(机器只能读懂机器码)
  3. 汇编:由汇编代码生成机器码,之后生成的就是ELF文件了(此时这个文件就已经是个目标文件而且保存的是机器码,但是此时还并不是一个可执行文件,还需要进行链接,因为当前她只包含了C语言代码中自己写的那部分文本,其调用的功能是由系统中的链接库实现的,需要链接)
  4. 链接:将编译后的文件链接成可执行文件

在这里插入图片描述

可执行文件

概念

  • 狭义:CPU可以对文件中的数据读取并解析执行,即问津中的数据是机器码的文件
    • .out .exe .dll .so
  • 广义:文件中的数据是可执行代码的文件
    • .out .exe .sh .py

一些命令

  • file ldd nm hexdump
  • objdump -d -M intel
  • readelf -a
  • gdb
  • socat tcp-l:8888,fork exec:./a.out,reuseaddr

其中较常用的是file、ldd,比较重要的是gdb

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值