记事本

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加密过程,可以大致分...

CVE-2014-7911学习笔记

之前对Android root相关知识了解的不多,所以打算找几个洞学习一下。这篇是对CVE-2014-7911的相关分析文章的学习笔记。 漏洞成因 0x0 finalize()方法 Java中在进行垃圾回收时,要回收的对象的finalize()方法会被自动调用。类BinderProxy在文件/frameworks/base/core/java/android/os/Binder.ja...

密码学相关的一些代数

CTF比赛中遇到许多密码学的题目,往往最后都转化为相关的代数问题。因此,在这里就经常会用到的一些概念进行归纳总结。 原根(primitive root) 什么是原根 \(g\) 是模 \(n\) 的原根,如果所有与 \(n\) 互素的数,均与 \(g\) 的某个幂模 \(n\) 同余。换句话说,对于所有与 \(n\) 互素的 \(a\),存在 \(k\) 使得 \(g^k \equiv ...

ROP之return to dl-resolve

我们都知道,ELF在执行时,许多函数的地址是lazy binding的,即在第一次调用时才会解析其地址并填充至.got.plt。对于具体这一解析过程是如何完成的,之前并不怎么了解,只知道是在.plt中完成。其实之前Tiger有告诉我有一个名为roputils的工具,利用的就是构造所需信息,直接解析得到system的地址进而ROP。但直到最近才去研究其代码,搞明白这一技术,即return to...

0CTF 0ops app

这道题提供了一个sandbox.so,当时我连如何运行这道题都不知道……今天阅读了http://acez.re/ctf-writeup-0ctf-2015-quals-login0opsapp-breaking-out-of-a-pin-sandbox/和https://rzhou.org/~ricky/0ctf2015/0ops_app/test.py,终于搞明白这道题目了,在此记录。 ...

ISG决赛pepper

这道题目是去年参加ISG决赛时遇到的。二进制文件是有多个漏洞,我们当时是做的栈溢出,而堆溢出一直没有研究过。正好这两天在学习堆溢出,发现这道题和0CTF的freenote十分相似,不愧是同一批人出的题目。所以,在这里简要记录下,因为思路是完全一样的 具体地,通过修改restaurant的功能,我们可以重新编辑restaurant的description。description是保存在堆上的...