下面我将参考其他资料来一步步示范shellcode的几种编写方式 0x01 系统调用 通过系统调用execve函数返回shell C语言实现: #include<unistd.h> #include<stdlib.h> char *buf [] = {"/bin/sh",NULL}; void main { execve(); exit(); }   execve函数在父进程中fork一个子进程,在子进程中调用exec函数启动新的程序.execve()用来执行第…
栈溢出 一.基本概念: 函数调用栈情况见链接 基本准备: bss段可执行检测: ​ gef➤ b main Breakpoint at . gef➤ r Starting program: /mnt/hgfs/Hack/CTF-Learn/pwn/stack/example/ret2shellcode/ret2shellcode gef➤ vmmap ROPgadget ROPgadget --binary rop --only 'pop|ret' | grep 'eax' ROPgadget…
准备知识引用自https://www.freebuf.com/articles/rookie/182894.html 0×01 利用思路 ret2libc 这种攻击方式主要是针对 动态链接(Dynamic linking) 编译的程序, 因为正常情况下是无法在程序中找到像 system() .execve() 这种系统级函数 (如果程序中直接包含了这种函数就可以直接控制返回地址指向他们,而不用通过这种麻烦的方式). 因为程序是动态链接生成的,所以在程序运行时会调用 libc.so (程序被装载时…
一.函数调用栈过程总结 Fig 1. 函数调用发生和结束时调用栈的变化 Fig 2. 将被调用函数的参数压入栈内 Fig 3. 将被调用函数的返回地址压入栈内 Fig 4. 将调用函数的基地址(ebp)压入栈内,并将当前栈顶地址传到 ebp 寄存器内 二.函数调用栈实例说明 首先我们来看看以下程序调用栈的过程: int sum(int a,int b) { ; temp = a+b; return temp; } int main() { ; ; ; ret = sum(a,b); cout<<…
看门见码 #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> void getshell(void) { system("/bin/sh"); } void init() { setbuf(stdin, NULL); setbuf(stdout, NULL); setbuf(stderr, NULL); } void vuln() {…
果然集训就是学长学姐天天传授水铜的动态规划和搜索,今天讲DP由于困意加上面瘫学长"听不懂就是你不行"的呵呵传授,全程梦游.最后面对连入门都算不上的几道动态规划,我的内心一片宁静,甚至有一丝的想笑. 弱鸡第一次写博客,来分享一些对汉诺塔问题的理解吧: http://www.cnblogs.com/fanzhidongyzby/archive/2012/07/28/2613173.html 遵从tls"遇到不懂问题就xjb乱搜"原则,搜到了这篇文章.看完之后基本有了点眉…
这个ACM退役帖,诸多原因(一言难尽...),终于决定在我大三下学期开始的时候写出来.下面说两个重要的原因. 其一是觉得菜鸡的ACM之旅没人会看的,但是新学期开始了,总结一下,只为了更好的出发吧. 其二是感觉没什么好写的,直到上学期期末我发现ACM给了我一些宝贵的东西,想跟大家分享一下. 主要有缘起ACM,如何准备ACM的,ACM究竟给了我什么三个部分内容(长文警告). 缘起ACM 从高中的时候说起....不,开玩笑,还是从大学说起吧.高考结束后,由于分数没有过二本线,无奈的选择了郑州的一所民办…
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/12/es-code03/ 前提 上篇文章写完了 ES 流程启动的一部分,main 方法都入口,以及创建 Elasticsearch 运行的必须环境以及相关配置,接着就是创建该环境的节点了. Node 的创建 看下新建节点的代码:(代码比较多,这里是比较关键的地方,我就把注释直接写在代码上面了,实在不好拆开这段代码,300 多行代码) public Node(Environment env…
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/11/es-code02/ 前提 上篇文章写了 ElasticSearch 源码解析 -- 环境搭建 ,其中里面说了启动 打开 server 模块下的 Elasticsearch 类:org.elasticsearch.bootstrap.Elasticsearch,运行里面的 main 函数就可以启动 ElasticSearch 了,这篇文章讲讲启动流程,因为篇幅会很多,所以分了两篇来写…
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/25/es-code01/ 软件环境 1.Intellij Idea:2018.2版本 2.Elasticsearch 源码版本: 6.3.2 3.JDK:10.0.2 4.Gradle : 建议 4.5 及以上版本 5.Macbook Pro 2017 安装 ElasticSearch 去 https://www.elastic.co/downloads/past-releases 这里…