首页 > 其他分享 >一些用到的指令和工具

一些用到的指令和工具

时间:2023-07-28 22:14:57浏览次数:27  
标签:binary grep -- 用到 ROPgadget 地址 指令 工具

ROPgadget

ROPgadget --binary 文件名 --only "指令|指令" | grep 寄存器或者其他存在的字段

查找汇编指令的地址

例子:

ROPgadget --binary get_started_3dsctf_2016 --only "mov|ret" |grep eax

ROPgadget --binary get_started_3dsctf_2016 --only "mov|ret" |grep ': mov eax'

  • --only ” | “ 表示只返回含有xx指令或xx指令的gadget

  • grep 表示含有什么什么特定字段(通常是寄存器)的指令

    但是grep能寻找的必须是连续的指令中间不能隔开,连空格都必须一致才能被搜索到

    比如你想要搜索0x080701a8 : mov eax, ecx ; ret,你可以用命令ROPgadget --binary get_started_3dsctf_2016 --only "mov|ret" |grep 'eax, ecx';命令ROPgadget --binary get_started_3dsctf_2016 --only "mov|ret" |grep 'eax,ecx'无法成功因为逗号和ecx之间少了一个空格

  • 取地址的指令[edx]无法被识别,[ ]在ROPgadget中貌似是表示含有[ ]内字母的指令

    比如 ROPgadget --binary get_started_3dsctf_2016 --only "mov|ret" |grep '[edx]'得到的是这样

ROPgadget --binary 文件名 --sting '/bin/sh'

查找字符串地址

例子:

ROPgadget --binary 文件名 --sting '/bin/sh'

ROPgadget --binary 文件名 --sting '/sh'

ROPgadget --binary 文件名 --sting 'sh'

ROPgadget --binary 文件名 --sting 'cat flag'

ROPgadget --binary 文件名 --sting 'cat flag.txt'

