W-L学习打卡(7.8)
Posted 水番正文
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了W-L学习打卡(7.8)相关的知识,希望对你有一定的参考价值。
突然发现好快就要去W-7城市,时间已经不多了,想好好躺几天,不过每天睡到十二点是大可不行了,老睡这么晚感觉把握不住时间了,明天开始十点半 十点 慢慢调整回九点,话不多说,写list了。--7.8
7.8 To do list:
1.Pwn笔记大杂烩出场
2.Cpp看完第七章
3.快速排序复现
4.每日锻炼
一:Pwn笔记大杂烩
事实上写的不是很好,但重要的是过程,把全部笔记理了一下。
先分为几大块
1.pwntools函数
2.pwndbg pwntools插件使用
3.ret2text ret2shellcode ret2libc(cannary参考第七节笔记)
4.汇编函数知识
5.SUNDRY
1.pwntools函数
1.1
参数: -d 反汇编
-M intel(架构)
objdump -d -M intel xxxx
1.2
gcc -no-pie -fno-stack-protector -z execstack -m32 -o read read.c
PIE CANNARY NX 架构 目标 源
1.3
remote("域名或ip地址","端口号")
1.4
objdump
1.5
shellcode.ljust(112,'P')
112个字节在原本Shellcode上不够的填充P
1.6
这条语句系统会帮忙编写shellcode
shellcode = asm(shellcraft.sh())
根据你的context(arch="i386 or amd64" , os = "linux")
1.7
p.recvuntil(": ") #当交互出现": "后发送payload
1.8
vmmap
在一个地方设置断点,然后输入这条指令可以查看不同内存区域的权限
1.9
ROPgadget
这两条常用指令
ROPgadget --binary ./xxx --only "pop|ret" | grep "eax"
指令 寄存器
ROPgadget --binary ./xxx --string "/bin/sh"
要找的字符
1.10
ldd查看动态库依赖关系
1.11
pwntools入门文献
https://note.youdao.com/s/RVkPsHhJ
2.pwndbg peda插件使用
参考文献:https://blog.csdn.net/Breeze_CAT/article/details/103789233
3. ret2text ret2shellcode ret2libc
3.1 ret2text
最基本的状况,有system函数,直接覆盖返回到system
3.2 ret2shellcode
没有NX保护的前提下,将自己写的shellcode覆盖到段上,段要有执行权限,然后返回到该段执行system
32位shellcode 参考笔记:https://note.youdao.com/s/43LWuLha
手写32位笔记:https://note.youdao.com/s/3354T450
64位shellcode 参考笔记:https://note.youdao.com/s/ZaBj03c
手写64位笔记:https://note.youdao.com/s/Gt0XVuZv
3.2 ret2libc
关于plt和got表参考笔记:https://note.youdao.com/s/LpGDrPzu
4.汇编 python 等函数知识
4.1
enter等价于:
push ebp
mov ebp,esp //开启栈帧
这里代表入口函数
leave等价于:
mov esp,ebp //恢复栈帧
pop ebp
释放栈帧
ebp为原esp地址
esp恢复为ebp相当于跳回原地址
4.2 call一个函数时,栈的情况
call就是
一个push(原函数地址,也就是ret返回的地址)
一个jmp
4.3
and esp 0xFFFFFFF0
内存对齐
主流编译器的编译规则规定 “ 程序访问的地址必须向16字节对齐(被16整除)” 内存对齐之后可以提高访问效率。
4.4
一般用于跳转,标志位会改变
i r查看标志位
用计算器转换成二进制查勘表标志位
参考文献:https://blog.csdn.net/u012763794/article/details/60955530
4.3
python字符窜截取
#gets_addr = u64(p.recv()[:8])
#gets_addr = u64(p.recv(8))
5.SUNDRY
tip1:
在DOS汇编下,不配对的push和pop会导致错误的返回地址,程序会挂掉。
但在win32汇编下,push和pop就没有事,就算逻辑上产生错误,程序也能正常返回,因为是靠leave指令,从ebp把原始值取出,也就是把esp改的一塌糊涂也没关系,但要是改了ebp程序也就崩溃了。
tip2:
AND
手写shellcode细节:https://note.youdao.com/s/Gf6dOYPP
关于libc版本切换,libcSeacher,libc手动查询,等开学问下学长(希望问的到)
关于手写/bin/sh,值得复习:https://note.youdao.com/s/1XP9QIRH
二:Cpp
看完了第七章,goto语句坚持不用,我以为要教我如何使用goto语句,然而在极少情况下要使用。
三:算法导论
快速排序真的嗯(有篇文章写的好所以理解的快)。
四:每日锻炼
今天练了两次,说实话锻炼了感觉消化功能都好了点。
事实证明,今天量其实不多,只要状态好连续做,还是挺快能完成的,现在头莫名都会点晕,还要还要早起,所以今天正好早点睡,加油早点睡。night.
以上是关于W-L学习打卡(7.8)的主要内容,如果未能解决你的问题,请参考以下文章