• 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


  • 相关阅读:
    农历
    成熟度模型-数据安全
    vscode升级go插件
    关于作者
    SpringBoot入门十二(整合之项目打包部署运行)
    SpringBoot入门十一(整合之RedisTemplate的使用)
    SpringBoot入门十(整合之Junit测试)
    SpringBoot入门九(整合之通用mapper)
    SpringBoot入门八(整合之mybatis)
    SpringBoot入门七(整合之事务和连接池)
  • 原文地址:https://www.cnblogs.com/rookieDanny/p/8509033.html
Copyright © 2020-2023  润新知