记事本

bof

代码如下 #include <stdio.h> #include <string.h> #include <stdlib.h> void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme); if(key == 0x...

unexploitable

这次是500分的rop #include <stdio.h> void main(){ printf("Not all the bugs are exploitable.\n"); printf("Try to exploit this one and you will see.\n"); printf("Or.. maybe y...

fd

1分的题…… #include <stdio.h> #include <stdlib.h> #include <string.h> char buf[32]; int main(int argc, char* argv[], char* envp[]){ if(argc<2){ printf("pas...

ELF segments and sections

有时候需要搞明白ELF文件里哪些部分是可写的,之前一直是稀里糊涂的,没有仔细去研究。今天稍微看了一下manpage,并动手试了下,大概明白了segments和sections之间的关系。 以下内容是基于我自己的理解写的,所以有些部分可能并不准确。 首先是两个概念,segments和sections,这两个是完全不同的。ELF文件除了ELF header,还有program header和...

安装metasploit

首先是ruby1.9,因为版本低,所以从aur里装的。为了方便起见,把PKGBUILD里面涉及到的后缀1.9全部去掉,方便。再给gemrc文件里加上 gem: --no-ri --no-rdoc gemrc文件可以通过 $ strace gem 2>&1 | grep gemrc 找到在哪里。 还需要bundle来管理gems $ gem install bundler...

save the world

http://www.wechall.net/challenge/Z/save_the_world/index.php 这道题和ISG里的yaya用的是同样的思路,这里再复述一遍。 据说这个方法的名字是Hastad,但我觉得思路其实很简单: 用中国剩余定理找到c, 使得c%n1=c1, c%n2=c2, c%n3=c3 求c的立方根p #!/usr/bin/python2...

vortex15

这道题给了两个文件,一个是加密用的程序,另一个是加密后的文件。加密的方法很简单,就是读plaintext和8 bytes的密码,然后 cipher[i]=key[i%8] ^ (~plain[i]) 从文件后缀知道加密的文件是tar.Z格式,但.Z格式搜了下似乎最多3个bytes可以知道,但提示说了密码有8bytes,所以要暴力破解还是有点多…… 后来试了下压缩vortex15,这其中c...

build edb on x86

我想在32位的环境下用edb,按理来说是支持的,但编译时发现他认为是在64位下面……可能还是和chroot有关。在网上搜了半天也没找到什么好的结果,最后用的是笨办法,把src/src.pro和plugins/plugins.pri里面头文件路径都用成x86,再编译就可以了

vortex14

这道题提供了一个文件,是hexdump了server和client的通信 首先根据的个数及前后字符,我们判断出通信的流程是:server->client, client->server, server->client。这是因为我估计当前面是换行(\x0a),后面是空格时,才代表通信;否则是密文 开始想着是不是在第一次server把key传给client(应该是两个das...

SimpleVM

这是tiger给的一个ELF文件,普通用户似乎无法执行?以root执行后要输入东西,然后有判断 具体地,用readelf -a可以发现文件是比较畸形的。而且entry point还在mmap映射区域之外?但从网上搜的结果,映射时还是会映射page size的整数倍;而想这个文件区域13c7之后还有内容,也会被映射到内存。所以entry point处的内容为 hexdump -C -v -s...