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)的主要内容,如果未能解决你的问题,请参考以下文章

W-L学习打卡(7.7)

W-L学习打卡(7.11)

W-L学习打卡(7.10)

W-L学习打卡(7.12)

W-L&W-G学习打卡(7.13-7.14)

学习打卡功能上线,告别懒惰,坚持学习!