摘要:0x00001:顺序表概念 顺序存储表示:将数据元素按其"逻辑先后次序"存放在一组地址连续的存储单元 顺序表:采用了顺序存储结构的线性表,这里可能有些绕 正如上面的图:比如A[0】与A[1]逻辑上相邻,相应的物理位置相邻,因此可以用“物理位置相邻”代表线性表数据元素的逻辑关系 随机存取结构:存数和取 阅读全文
posted @ 2020-03-17 21:26 左岸风息 阅读 (10) 评论 (0) 编辑
摘要:以上是帧指针的示意图:下面是函数调用的示意图 字节差取决于程序位数,32位为4,64位为8 阅读全文
posted @ 2020-03-14 10:16 左岸风息 阅读 (9) 评论 (0) 编辑
摘要:0x0001:brk分配内存 直入主题:其实在调用malloc(),malloc调用brk(小于128KB)或mmap syscall来获取内存。malloc使用的系统调用。 当 ASLR关闭时,start_brk和brk将指向data / bss段的结尾(end_data). 启用ASLR后,st 阅读全文
posted @ 2020-03-13 18:29 左岸风息 阅读 (13) 评论 (0) 编辑
摘要:结合源代码和Fun函数,了解一下scanf,puts的工作机理具有一定的相似性,尤其在取址方面 lea指令与之相关 在gdb peda中s进入Fun,查看首地址之后的内容(未被写入前),之后再看写入后的变化 阅读全文
posted @ 2020-03-10 22:22 左岸风息 阅读 (9) 评论 (0) 编辑
摘要:gcc 当不使用任何选项时,gcc将会生成一个名为a.out的可执行文件 objdump d a.out 则会查看主要的反汇编代码,反汇编a.out中的需要执行指令的那些section,我先定位到main(由于是64位ubuntu,所以默认程序是64位,下图可以看到canary,具体的传参机制可以参 阅读全文
posted @ 2020-03-10 15:32 左岸风息 阅读 (7) 评论 (0) 编辑
摘要:0X0001:函数调用 main(call) fuc_a(call) fuc_b(形成连续增长式栈空间) 阅读全文
posted @ 2020-03-10 07:54 左岸风息 阅读 (12) 评论 (0) 编辑
摘要:0x0001未初始化数组在VS中 Visual Studio中,未初始化的栈空间用0xCC填充,而未初始化的堆空间用0xCD填充。 而0xCCCC和0xCDCD在中文GB2312编码中分别对应“烫”字和“屯”字。 如果一个字符串没有结束符'\0',输出时就会打印出未初始化的栈或堆空间的内容,这就是大 阅读全文
posted @ 2020-03-09 23:07 左岸风息 阅读 (8) 评论 (0) 编辑
摘要:0X00001 puts函数 s可以是字符指针变量名、字符数组名,或者直接是一个字符串常量。功能是将字符串输出到屏幕。输出时只有遇到 '\0' 也就是字符串结束标志符才会停止。 puts() 输出更简洁、更方便。而且使用 puts() 函数连换行符 '\n' 都省了,使用 puts() 显示字符串时 阅读全文
posted @ 2020-03-09 22:57 左岸风息 阅读 (10) 评论 (0) 编辑
摘要:0x0001:指针分析 0x0002:指针数组&堆&空类型指针 这里补充指针数组的知识,与之有关的主要的堆(动态内存分配) 阅读全文
posted @ 2020-03-06 12:04 左岸风息 阅读 (8) 评论 (0) 编辑
摘要:0x00001:ASLR报错 如上问题是我执行脚本遇到的,改了脚本几次,依然没变,嗯...... 当我用了百度,据说是ALSR没关,的确,这导致我脚本中的addr是一个随机数,从而攻击失败 0x00:引用一下查到的知识:在传统的操作系统里,用户程序的地址空间布局是固定的,自低向高依次为代码区, BS 阅读全文
posted @ 2020-02-27 20:50 左岸风息 阅读 (11) 评论 (0) 编辑