记事本

为filebeat+kafka+logstash添加认证与授权

我们之前自己开发的几套工具,目前部署在了外网。为了便于监控运营状况,需要对服务日志进行收集展示。 我们采用了目前非常火的ELK,es和kibana之前已经部署好了,所以需要完成的就是日志收集这一环节。具体地,我们采用filebeat+kafka+logstash,即: 在需要监控的各个节点上运行filebeat。相比logstash,filebeat更为轻量,也更为专一 将fi...

mmap的随机化

pwnable.kr上的题目tiny,我一直没有能够做出来,所以就决定先看看tiny_easy。tiny_easy与tiny很相似,只是栈变成了可执行的,所以可以将shellcode放在栈上。但是,由于栈的地址被随机化了,我们仍然需通过暴力尝试的方法来克服ASLR。 直到最近,我在网上搜索了解到mmap地址随机化的一些坑,才明白这两道题目可以通过某些手段来克服ASLR,从而避免暴力尝试。 ...

pwnable.kr之fsb

这道题目与格式化字符串(format string)攻击相关。程序会将argv和envp清空,但是调试发现,在栈的底部仍然存在可执行文件的路径。所以基本思路就是利用符号链接。将key内存地址写入栈上。随后利用格式化字符串,获取栈上该内存地址相对于栈顶的偏移。最后通过%x$hhx的方式,将key的内容改写为我们设定的值。 但是,实际操作时,还是掉了几个坑。 第一个,读入字符串使用的是rea...

pwnable.kr之syscall

这道题目提供了一个编写的内核模块源码,其中添加了一个syscall,其执行的逻辑基本与strcpy()相同,只是会将小写字母变为大写字母。 那么,这里的漏洞就很明显了,基本上就是一个向任意地址写任意内容的漏洞,只要写入的内容不包含小写字母。接下来,就是如何利用这个syscall,获取root权限,从而读取flag文件。 接下来,便对linux内核exploit进行简单的介绍。 在l...

pwnable.kr之uaf

由这道题目名称便可知,是需要使用Use After Free(UAF)。漏洞很明显,我们只需要首先free掉空间,再分配并向释放的地址写入内容,最后再次use即可。 具体地,在use时会调用类的虚方法introduce(),根据反汇编可知,该方法在虚表中是第二项,而第一项则是我们要调用的虚方法give_shell()。所以,我们需要向对象的虚表处写入的内容,是原虚表地址的前一项(即-0x8...

pwnable.kr之cmd2

这道题目与cmd1类似,也是设置了环境变量PATH,并检查输入的命令是否包含敏感字符串。所不同的是,这次把其他环境变量都清空了,所以需要通过别的方式来绕过。 具体地,检查敏感字符串如下: r += strstr(cmd, "=")!=0; r += strstr(cmd, "PATH")!=0; r += strstr(cmd, "export")!=0; r += strstr(cmd...

pwnable.kr之cmd1

由这道题目的提示可知,应该与环境变量有关。具体地,程序首先通过putenv将PATH设置为一个不存在的地址: putenv("PATH=/fuckyouverymuch"); 并检查了要执行的命令中是否包含了敏感字符串。 r += strstr(cmd, "flag")!=0; r += strstr(cmd, "sh")!=0; r += strstr(cmd, "tmp")!=0;...

pwnable.kr之mistake

由这道题目的提示可知,坑是在运算符优先级中。具体地,在C中,比较运算符(如>, <)的优先级,比赋值运算符(=)是高的。 而具体地,检查提供的代码,在打开文件时便存在问题: if(fd=open("/home/mistake/password",O_RDONLY,0400) < 0){ printf("can't open password %d\n", fd)...

Linux的capabilities机制

在传统的Linux的权限控制机制中,SUID(Set User ID on execution)是一个比较有意思的概念。例如,文件/bin/passwd设置了SUID的flag,所以普通用户在运行passwd命令时,便以passwd的所属者,即root用户的身份运行,从而修改密码。 但是,这也带来了安全隐患。我们运行SUID的命令时,通常只是需要使用一小部分特权,但是使用SUID,却可以拥...

DES详解

DES(Data Encryption Standard)是一种对称加密算法。之前我仅对DES的基本使用方式有了解,但对具体的加解密细节没有深入研究。这里,便是阅读相关资料后,对DES加密细节的记录笔记。 DES概述 DES是20世纪70年代初,由IBM设计的一种对称加密算法。DES使用56位的密钥,块长度为64位。当然,今天看来,这个密钥过于短了。 整个DES加密过程,可以大致分...