记事本

krypton

krypton0 base64解码 <pre class="lang:sh decode:true " >$ echo “…” | base64 -d -</pre> krypton1 rot13解码 import codecs s='...' print(codecs.encode(s,'rot13')) kry...

vortex9

一登录就提示说you have a new mail,但是输入mail后又说没有邮件 然后去/var/spool/mail文件夹,发现密码文件

vortex8

这道题里用了setresuid。但是调用的方式是通过syscall,我实验了下,如果是直接setresuid,那么子线程的uid被改变了;而如果是syscall,那么子线程的uid不变。现在还不清楚这是为什么,估计是和signal什么的有关。 总之,现在必须在子线程里invoke shell。我们还是可以通过修改got来做到。也就是说,先在父进程unsafecode里执行我们的命令,来修改...

vortex7

这道题要求构造一个符合crc的输入来造成溢出。 关于CRC,这里有一篇详细的文章 为了reverse CRC,我们先找到所用的crc table在文件中的位置,然后将其dump出来: $ hexdump -v -n 1024 -s 1504 vortex7 -e '"0x" 1/4 "%08x" ","' | fold -b44 此外,我们还需要根据最高位字符来构造reverse t...

vortex6

反汇编之后,发现同样存在format string。但这次还有一restart函数,检查发现他exec了我们的argv[0]。但是argv[0]可以是任意的内容提交给他,所以我们写一个读密码的程序: #include <unistd.h> #include <stdio.h> int main (int argc, char *argv[]) { sete...

vortex5

md5破解,直接在网上破解155fb95d04287b757c996d77b5ea51f7,得到rlTf6。

vortex4

format string。由于还是exit,所以与上题一样,修改got. 由于argc必须为0,所以要另外写一个c程序,用exec。我们把argv设为{NULL}, 要修改的地址放到envp[0], shellcode放到envp[1], format string放到envp[2]。这样printf就会打印envp[2] 还是用寻找A的方式,大概确定了format string的内容...

vortex3

这道题用的是exit,所以不能通过修改返回地址来做了 但从提示也可以看出要修改got之类的。具体看反汇编的代码,最后exit是call 0x8048320,进去看,那里是jmp *0x08049738。我们可以修改0x08049738处的值为buf, 再将shellcode放在buffer里即可 具体地,地址0x08049738保存在0x08048322处,而buf与lpp相距132。故...

vortex2

$$只是在shell中代表PID,所以创建tar文件时只是两个字符。但解压时shell里,所以要用引号保护: $ tar xf '/tmp/ownership.$$.tar' -C . 另外,在创建时,需要把密码文件压缩。可以进到目录/etc/vortex_pass下面,然后执行 $ /vortex/vortex2 vortex3 --mode=444 这样压缩的文件权限是444。 ...

vortex1

通过输入’\’,可以将ptr的位置往上挪,由此可修改ptr上方的内容。另外,由于会检查ptr是否低于buffer下界,另外反汇编发现main函数有stack保护,所以不能修改main的返回地址了 但他也提供了一个执行shell的机会,只要ptr的值最高位是0xca。坚持发现ptr保存在esp+14h,其初始值即buffer+sizeof(buffer)/2在esp+11ch。由于小端,pt...