Pwntools的context设置与shellcode

 

一、context

context 是 pwntools 用来设置环境的功能。在很多时候,由于二进制文件的情况不同,我们可能需要进行一些环境设置才能够正常运行exp,比如有一些需要进行汇编,但是32的汇编和64的汇编不同,如果不设置context会导致一些问题。

一般来说我们设置context只需要简单的一句话:

context(os='linux', arch='amd64', log_level='debug')  或者    context(os='linux', arch='amd64')

 

这句话的意思是:

1. os设置系统为linux系统,在完成ctf题目的时候,大多数pwn题目的系统都是linux
2. arch设置架构为amd64,可以简单的认为设置为64位的模式,对应的32位模式是’i386’
3. log_level设置日志输出的等级为debug,这句话在调试的时候一般会设置,这样pwntools会将完整的io过程都打印下来,使得调试更加方便,可以避免在完成CTF题目时出现一些和IO相关的错误。

 

二、汇编与shellcode


有的时候我们需要在写exp的时候用到简单的shellcode,pwntools提供了对简单的shellcode的支持。
首先,常用的,也是最简单的shellcode,即调用/bin/sh

语句: shellcode = asm(shellcraft.sh())

print(asm(shellcraft.sh())) # 打印出汇编后的shellcode

注意,由于各个平台,特别是32位和64位的shellcode不一样,所以最好先设置context。asm也是架构相关,所以一定要先设置context,避免一些意想不到的错误。

使用方法即:

context(os='linux', arch='amd64')

p.sendline(asm(shellcraft.sh()))

posted @ 2021-03-07 17:37  KnowledgePorter  阅读(129)  评论(0)    收藏  举报