当前位置: 首页 > news >正文

pwntools 文档学习

Context

context(arch = 'i386', os = 'linux',log_level='debug')  设置目标机的信息

arch设置架构为amd64,可以简单的认为设置为64位的模式,对应的32位模式是’i386’

log_level设置日志输出的等级为debug,这句话在调试的时候一般会设置,这样pwntools会将完整的io过程都打印下来,使得调试更加方便,可以避免在完成CTF题目时出现一些和IO相关的错误。

 

r = remote('exploitme.example.com', 31337) 用来建立一个远程连接,url或者ip作为地址,然后指明端口

asm(shellcraft.sh())     asm()函数接收一个字符串作为参数,得到汇编码的机器代码

 


checksec

checksec可以查看当前二进制文件的指令架构以及采取了哪些保护机制

需要特别注意目标进程是否开启了DEP(Linux下对应NX(No Execute))、ASLR(Linux下对应PIE)等机制,

例如存在DEP(NX)的话就不能直接执行栈上的数据,存在ASLR的话各个系统调用的地址就是随机化的

 

程序保护

  1. CANARY:canary英文为金丝雀,意指曾今矿工用金丝雀的存活与否来确认矿地中是否有有毒。在这里我们就是用这个canary指值来确认栈是否溢出。
  2. NX:开启的NX保护的程序是堆栈不可执行的。所以以前常用的jmp espjmp rsp等跳板技术跳到栈中执行shellcode的技术就不能用了。
  3. ASLR:Address space layout randomization地址空间布局随机化技术。这里的地址随机化仅仅视对用户态的,不是内核的地址随机,内核的地址的分布还是使用的固定虚拟地址。关闭地址随机化的选项

在编译时加入-fno-stack-protector和-z execstack

gcc -fno-stack-protector -z execstack -o level1 level1.c  这个命令编译程序。-fno-stack-protector和-z execstack这两个参数会分别关掉DEP和Stack Protector


 

转载于:https://www.cnblogs.com/rookieDanny/p/8509033.html

相关文章:

  • Notes 20180308 : 语句
  • 软件工程阅读笔记一
  • Servlet中forward和redirect的区别(转)
  • (1)常见O(n^2)排序算法解析
  • 性能测试---不同视角看性能和相关术语
  • java ee5的新特性
  • [LuoguP1141]01迷宫
  • webpack学习笔记1
  • POJ2187 旋转卡壳 求最长直径
  • 《Java并发编程的艺术》--Java中的锁
  • win10 vs2015源码编译tesseract4.0
  • Go语言备忘录(2):反射的原理与使用详解
  • ubuntu16.04 更换源
  • Django中间件middleware
  • 结构图
  • ES6指北【2】—— 箭头函数
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 0x05 Python数据分析,Anaconda八斩刀
  • Flannel解读
  • flask接收请求并推入栈
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • scala基础语法(二)
  • SOFAMosn配置模型
  • STAR法则
  • 力扣(LeetCode)56
  • 模型微调
  • 你不可错过的前端面试题(一)
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 运行时添加log4j2的appender
  • 第二十章:异步和文件I/O.(二十三)
  • # C++之functional库用法整理
  • # Java NIO(一)FileChannel
  • # 飞书APP集成平台-数字化落地
  • #Linux(Source Insight安装及工程建立)
  • (2)MFC+openGL单文档框架glFrame
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (6)STL算法之转换
  • (floyd+补集) poj 3275
  • (pojstep1.1.2)2654(直叙式模拟)
  • (力扣)循环队列的实现与详解(C语言)
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (译) 函数式 JS #1:简介
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • ... 是什么 ?... 有什么用处?
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .NET建议使用的大小写命名原则
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [boost]使用boost::function和boost::bind产生的down机一例