君莫笑系列视频学习(1)
今天看四个视频好了,全部看完有点难。。。
pwn入门系列0,1,2和逆向基础速成
第一讲,开!
Linux环境下常见漏洞利用技术是君莫笑的资料,之前下载资料太多。。已经乱了
ida里面查看地址
1.在view里面找到对应的,然后空格键过去
2.Options-General-Line perfixes
ida的伪码里面有些变量定义是ida自己的,所以引入defs.h就可以编译运行了
shift+F12 查找字符串
以后讲p64打包的时候,可以这样演示一下,但是它打包的结果,我有点迷。。。
context.binary设置上下文,在当前的环境下,设置一些常见的变量。
例如,是32位的程序,就可以设置当前的上下文为32位
主要用在asm功能
shell就是可以进行远程命令交互
一般context.binary=一个路径,就可以自动设置
context. log level= ' debug'
设置好后,以十六进制显示每次交互信息(因为有些字符不可见)
send就是发送一些数据
sendline就是发送完数据后还跟着一个换行符
recv就是受到一些数据
recvuntil就是一直接收数据知道受到括号后面的数据
asm可以把一段汇编代码编译成一段机器语言
disasm可以反汇编
先转成了机器语言,又转回了汇编语言
使用前要安装:Binutils
ELF是pwntools提供的一个模块,你存进去一个路径,可以生成一个ELF对象,对象可以方便的查看他的一些信息
cyclic在命令行里就可以用,生成100个字符,是32位的,生成的字符中,任意找一个都是独一无二的
这样拿它来覆盖的时候,报错,即可找到从哪一位开始覆盖这个返回地址
如果要在64的话,需要-context指定成64位的
pwn template可以生成一个exp的模板
if那块就是如果带了参数I,就启用debug模式,以此类推。。。。
步入是汇编步入
源码单步是C语言等步入
x/20wx 0x4005fe(x/查看的数量 方式 地址)
b一个字节一个
w四个字节一个
g八个字节一个
x指代十六进制
hexdump也可以查看内存,后面有可以见字符串
如果(0xe80040084abfffff)还是一个值,它可以自动兼用
rop帮助我们利用程序的一段代码
一小段程序中已经存在的汇编代码
一般需要程序静态链接(statically linked),才直接生成rop链
ROPgadget --binary pwn2 --ropchain
自动生成一连串的链
自动生成后,只要把返回地址,覆盖到第一个地址(0x0806ed0a),它就可以直接获取到shell
查看本地文件的库版本:ldd 文件名
查看服务器上的库版本:libcdb.com或者Libc-database
可以查看程序的各个表,有偏移地址,有符号名
第1讲done!