| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> W-L学习打卡(7.8) -> 正文阅读 |
|
[系统运维]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. |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:20:34- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |