PWN学习总结(不断完善中)(有道云笔记)

学习路线

pwn一些概念理解
王爽汇编学习笔记
DOS-BOX及编译工具–百度网盘 提取码: ajba
linux知识学习(CTF主要考察linux环境下的漏洞利用)—菜鸟教程
nala包管理命令(个人感觉比apt好用)
python知识学习(写exp用)----菜鸟教程
gcc编译过程(了解一下)
vim用法(好难,正在学)
pacvim游戏
ctf-wiki-pwn漏洞利用总结图
刷题网站
BUUCTF
BUUCTF—libc源码
攻防世界

pwn环境搭建

借用另一个博主的pwn环境配置文章
再加上几个工具
patchelf修改不同libc下的程序加载
pwngdb(配合pwndbg使用)
glibc-all-in-one获取不同版本libc
一些工具简单用法(不断补充中)

做题基本流程

首先查保护(checksec 文件名)

linux保护机制

看链接类型(file 文件名)

动态链接简述
动态链接下的plt表与got表

赋予程序可执行权限(chmod +x 文件名)

linux文件属性

试运行(./文件名)

ida看伪代码

ida下载链接(有各种版本,最新为ida pro7.5)
提取码: nus4

理清程序执行流程
观察伪代码中的一些函数
注意一些常见(或危险)函数

写exp时注意64位与32位传参的区别
64位与32位传参的区别

注意点

1.一般libc函数或者栈什么的都在虚拟地址的最高的那块地方,所以64位之下,栈或者libc函数的虚拟地址一般都是7f 开头的,
2.linux里面命令可以用;或&分隔,
pwn的exp模板
3.程序关闭了标准输出和错误输入,
我们可以执行exec 1>&0将标准输出重定向到标准输入
4.有时候泄露处libc,system函数执行不成功,可考虑用execve(“/bin/sh”, rsp+0x30, environ)
泄露libc后,下载该libc,用one_gadget寻找该函数
5.泄露canary,canary最后一字节为\x00,可以通过覆盖canary最后一字节为其他值泄露canary
6.堆题泄露libc地址的思路,当只有一个unsorted bin时,该chunk的fd和bk均指向main_arena+0x58,而同一个libc中main_arena的偏移是固定的,因此可以计算获得libc地址
PWN学习总结(不断完善中)(有道云笔记)_第1张图片

几种漏洞利用方式(linux平台下)

1.栈溢出

2.整数溢出

3.格式化字符串漏洞

4.堆利用(不断学习补充中)

5.内核漏洞(还未学)

文章内容学习自
哔哩哔哩星盟安全团队pwn系列教程
ctf-wiki
王爽汇编
菜鸟教程
ctf竞赛权威指南pwn篇
CSDN博客
github
等等

你可能感兴趣的:(pwn,CTF,学习历程,网络安全,安全,linux,c语言,python)