摘要: printf常见格式化字符串 %d 整型输出(signed int) %o 八进制整型输出 %x 十六进制整型输出 %u 十进制整型输出(unsigned int) %c 输出一个字符 %p 打印参数地址 %s 打印参数地址指向的字符串 长度控制 %d 4字节 %hd 2字节 %hhd 1字节 %l 阅读全文
posted @ 2024-07-22 20:26 V1V0 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 拖进ida里面反汇编再让人工智能分析(我是废物)(后来给源码了,直接上源码) #include <string.h> #include <stdio.h> #include <stdlib.h> #include <inttypes.h> #include <capstone/capstone.h> 阅读全文
posted @ 2024-07-16 16:29 V1V0 阅读(10) 评论(0) 推荐(0) 编辑
摘要: checksec看保护:NX ida看一下 (这是main函数) func1() func2() func3() func4() func5() 先静态分析一波: 进到func5()之后系统会给一个起始地址,从这个地址开始输入,判断一下rbp指的地址有没有被改掉,被改掉就fail了,而很直观的看出b 阅读全文
posted @ 2024-07-16 15:13 V1V0 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 64位ida打开并反汇编的main(): 进入input_person函数: 仔细看可以找到一个特别的函数名win,点进去发现是后门: 根据ida看出程序的基本逻辑是输入name和age,输出age和name 很多时候ida会抽风(bushi),就比如operater=里面的参数没给,不过没关系,我 阅读全文
posted @ 2024-07-16 14:25 V1V0 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 主要是怕忘记,就当简单的记事本了,随时补充( 32位&64位 32(x86) 函数参数在函数返回地址上方 64(x64) 前六个参数依次保存在 RDI、RSI、RDX、RCX、R8、R9寄存器中 剩余的保存在栈上 另: 各寄存器主要功能 系统调用 步骤 1.加载系统调用号 将系统调用号加载到rax寄 阅读全文
posted @ 2024-07-16 11:38 V1V0 阅读(3) 评论(0) 推荐(0) 编辑
摘要: Seccomp(Secure Computing Mode) Linux内核中一种安全机制,旨在限制用户空间程序能够执行的系统调用 基本思想: 提供一个沙箱环境,使得进程只能执行一组预定义的、被认为是安全的系统调用 开启沙箱的两种方式 1.prctl() 重点关注两个option (1).PR_SE 阅读全文
posted @ 2024-07-16 11:36 V1V0 阅读(60) 评论(0) 推荐(0) 编辑
摘要: open(file,oflag) file 要读取的文件名(通常是“flag”或“flag.txt”)(还有'/flag'和'./flag'????) oflag 何种方式打开文件(通常设置为0,即以默认方式打开,一般来说都是只读) 返回值 一个文件描述符 read&write (fd , buf 阅读全文
posted @ 2024-07-16 09:31 V1V0 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 思路 两次输入,第一次根据puts等打印函数打印出的真实地址算出基地址,第二次根据基地址算getshell会用到的真实地址 from pwn import* e = ELF('./pwn') #调用目标文件的elf文件 libc = ELF('./libc-2.31.so') #调用libc版本文件 阅读全文
posted @ 2024-05-26 23:34 V1V0 阅读(20) 评论(0) 推荐(0) 编辑
摘要: ret2syscall ROP原理:在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets:以ret为结尾的指令序列) 来改变某些寄存器或者变量的值,从而控制程序的执行流程 核心:利用了指令集中的 ret 指令,改变了指令流的执行顺序 核心指令:ROPgadget --binary 文件名 阅读全文
posted @ 2024-05-26 23:29 V1V0 阅读(31) 评论(0) 推荐(0) 编辑