如何编写在程序上执行 gdb 的 bash 脚本

     2023-02-22     8

关键词:

【中文标题】如何编写在程序上执行 gdb 的 bash 脚本【英文标题】:How to write a bash script that executes gdb on a program 【发布时间】:2020-04-04 20:29:32 【问题描述】:

我正在从http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software/Buffer_Overflow/Buffer_Overflow.pdf 重新创建缓冲区溢出,并且我想编写一个 bash 脚本,它将 gdb 放在我的“堆栈”可执行文件上。然后,该脚本将创建断点并获取将作为参数传递到 ./exploit 的缓冲区的请求 (p &buffer) 和结束 (p $ebp) 的地址。

当我运行我的脚本时..

#!/bin/sh
gdb stack
b main
b 14
run
b 23
c
p &buffer
p $ebp

当我使用它时,gdb 会在我的可执行文件上打开。但是,脚本的其余部分不会执行。我认为这是因为 gdb 创建了一个新进程。我已经尝试使用“ gdb stack "$$" " 来让 gdb 在与我的脚本相同的进程中运行,但是没有成功。

我正在尝试做的事情可能吗?

编辑:

新脚本:这会正确地将地址输出到命令行

#!/bin/sh
gdb stack << 'EOF'
  b main
  run
  b 23
  c
  s
  p &buffer
  p $ebp
  quit
EOF

如何获取这些地址,以便将它们作为参数传递给 ./exploit?

我的 bash 文件的以下行将是..

./exploit <&buffer> <$ebp>

【问题讨论】:

shell脚本中的每一行都是一个shell命令——所以当gdb退出时,运行脚本的shell将尝试运行命令bruncpbuffer等需要将后续行重定向到gdb的输入;使用此处的文档gdb stack &lt;&lt;'EOF',后跟您的gdb 命令,然后使用仅包含EOF 的行(左对齐)。 成功了!我刚刚对一个新问题进行了编辑。 您可能需要将标准输出(来自gdb)重定向到一个文件:gdb &lt;&lt;'EOF' &gt;gdb.output 以将信息放入gdb.output。然后,您将不得不担心清理数据以获取两个地址。 ASLR 可能会给你带来麻烦——小心。 不知道——他们发明了这些叫做“manuals”的东西,可以帮助解释程序是如何工作的。我必须阅读它才能找到答案;因为这不是我的问题,所以我将阅读过程委托给您。您也许可以使用p &amp;buffer &gt;buffer.out 之类的东西。但我不做任何承诺——我没有读过手册。 【参考方案1】:

试试

gdb -batch yourfile

man gdb 中所假设的那样。

或查看here 的示例。

【讨论】:

编写 GDB 脚本来收集数据

】编写GDB脚本来收集数据【英文标题】:WritingGDBscriptstocollectdata【发布时间】:2015-06-1808:54:50【问题描述】:我需要printaddressesofalllocalvariablesinC,为此我正在尝试使用GDB脚本。我正在使用以下gdb脚本。首先,我在main处设置断点... 查看详情

不过时的技术——bash脚本

...后使用exit0显式声明返回值。遵循上面的规则,我们可以编写出自己的第一个Bash脚本:hello_world 查看详情

如何在 Eclipse 中启动 gdb 调试之前运行 linux 脚本

】如何在Eclipse中启动gdb调试之前运行linux脚本【英文标题】:HowtorunalinuxscriptbeforelaunchinggdbdebugginginEclipse【发布时间】:2013-11-1411:50:37【问题描述】:在Eclipse中启动gdb调试之前,如何给出要运行的命令?实际上,我想在eclipse启... 查看详情

如何从 Cygwin 在 Jenkins 控制台上显示 bash 脚本执行

】如何从Cygwin在Jenkins控制台上显示bash脚本执行【英文标题】:HowtodisplaybashscriptexecutiononJenkinsConsolefromCygwin【发布时间】:2019-12-3016:52:38【问题描述】:从Jenkins管道调用下面的bash脚本,但我没有在Jenkins控制台上看到脚本执行,... 查看详情

如何在 OS X Leopard 上的 bash 脚本中进行日期数学运算?

】如何在OSXLeopard上的bash脚本中进行日期数学运算?【英文标题】:HowdoIdodatemathinabashscriptonOSXLeopard?【发布时间】:2009-01-3105:50:54【问题描述】:我意识到我可以编写一个小的C或Ruby程序来执行此操作,但我希望我的脚本具有尽... 查看详情

