君莫笑系列视频学习(2)

早上九点起床,洗漱吃饭,要十点了,明天早点睡,希望寒假越起越早。。。

现在又到了开心的学习时间。

 

pwn入门系列-2-一个简单的例子

https://www.bilibili.com/video/av14824239/?spm_id_from=333.788.videocard.2

 

第2讲,开!

bss段上是未初始化的局部变量和静态变量,大小0x1000

这讲讲的是一个小例子

漏洞点就在vuln()函数,buffer数组局部变量只有8个字节,但是read函数可以读入0x40个数

 

程序中有read函数,所以plt表中有read函数,我们也可以拿来用(写exp的时候)了

 

拿到程序第一步先运行一下

 

查找多少个字节开始可以覆盖返回地址:

cyclic 100--复制生成的字符串--gdb ./程序--运行起来--输入的时候,把字符串粘贴进去--得到一个无效的pc地址--cyclic -l 地址--得到需要覆盖的地址长度

 

pwntools官方文档:https://pwntools.readthedocs.io/en/stable/

可以上官方文档查询一些知识

 

pwn ROP模块总结
rop = ROP(' .file)
rop.raw()
print rop.dump()
rop.call('read', [1,2,3])
rop.read(1,2,3)|
str(rop)

 

Linux下打开ida:

打开IDA文件夹所在位置--wine idaq.exe

 

View -- Open subviews -- Segments -- 找到bss段的起始位置

 

是最大后的exp,给了我一个新的思路,但是有些地方我不是很懂,希望在下面几节课里听明白吧。

为什么是str(rop)?

为什么要sleep(1)?

为什么感觉是先read,才传入的shellcode?

 

我的理解:
p.send的时候,用到了rop,像函数调用一样走到了上面。

 

第2讲done!

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书文的学习记录本

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值