![(

vmmap

vmmap [-h] [pages_filter]

首先vmmap需要在pwndbg,且程序运行时使用

  • 输入vmmap,显示出程序运行时所用到的所有地址段
  • 输入vmmap 地址 ,显示该地址对应的地址段
  • vmmap -h,提示帮助;-w只显示可写的部分;-x只显示可执行的部分

例子:

第一行,表明了哪个颜色对应哪个段,

start和end对应该地址段的起始和结束位置

Perm 是该段的权限,rwx代表可读、可写、可执行

Size表示该段大小

Offset表示这段与程序基址的偏移

File表示加载的是什么

vim

命令模式下:

$ 行末

^ 行首

L 屏幕底行

H 屏幕顶行

yy 拷贝该行

dd 删除该行

P 前粘贴

p 后粘贴

D 删除至行尾

u 撤销

gg 光标移至行首

dG 删除光标行及光标行以下全部内容

底线命令模式下:

:wq 保存并退出

:%d 删除全部内容

:%s 替换 参考(万里哥我滴神)

pwndbg

基本指令

  • r = run 运行程序,如果你当前已经在运行程序了,再输入r会重新运行程序
  • b = break 下断点,在调试pwn中,一般是 b 0xabcde ,abcde是在ida中看到的地址,如b 0x400908
  • c = continue 继续运行程序直到停在下一个断点
  • n = next 下一行,一般装了pwndbg之后下一行指的是下一条汇编,但是如果调试的程序是带调试信息的,一般会跳几行汇编
  • ni = nexti 下一条指令,这个就是真正的下一条汇编指令
  • s = step 单步进入函数
  • d = delete 删除断点,后面可带数字,说明删除第几个断点,如果不带参数,说明删除全部断点
  • x 查看内存

c,n,ni这几个程序都可以带一个数字,用来代表连续运行这个指令多少次

x/num xg 地址 64位查看某处地址

x/num xw 地址 32位查看某处地址

s/num s 地址 查看从地址开始的num个字符串

b *$rebase(地址) 用于开启PIE该指令会在基址+地址处下断点

ASLR和pie编译

查看系统当前ASLR打开情况

sudo cat /proc/sys/kernel/randomize_va_space

ASLR的三个级别 :

0, 不开启任何随机化;

1, 开启stack、libraries [、executable base(special libraries -^-) if PIE is enabled while compiling] 的随机化;

2,开启heap随机化。

PIE编译出来的executable如果ASLR=0的话,基址也是不会变的(有能力但没使用),如果ASLR=1的话,即使按照ASLR定义这个级别似乎不会对heap基址随机化,但是由于executable的基址已经随机化了,所以heap的基址自然也就被随机化了

指令关闭ASLR

sysctl -w kernel.randomize_va_space=0

echo 0 > /proc/sys/kernel/randomize_va_space

fPIE选项仅能在编译可执行码时用,不能用于编译库。所以,如果想要PIE的程序,需要你除了在gcc增加-fPIE选项外,还需要在ld时增加-pie选项才能产生这种代码。即gcc -fpie -pie来编译程序。单独使用哪一个都无法达到效果。

gcc  helloworld.c

file a.out a.out:

ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

file a.out a.out:

ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped

未开启PIE的文件属性为executable,开启的为shared object

注意PIE随机程序加载基地址,要和libc的随机libc库基地址区分

shellcode

pwntools生成的shellcode默认64位

shellcode = asm(shellcraft.sh())

要生成32位的shellcode需要指定

shellcode = asm(shellcraft.sh(),arch='i386',os='linux')

手动反汇编汇编指令

xx = asm('')

标签:binary,grep,--,用到,ROPgadget,地址,指令,工具
From: https://www.cnblogs.com/imarch22/p/17588989.html

相关文章

  • 在Lync/Skype for Business中部署SEFAUtil工具
    需求背景SEFAUtil是Skype服务器的一款很便利的工具,它使Skype管理员能够在SkypeforBusiness服务器端直接帮助用户配置代理响铃、呼叫转接和组呼叫应答等设置。这一功能在针对于一些VIP用户的需求时尤为有帮助,管理员只需要在服务器端帮助VIP用户进行代理相关配置,而无需在VIP的Sk......
  • 域名解析成IP地址的网络工具
    网站:https://ipaddress.com   《访问》  ......
  • Scrum看板工具-什么是敏捷看板?-有没有免费的
    ​敏捷看板看板是一个团队共享的工作区,在看板上团队可以进行实时的工作任务协同,团队的工作以卡片的形式体现。通过泳道和任务列表组织管理。需求、任务、问题、缺陷都作为卡片放在看板上,通过看板实现可视化和透明化的管理,通过看板上卡片的实时同步,实时协作。列表列表是任......
  • API调试工具用什么?试试Apipost
    前言Apipost是一款支持RESTfulAPI、SOAPAPI、GraphQLAPI等多种API类型,支持HTTPS、WebSocket、gRPC多种通信协议的API调试工具。除此之外,Apipost还提供了自动化测试、团队协作、等多种功能。这些丰富的功能简化了工作流程,提高了研发效率,这也让Apipost成为开发人员首选的API......
  • iOS 应用上架的步骤和工具简介
      编辑 APP开发助手是一款能够辅助iOSAPP上架到AppStore的工具,它解决了iOSAPP上架流程繁琐且耗时的问题,帮助跨平台APP开发者顺利将应用上架到苹果应用商店。最重要的是,即使没有配置Mac苹果机,也可以使用该工具完成一系列操作,包括iOS证书申请、创建iOS开发者证书和iOS发......
  • Android应用性能优化之分析工具
    Android应用性能优化之分析工具上一次记录了解决过度绘制的过程,这一次,想先弄清个概念性的东西,就是如何判断顺不顺畅?这东西其实最初我自己也觉得有点废话,用起来会卡就明显是不顺畅咯。但这东西就跟我很想吐槽很多应用一样,明明那么卡还放出来一样的道理。......
  • 基于hutool的图片合成工具类
    importlombok.Data;importjava.io.Serializable;importjava.util.List;/***@description缩略图信息DTO*/@DatapublicclassThumbnailInfoDTOimplementsSerializable{/**背景图片*/privateStringbaseImageUrl;/**背景图款*/privat......
  • lea指令调用
    lea指令(LoadEffectiveAddress)在x86汇编语言中的作用是将一个有效地址(即一个内存地址或寄存器地址的偏移量)加载到目标寄存器中,而不是加载一个实际的内存值。lea指令的使用场景通常有以下几种:计算数组元素的地址:假设有一个数组arr,每个元素大小为4个字节,要获取第i个元素的地址,......
  • API调试工具用什么?试试Apipost
    前言 Apipost是一款支持RESTfulAPI、SOAPAPI、GraphQLAPI等多种API类型,支持HTTPS、WebSocket、gRPC多种通信协议的API调试工具。除此之外,Apipost还提供了自动化测试、团队协作、等多种功能。这些丰富的功能简化了工作流程,提高了研发效率,这也让Apipost成为开发人员首选的A......
  • 性能分析工具
    VisualVM https://www.cnblogs.com/wade-xu/p/4369094.htmlJavaProfiler:JavaProfiler是一种用于分析Java程序性能的工具,可以分析CPU、内存、线程、方法调用等方面的性能瓶颈,帮助诊断性能问题。JavaThreadDump:JavaThreadDump是一种用于分析Java程序线程的工具,可以......