Betemoth5
这道题要读反汇编得到的代码,关键是有几个常量的意义要弄清楚。首先是发往本机的1337端口,然后是凭记忆,发的是UDP。所以我们后台运行nc -u -l 1337 > /tmp/pass,再运目标程序,就可以得到密码
View ArticleBehemoth6
这道题会在behemoth6_reader中执行用户提供的shellcode。我开始想的是直接就在那里把密码读取了,但reader没有setuid,所以权限不够。这样的话就只能写一个输出HelloKitty的shellcode了。代码如下BITS32xoreax,eaxpusheaxpushword0x7974push0x74694b6fpush0x6c6c6548;HelloKittymovecx...
View ArticleBehemoth7
这道题稍微和之前不太一样,在main开始时先push ebp, 又push edi, 然后and esp 0xfffffff0, sub esp 230h。但ida这里没搞清楚,字符数组是在esp+24h处,但ida显示的是ebp+210h,明显不对,估计是因为又push...
View ArticleLeviathan
leviathan0家目录下有个.backup文件夹,里面有一个bookmarks.html。直接用grep搜leviathan,得到密码leviathan1以其为结尾反编译,发现只是简单地比较字符串,得到密码leviathan2没发现溢出,单纯race condition的话又有点来不及,所以是command injection....
View ArticleNarnia
Narnia0要改写内容很简单,20个填充字符加上0xdeadbeef,但问题是用perl输入后sh立刻就退出了……后来在网上搜了下,用cat可以读用户输入,然后输出通过管道送到sh那里(perl -e 'print "A"x20 . "\xef\xbe\xad\xde"'; cat) | ./narnia0Narnia1只需要把shellcode放到环境变量里就可以了,而且inovke...
View ArticleNatas
natas0查看网页源代码即可natas1鼠标右键被禁止了,我是把网页保存下来看的natas2说当前页面没东西,看了源码似乎确实,但有一个图片在files文件夹下面,访问那个文件夹就可以发现密码natas3当前页面还是没东西,连google都找不到,于是去看robots.txt,发现文件夹,访问发现密码natas4修改referer即可,密码是natas5在cookie里改logged,得到密码为n...
View ArticleVortex0
第一题就花了好久……首先,获得密码的链接不是ssl。我开始想用命令行来完成,即用netcat。查了下可以通过fifo来交互:$ rm -f /tmp/f; mkfifo /tmp/f $ cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f...
View Articlevortex1
通过输入’\’,可以将ptr的位置往上挪,由此可修改ptr上方的内容。另外,由于会检查ptr是否低于buffer下界,另外反汇编发现main函数有stack保护,所以不能修改main的返回地址了但他也提供了一个执行shell的机会,只要ptr的值最高位是0xca。坚持发现ptr保存在esp+14h,其初始值即buffer+sizeof(buffer)/2在esp+11ch。由于小端,ptr最高位在e...
View Articlevortex2
$$只是在shell中代表PID,所以创建tar文件时只是两个字符。但解压时shell里,所以要用引号保护:$ tar xf '/tmp/ownership.$$.tar' -C .另外,在创建时,需要把密码文件压缩。可以进到目录/etc/vortex_pass下面,然后执行$ /vortex/vortex2 vortex3...
View Articlevortex3
这道题用的是exit,所以不能通过修改返回地址来做了但从提示也可以看出要修改got之类的。具体看反汇编的代码,最后exit是call 0x8048320,进去看,那里是jmp *0x08049738。我们可以修改0x08049738处的值为buf, 再将shellcode放在buffer里即可具体地,地址0x08049738保存在0x08048322处,而buf与lpp相距132。故$...
View Articlevortex4
format string。由于还是exit,所以与上题一样,修改got.由于argc必须为0,所以要另外写一个c程序,用exec。我们把argv设为{NULL}, 要修改的地址放到envp[0], shellcode放到envp[1], format string放到envp[2]。这样printf就会打印envp[2]还是用寻找A的方式,大概确定了format...
View Articlevortex6
反汇编之后,发现同样存在format string。但这次还有一restart函数,检查发现他exec了我们的argv[0]。但是argv[0]可以是任意的内容提交给他,所以我们写一个读密码的程序:#include <unistd.h>#include...
View Articlevortex7
这道题要求构造一个符合crc的输入来造成溢出。关于CRC,这里有一篇详细的文章为了reverse CRC,我们先找到所用的crc table在文件中的位置,然后将其dump出来:$ hexdump -v -n 1024 -s 1504 vortex7 -e '"0x" 1/4 "%08x"","' | fold -b44此外,我们还需要根据最高位字符来构造reverse...
View Articlevortex8
这道题里用了setresuid。但是调用的方式是通过syscall,我实验了下,如果是直接setresuid,那么子线程的uid被改变了;而如果是syscall,那么子线程的uid不变。现在还不清楚这是为什么,估计是和signal什么的有关。总之,现在必须在子线程里invoke...
View Articlekrypton
krypton0 base64解码 <pre class="lang:sh decode:true ">$ echo “…” | base64 -d -</pre>krypton1 rot13解码...
View Articleutumno
utumno0和semtex4类似,这次的也是没有读权限。还是用xocopy把内容dump出来,elf地址用的是0x08048000。再用strings查看,发现类似是密码的内容utumno1会打开目录,检查包含的文件的文件名。必须要是以sh_开头;然后漏洞在run函数里面,会把d_name[3]的地址放到返回地址。所以把payload放在文件名sh_的后面即可。...
View Article