记事本

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...

vortex13

这道题和vortex12一样是猥琐流…… 题目说了栈还是不能执行,所以还是ROP。但这里陷入了思维定式,主要还是因为vortex12的影响,让我觉得还要修改got。但ROP不只是修改got,直接改返回地址也是可以的;而vortex12里也可以在主线程里改返回地址,但那样没用因为主线程已经去掉euid了。这道题的输入限制在20个字符,如果想修改got几乎是不可能的了…… 具体地,想要直接修...

vortex12

这道题和vortex8几乎是一样的,只是题目说了栈不能执行,所以只能ROP了。我开始还想用mprotect来恢复执行权限,但要传的参数里有\x00,比如地址必须是page size的倍数;而strcpy遇到\x00就停止了,所以最后没能用mprotect 思路还是和vortex8是一样的:在主线程里修改PLT,然后子线程里就调用了我们提供的函数,只是这里我们提供库函数system。 在主...

金陵科技杯信息安全大赛

做了漏洞利用类的第一题, Q11。反汇编发现是socket编程,那些enum实在是懒得找对应意思了,应该是socket(2,1,0)就开一个TCP 主要麻烦是只读5个字符,然后传给system()执行。看了下没发现溢出…… 后来想到可以利用重定向。一般来说连接过去的fd应该是4,于是执行sh<&4就会把我们的输入传给sh作为输入,但sh的输出没办法传回来 我先是试着用nc...

vortex11

这道题是在strawdog提示下做出来的。他也说其实可以不用去读phk代码,我连链接的文章都没看完…… 还是一步步来,打印变量的地址,发现第一次malloc(0x10)和malloc(0x800)之间相距0x1000+48。这0x1000用来放两个0x800,然后那48bytes应该就是一些信息了。 打印那部分内存,并对应到struct pginfo,void *page的地址正好是这个...

过滤了分号

过滤了分号后,不能结束语句了,但可以通过二元运算符来。比如 var a = 1 + alert(2) 加号也可以换成减号、乘、除、并、或、异或

sublime 3 build 3065

昨天打开subl3,提示说有新版本,于是更新到build 3065。但还需要稍微破解一下,因为是免费版。 试着enter key,会说key不对;用IDA分析,查找字符串”invalid”,然后基本上锁定了某个关键变量cs:…,在BSS段内,很有可能是保存验证信息的全局变量 然后看这家伙的xref,看了下对其读操作的几个,基本确定这个变量是1的话就验证成功;再找到所有对其写的地方,很多都...