如何在pycharm中远程执行bash脚本?

】如何在pycharm中远程执行bash脚本?【英文标题】:Howtoremotelyexecuteabashscriptinpycharm?【发布时间】:2018-07-0702:04:24【问题描述】:我拥有Pycharm的许可版本。我也安装了BashSupportplugin。但是,我不确定在RHEL服务器上远程测试和执行b... 查看详情

如何在bash脚本中执行存储在heredoc中的curl命令?

】如何在bash脚本中执行存储在heredoc中的curl命令?【英文标题】:Howtoexecutecurlcommandstoredinheredocinbashscript?【发布时间】:2021-12-1423:24:07【问题描述】:在编写bash脚本时,我想将整个curl命令存储在heredoc中以获得更好的布局。以下... 查看详情

如何用xshell编写脚本

...一个测试shell脚本。shell脚本的后缀习惯性写成“.sh”。如何编写简单的shell程序shell脚本的开始需要声明此脚本使用什么程序解析执行,首行为“#!/bin/sh”,标明使用bash解析器解析当前shell脚本。如何编写简单的shell程序完成所... 查看详情

从 bash 脚本中通过 ssh 在远程主机上执行命令

...eabashscript【发布时间】:2012-01-1215:40:54【问题描述】:我编写了一个bash脚本,它应该从文件中读取用户名和IP地址并通过ssh对它们执行命令。这是hosts.txt:user1192.168.56.232user2192.168.56.233这是myScri 查看详情

使 bash 脚本在 Linux 和 Solaris 上运行

...异。现在,我正在OpenSuse(linux)上开发它。是否有一些关于如何编写/编 查看详情

linux中编写bash脚本的10个技巧

Shell脚本编程是你在Linux下学习或练习编程的最简单的方式。尤其对系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能。本文中,我们将分享10个写出高效可靠的bash脚本的实... 查看详情

bash学习笔记小结

1.Linux脚本编写基础 1.1语法基本介绍 1.1.1开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序... 查看详情

使用 GNU 并行在多个文件内的多行上并行执行 bash 脚本

...问题:我有几个文件,每个文件都有几行文本。我想了解如何在每个文件的每一行文本上以及为每个文件并行运行脚本(code.sh) 查看详情

如何使用 AWS Redshift 执行 Bash 脚本

】如何使用AWSRedshift执行Bash脚本【英文标题】:HowcanIexecuteaBashScriptwithAWSRedshift【发布时间】:2022-01-2115:20:09【问题描述】:我是Redshift的新手,也是AWS的初学者。我有一个Redshift集群,我需要执行一个bash脚本——其中运行了一些... 查看详情

如何使用 bash 脚本在远程机器上运行命令?

】如何使用bash脚本在远程机器上运行命令?【英文标题】:Howtoruncommandsonremotemachineusingbashscript?【发布时间】:2016-11-0103:41:19【问题描述】:我正在尝试在远程机器上运行以下命令,但没有执行任何操作,谁能指出以下脚本的问... 查看详情

如何在终端中执行 Ruby 脚本?

】如何在终端中执行Ruby脚本?【英文标题】:HowtoexecuteaRubyscriptinTerminal?【发布时间】:2012-02-0200:43:10【问题描述】:我已经在我的Mac上设置了所有我需要的东西(Ruby、Rails、Homebrew、Git等),我什至还编写了一个小程序。现在... 查看详情

如何编写一个运行程序的 bash 脚本,直到它检测到信号 SIGSEGV、分段错误?

】如何编写一个运行程序的bash脚本,直到它检测到信号SIGSEGV、分段错误?【英文标题】:HowdoIwriteabashscriptwhichrunsaprogramuntilitsensessignalSIGSEGV,Segmentationfault?【发布时间】:2019-12-2503:22:11【问题描述】:学习C指针,我确信昨天成功... 查看详情

如何从 haskell 程序调用 bash 或 shell 脚本?

】如何从haskell程序调用bash或shell脚本?【英文标题】:Howtoinvokebashorshellscriptsfromahaskellprogram?【发布时间】:2012-05-1904:18:59【问题描述】:我正在用我在gitbash中运行的haskell编写一些shell脚本,但是我希望能够从这些脚本中使用其... 查看详情