学pwn所感(溢出)(后序更新)

pwn溢出做题思路:

理论参考大佬级别入门博客:https://www.jianshu.com/p/187b810e78d2
实战参考博客:https://blog.csdn.net/qq_38204481/article/details/80099622
相关理论知识:https://www.cnblogs.com/ichunqiu/p/11196219.html

1.先nc目标的端口,运行程序,查看和记录程序的作用。
将文件放进Linux下,然后file 文件查看文件是动态的链接,
还是静态的链接;是64位,还是32位的。
    
2.提高得到二进制文件的权限,再然后查看程序的保护措施:checksec+文件名

NX是文件堆栈不可执行,Stack是栈溢出保护

3.再运用相对应位数的ida,(特别注意可能存在ida版本型号的不对,无法打开文件的问题),
对程序反编译,先查找关键的字符串,然后再对程序运用f5反编译主函数,找到可以利用的漏洞。

语句查看{cyclic -l xxxxxxxxxxx(地址)},cycylic 100,还gdb ./
例如:溢出的,首先先找到可以利用溢出的代码,然后计算相对应得栈的大小,
然后构造对应的payload,例如:payload = 'a' * 0x14 + 'bbbb' + p32(success_addr) 

4.剩下的就是经验了,和相关的知识,多刷点题,总结遇见的知识点。



gdb ./文件名
chomd +x 名字
pattern_create 256
pattern_offset 地址

from pwn import*
p= process(“程序地址”) 执行程序
p.sendline(内容) 向程序发送指定内容
p.interactive() 切换到用户交互模式

p32(把地址拆成32位地址形式)




接触pwn才两个月的我:

个人觉得学pwn首先应该是对LEA指令的学习,也就是那些mov指令、call指令、xor指令、cmp指令,jnz指令等,这些LEA指令的作用有个了解,也应该对栈和堆的知识有所了解。然后就是对编译过程的了解,这样就更好的发现程序的漏洞。然后再注重实战,多做pwn题,复现1day漏洞,多复现漏洞,对常见漏洞原理有个了解,为以后挖漏洞埋下伏笔。也要善于利用工具,但还是要懂原理,为啥会有漏洞,啥是漏洞。


后续所学:
    从c到可执行文件
    Intel  和  AT&T  语法
    shellcode  编写与利用
    file,checksec
    栈、函数调用、寄存器
    栈溢出
    gdb动态程序分析

你可能感兴趣的:(pwn,pwn知识)