pwn工具1 pwntools模块
摘要 pwntools的安装 pwntools的组件 正文pwntools的安装pwntools是基于python的一个包,我们可以用pip install来安装这个包。 坑:在 Manjaro 22、Ubuntu 23.04、Fedora 38等最新的linux发行版中运行pip install时,通常会收到一个错误提示:error: externally-managed-environment,即“外部管理环境”错误,但这不是一个 bug。 解决办法: 直接去除警告。缺点是包装多了可能会产生混乱 使用pipx,缺点是这个只适用于命令行,脚本中无法使用import引用包 使用venv创建虚拟环境。(我选择为pwn单独建一个环境) apt install python3-venv python3 -m venv 目录,该指令会在目录中创建一个python虚拟环境。 进入虚拟环境所在的目录,使用source bin/activate来进入虚拟环境,然后pip...
pwn工具3 checksec
前言本文大量参考博客1和博客2 摘要本文主要介绍:工具checksec 正文工具checksec安装checksecchecksec可以独立安装,但是pwntools已经将其打包了,其中集成了大量pwn手用的工具,所以我们直接安装pwntools即可 工具checksec的显示 checksec的显示 扩展想要进一步查看checksec显示的信息,请继续阅读另一篇文章:elf的安全属性
pwn 知识点汇总
前言本篇只给出原博客地址,方便review而已。 正文重要工具 pwntools 计算机指令系统指令寻址 鸫鸫鹅(知乎):关于寻址方式一篇就够了 汇编基础知识objdump输出的是AT&T风格的汇编,各种形态的汇编之间有很大区别。不注意这点,一个操作中谁mov给谁容易干混。 栈溢出前置知识plt表与got表及elf的安全属性 转载0001-plt表和got表1 转载0002-plt表和got表2 转载0003-plt表和got表3 转载0004-plt表和got表4 转载0005-plt表和got表5 elf的安全属性 stormQ:计算机系统篇之链接(14):.plt、.plt.got、.got 和 .got.plt sections...
转载0005 plt表和got表5
前言本文转载自知乎,仅用作存储用。 再看动态链接中的PLT和GOT - 读懂原理与细节 作者主页:红色的红 正文 原背景 魔鬼都藏在细节中, 不深入细节我总以为我已经懂了. 此文就是用于解决所有细节的落脚。 待解决的疑问: 动态库中的PLT表与主程序中的PLT表是否为同一份。 动态库中的GOT.PLT表与主程序中的GOT.PLT表是否为同一份。 PLT表是代码还是数据。 动态库内部函数之间的调用为何不直接使用相对地址调用。 由于.plt段的作用(用于延时加载)不是 这篇文章的重点. 我们都知道其延时加载的原理和基本方法.这里就不额外展开说明这一点.可以参考内容[1][2]. 代码准备 简单对代码作一个说明: add.so 会被编译为一个动态库. 里面包含两个函数: addtwo 完成两个数的加法. addthree 完成 main.c12345678910111213#include <stdio.h>// 声明一个外部导入的函数int addtwo(int x,int y);int addthree(int x,int y,int z);int...
转载0004 plt表和got表4
前言这是转载于CSDN的文章,仅用作存储,遵循 CC 4.0 BY-SA版权协议。 聊聊Linux动态链接中的PLT和GOT(4)—— 穿针引线 原作者:海枫 正文编译时的PLT和GOT关系图前几篇文章一直在讨论PLT和GOT的结构细节,编译完成之后,PLT和GOT的对应关系是怎么样的呢,下面是编译完成之后,PLT和GOT关系图。 图中重点标注了从调用printf函数语句的汇编指令call puts@plt跳转过程,图中使用编号来表标跳转顺序。 PLT表结构有以下特点: PLT表中的第一项为公共表项,剩下的是每个动态库函数为一项(当然每项是由多条指令组成的,jmp *0xXXXXXXXX这条指令是所有plt的开始指令) 每项PLT都从对应的GOT表项中读取目标函数地址 GOT表结构有以下特点: GOT表中前3个为特殊项,分别用于保存...
转载0003 plt表和got表3
前言这是转载于CSDN的文章,仅用作存储,遵循 CC 4.0 BY-SA版权协议。 聊聊Linux动态链接中的PLT和GOT(3)——公共GOT表项 原作者:海枫 正文前文(转载2),提到所有动态库函数的plt指令最终都跳进公共plt执行,那么公共plt指令里面的地址是什么鬼? 把test可执行文的共公plt贴出来: 1234080482a0 <common@plt>: 80482a0: pushl 0x80496f0 80482a6: jmp *0x80496f4 ... 第一句,pushl 0x80496f0,是将地址压到栈上,也即向最终调用的函数传递参数。第二句,jmp *0x80496f4,这是跳到最终的函数去执行,不过猜猜就能想到,这是跳到能解析动态库函数地址的代码里面执行。 0x80496f4里面住着是何方圣呢?下面使用gdb调试器将它请出来: 123456789101112$ gdb -q ./test...(gdb)x/xw 0x80496f40x80496f4 <_GLOBAL_OFFSET_TABLE_+8>: ...
转载0002 plt表和got表2
前言这是转载于CSDN的文章,仅用作存储,遵循 CC 4.0...
转载0001 plt表和got表1
前言这是转载于CSDN的文章,仅用作存储,遵循 CC 4.0 BY-SA版权协议。 聊聊Linux动态链接中的PLT和GOT(1)——何谓PLT与GOT 原作者:海枫 正文为什么要PLT和GOT在介绍PLT和GOT出场之前,先以一个简单的例子引入两个主角,各位请看以下代码:12345678910111213#include <stdio.h>void print_banner(){ printf("Welcome to World of PLT and GOT\n");}int main(void){ print_banner(); return 0;}编译:1gcc -Wall -g -o test.o -c test.c -m32链接:1gcc -o test test.o...
本Blog从默认hexo更改了哪些配置?
前言方便迁移 其实备份的时候什么都不用记录安装的组件会记录在package.json里。 正文变换的组件1234567npm install hexo-deployer-git --savenpm install hexo-generator-search --savenpm install hexo-generator-searchdb --savenpm install hexo-renderer-pug --save npm install hexo-renderer-stylus --savenpm uninstall hexo-renderer-marked --savenpm install hexo-renderer-kramed --save 加载的风格1git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly 在_config.yml中由1theme: landscape变为1theme:...
ctfshow-pwn25 WP
文章简述主要探究了问题中偏移量与自己知识中的偏移量不同的原因。 介绍了一种确定偏移量的方法。 正文对程序进行反编译并找到思路exeinfope使用exeinfope查看程序,发现是elf32位程序。 ida打开ida进行反编译。123456ssize_t ctfshow(){ char buf[132]; // [esp+0h] [ebp-88h] BYREF return read(0, buf,...
