C语言学习
C语言字符串1、字符串的三种类型 指针 这里涉及到强制类型转换,通过学习我们得知,Int *类型是定义了Int类型的指针(指针指向地址),而我们要想赋予这个指针一个int类型的常量,正常来说这他们两个的类型是不一样的,但是还c++允许我们进行强制类型转换,(被赋值的类型) 值可以实现不同类型之间的赋值。 结构 静态变量相当于初始化语句,只在第一次执行时发挥作用。 如果前面的static去掉则三次输出结果均为4 12345678910111213141516171819202122232425using namespace std;char * STRtok(char * p,char * sep){ static char * start; if(p) start=p; for(;*start&&strchr(sep,*start);++start); if (*start==0) return NULL; char...
堆
堆漏洞unlink https://blog.csdn.net/Morphy_Amo/article/details/122631424 unlink是什么?第一次学到这个知识的时候我还以为是某种漏洞,但是当我做题的时候看到一篇文章才发现,unlink是glibc中的一个宏: unlink()是glibc中的一个宏,其目的是将某一个空闲 chunk 从其所处的 bin 中脱链。在 malloc_consolidate() 函数中将 fastbin 中的空闲 chunk 整理到 unsorted_bin,在 malloc() 函数中用于将 unsorted_bin 中的空闲 chunk 整理到 smallbin 或者 largebin,以及在 mallo() 中获得堆空间时,均有可能调用 unlink()...
off by one
学习一下off by one 漏洞 off by one 主要是堆中的漏洞,这种漏洞一般是指单字节缓冲区溢出。 原理这种漏洞的产生往往与边界验证不严和字符串操作有关,当然也不排除写入的 size 正好就只多了一个字节的情况。 第一种:循环界限的判断失误 12345678910111213141516171819int my_gets(char *ptr,int size){ int i; for(i = 0; i <= size; i++) { ptr[i] = getchar(); } return i;}int main(){ char *chunk1,*chunk2; chunk1 = (char *)malloc(16); chunk2 = (char *)malloc(16); puts("Get Input:"); my_gets(chunk1, 16); return...
fini_array
放寒假了,由于前面的期末周都没有做题,先搞几个简单题做做吧,本来是这么想的。 结果学到了新的知识,fini_array,并不是很难。 这里看到main函数的时候一开始以为是栈迁移,但是泄露不出来起始地址;看到有格式化字符串想到任意地址写,但是没法随意跳转,比较头疼。 这里我们其实只要做到能再一次执行main函数就能达到攻击目的了。这里就用到了fini_array fini_array的作用: 没想到2019年就存在这样的题目了,自我反省一下。 题目中还有system函数。 那么只要修改printf的got表为system将fini_array改成main函数即可。 1234567891011121314151617代码内容from pwn import...
SROP
SROP感觉对SROP的知识还不够熟练,单独再学习一下。相关截图来自CTFWIKI signal机制signal机制是类unix系统中进程之间相互传递信息的一种方法。一般也称它为软中断(信号) 1、内核向某个进程发送signal机制,该进程就会被暂时挂起并进入内核态。 2、内核会为该进程保存相应的上下文,主要是将所有寄存器压入栈中,以及压入 signal 信息,以及指向 sigreturn 的系统调用地址。此时栈中的景象是这样的: 这里的ucontext和signfo就是我们做题时修改的Signal Frame 需要注意的是,这一部分是在用户进程的地址空间的。之后会跳转到注册过的 signal handler 中处理相应的 signal。因此,当 signal handler 执行完之后,就会执行 sigreturn 代码。 这一段感觉就和普通的栈差不多,在执行完毕之后有一个return,结构上很像,不难理解。 不同的架构下形成的signal frame是不同的 x86 x64 3、signal handler 返回后,内核为执行 sigreturn...
国城杯pwn
vtable_hijack使用ida打开一看发现基本什么漏洞都有了,算签到堆吧,最近正好学习了一下堆,没想到真给我做出来了,虽然比较基础,但还是非常开心。、 EXP:from struct import packfrom ctypes import *from LibcSearcher import *from pwn import *context(arch=’amd64’,log_level=’debug’)#context(arch=’i386’,log_level=’debug’)def s(a): io.send(a) def sa(a, b): io.sendafter(a, b) def sl(a): io.sendline(a) def sla(a, b): io.sendlineafter(a, b) def r(): io.recv() def pr(): print(io.recv()) def rl(a): return io.recvuntil(a) def...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment
