- 博客(18)
- 收藏
- 关注
原创 Playfmt
找这种三条栈地址的地址链,通过修改0xffdba828(偏移6处)指向0xffdba82c,此时该链条上最末端为0x80485ea,这时再改0xffdba82c指向的地址为printf got表即可,此时栈上可通过栈地址为0xffdba82c处修改got表!注意一点是每次输入要补齐200字节,避免read时将两次发送的读到一起.提供本地打通exp,环境不一样,远程就不想调了qaq!非栈上格式化字符串攻击。
2023-09-25 11:23:16
102
1
原创 Ciscn_2019_sw1<fini_array>
在执行main函数之前会调用init_array里的函数,在执行完main函数之后调用fini_array里的函数,因此这道题思路为通过第一次printf劫持printf的got表为system的函数地址,劫持fini_addr为main函数的地址,第二次输入"/bin/sh\x00",当执行到printf(“/bin/sh\x00”)时,由于劫持为system函数,因此执行system(“/bin/sh\x00”),拿到shell。
2023-09-22 15:39:55
159
1
原创 pwn到天亮之初阶知识汇总
面向返回编程ELF(Executable and Linkable Format)文件是Linux环境中的一种二进制可执行文件。elf的基本信息存在于elf的头部信息中,这些信息包括指令的运行框架、程序入口等,可以通过来查看头部信息。elf文件中包含许多节(section),各个节中存放不同的数据,这些节的信息存放在节头表中,可用readelf -S。
2023-04-10 12:11:31
1137
原创 格式化字符串漏洞原理(待完善)
比如说,如果远程服务有一个格式化字符串漏洞,那么我们就可以攻击其可用性,使服务崩溃,进而使得用户不能够访问。分析输出:即以十六进制形式打印相对格式化字符串(位于栈顶处)偏移为6的内容,该图中打印0xfffd5e8处的内容(aaaa),输出61616161。由图可知,在运行到add(i, j)函数时,先压入参数j,i再压入返回地址,再压入ebp,最后压入局部变量。分析输出:相对格式化字符串偏移为1处的内容,以有符号整数打印,0xffffd5e4对应的有符号十进制,即-10780。一般会有如下几种操作。
2023-04-10 12:07:40
195
原创 Minix文件系统
*引导块:**包含一些引导的代码,启动时执行存放于该处的代码**超级块:**两个位图的长度、索引节点的个数、数据区的起始位置**索引节点位图:**索引节点的分配情况**数据区位图:**存储文件和目录的内容**索引节点区:**存放各个索引节点,索引节点包含文件的控制信息**数据区:**存储文件和目录的内容索引节点:存储文件和目录的控制块。
2023-04-10 12:06:12
103
原创 no matched libc,please add more libc or try others
打开libcSearcher目录下的libcdatabase:输入以下命令rm -rf *git clone https://github.com/niklasb/libc-database./get ubuntu 通过查看libcdatabase下的README.md文件获得get更新指令,执行./get时可能会出现以下报错信息:Requirements for download or update ‘ubuntu’ are not met. Please, refer to README.
2022-05-04 23:36:28
608
1
原创 大端小端法
01引言1.什么是字节序?字节序,顾名思义,就是多字节对象在内存中的存储顺序,那么什么时候讨论字节序呢?仅当讨论“原子化“的数据且字节数大于1时讨论字节序(打开一个文件时为字节流,不需要讨论字节序)2.计算机怎么存储?计算机在内存中存放的顺序是从低地址到高地址(不论大端小端法都按照这个方式存储)并且以字节(byte)也就是8位(bit)以基本存储单位存储。3.什么是高/低字节?高字节即最高有效字节(MSB),低字节即最低有效字节(LSB)。如:0X12345678 从高位到低位的字节依次是:12
2022-03-24 23:54:02
380
原创 判断中缀表达式括号是否合法
//注意 //1:该程序每次运行的时间必须小于10秒,否则会超时,程序超时将不会测试剩余的测试集 //2:该程序每次运行使用的内存不能超过1M,否则会返回错误 //3:该程序每次运行输出的结果最多显示1000个字符(多余的不显示),每行末尾的所有空格用□表示#include <iostream>#include<cstring>using namespace std;bool solution(char data[]){ int len =
2022-03-18 20:10:51
541
原创 字符数组与指针易错点
字符数组一: 长度混淆char array[100] = "asd";cout << sizeof(array) / sizeof(array[0]) <<endl;cout << strlen(array) <<endl;>>>> 100 >>>> 3sizeof 求得空间大小,单位为字节,不受内容的影响;strlen(char*) 求得为实际长度,从首地址开始,直到遇到第一的’\0’为止
2022-03-18 07:59:21
303
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人