首页 > 其他分享 >pwn前置知识

pwn前置知识

时间:2024-07-30 23:08:04浏览次数:16  
标签:知识 函数 查看 文件名 前置 gdb 地址 pwn 断点

既然是记录学习历程,我觉得还是从头开始吧
我刚开始学的时候就苦于找不到学习资源,找到了又看不懂的崩溃处境
好吧,是我不会正确上网+本人又菜又摆的缘故

 一般是从比赛官方下载附件
 下载到虚拟机 打开terminal——checksec 查看保护机制
 (拖进IDA/利用GDB,然后......此处省略脑子)
 编写脚本(用python)
 运行exp.py—>ls—>cat flag

Linux系统命令(在虚拟机中使用)

 nc——远端 
 ls——查看目录下文件
 cat flag——获得flag
 cd——打开文件
 touch 文件名——创建文件
 vim——编辑
 chmod +x ./文件名  ~或~chmod 777 ./文件名——给文件赋权限
 python 脚本名.py——运行脚本
 rm -rf 文件名——删除文件

IDA使用

  • Tab键从C语言和汇编之间切换
  • f5从汇编到C语言
  • 单击函数+按n——重命名函数(或者右键rename)
  • Options->General->Disassembly->Line Prefixes——看地址
  • shift+f12——查看字符串,一般利用它看看有没有后门函数,\bin\sh之类的东西

pwntools

from pown import* //调用pwntools
p=p.process("文件名") //本地运行
p=remote("ip",port)//打远端
p.send()发送消息,消息不存在换行符
p.sendafter("")//在读到“”之后发送
p.sendline()——发送信息后换行
p.recvline()接收并等待提示消息
p.interactive:进入交互模式,最后写
p.recvuntil(字符串):接收并等待提示消息
gdb.attach(p, ’b * 0xfa’):启动gdb
p64、p32——根据设置的context选择小端法或大端法对数字进行编码

汇编

1

GDB调试

  1. gdb 文件名 进入 pwndbg 动态调试
  2. break 函数名 或 break 地址值 或 break C语言行号 设断点
  3. run/r——运行程序 next 步过 step 步进
  4. stack 整数 查看多少栈
  5. vmmap 显示虚拟内存空间的分布
  6. info b 查看当前的断点 d 删除某一个断点
  7. s 进入函数
  8. c (continue )让程序继续执行
  9. p &printf 查看 printf 函数的真实地址
  10. x/10wx 地址 查看该地址后 10 个内存单元的内容
  11. xinfo 地址 查看该地址信息,包括偏移等

保护机制

1
https://www.cnblogs.com/wintrysec/p/10616856.html

标签:知识,函数,查看,文件名,前置,gdb,地址,pwn,断点
From: https://www.cnblogs.com/Jexy/p/18333523

相关文章

  • CTF_PWN_栈ROP
    栈溢出原理先把基本栈溢出原理说清楚,上图可能不太清晰。自己的话讲就是函数A原本rbp和rsp,call调用函数B后,rbp上去变成rsp,原本的rsp随着函数B各种参数,寄存器balabala继续往栈顶生长.调用B完再逆操作,回到函数A,rbp回到函数A的返回地址,rsp回到函数B底部,leave之后ret进入A......
  • CTF_pwn_堆
    https://blog.csdn.net/qq_43332010/article/details/120402102相关定义攻击原理及方法gdb调试理解https://blog.csdn.net/xy_369/article/details/130788093https://blingblingxuanxuan.github.io/2020/02/23/paper/#fastbin-attackhttps://ywhkkx.github.io/2021/12/12/堆......
  • Java基础知识
    @目录一、第一个java程序二、Java中标识符的使用三、Java中的数据类型1.基本数据类型2.引用数据类型3.String类型变量的使用(字符串类型)四、Java中的运算符1.算数运算符2.赋值运算符3.比较运算符4.逻辑运算符5.位运算符6.三元运算符一、第一个java程序publicclasshello{......
  • LLAMA3.1 8B 本地部署并配合Obsidian建立本地AI知识管理系统
    目前,LLAMA3.1模型分为8B、70B、405B三个版本,其中70B和405B对于显存的要求均已超过了一般家用电脑的配置(或者换个说法,用一张4090也是带不起来的),所以运行8B即可。LLAMA3.18B的性能约相当于ChatGPT3.5。经过我的测试4080、2080、intelultra9185H(无独立显卡,其能力约相当于1060)......
  • Python基础知识笔记——常用函数
    一、range()函数range()函数用于生成一个整数序列。它通常用于循环结构中,例如for循环,以提供循环的迭代次数。range()函数可以有1到3个参数。#range(start,stop,step)range(2,6,2)#生成从2开始,到6结束(不包括6),步长为2的一串数字#参数指定不完全时,默认从0开始,步长......
  • Java基础知识分享(二)
    写在前面昨天给了十题编程题,如果你能有思路很快速地完成它,说明你的Java数据类型、运算符、选择语句、循环语句部分的基础知识很好,接下来就来看看后面的方法、数组以及他们在JVM中的内存划分知识吧!方法语句定义格式:修饰符返回值类型方法名(参数类型参数名,参数类型参数名,......
  • java基础题(附答案)(第二天的知识点预热)
    一、填空题Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字。Java中整型变量有byte、short、int和long四种,不同类型的整数变量在内存中分配的字节数不同,数值范围也不同。对于int型变量,内存分配4个字节。在Java中浮点型变量有fl......
  • Java基础知识
    Java基础知识一、第一个java程序二、Java中标识符的使用三、Java中的数据类型1.基本数据类型2.引用数据类型3.String类型变量的使用(字符串类型)四、Java中的运算符1.算数运算符2.赋值运算符**3.比较运算符****4.逻辑运算符****5.位运算符****6.三元运算符**一、第一......
  • Python基础知识笔记---保留字
    保留字,也称关键字,是指被编程语言内部定义并保留使用的标识符。一、保留字概览  二、保留字用途 1.`False`:表示布尔值假。2.`None`:表示空值或无值。3.`True`:表示布尔值真。4.`not`:布尔逻辑操作符,对条件表达式取反。5.`or`:布尔逻辑操作符,用于连接两个条件表达式......
  • 嵌入式必备知识总结(一)
    计算机系统结构    计算机系统结构是计算机科学中的一个重要领域,研究计算机系统的设计和组织。计算机系统结构主要关注以下几个方面:1.计算机硬件组成a.中央处理单元(CPU)CPU是计算机的核心,负责执行指令并控制其他硬件组件。算术逻辑单元(ALU):执行算术和逻......