===
PWN
虚假签到
checksec后,32位文件,只有NX栈不可执行保护。
载入ida后发现明显的栈溢出与格式字符串漏洞,且保护没有canary,在程序的字符中还可以看见backdoor。但是分析栈空间的时候发现多出来了个局部变量。
然后接着看汇编代码,发现这个局部变量有着canary的类似的作用,因为程序最后要靠它获得esp,那我们把它随便覆盖值的话肯定会导致程序访问无效地址出错。且程序在上图的r与s之间还多出了16字节的空间。
在gdb中清晰的看到:
所以按照以往改变返回地址来控制程序走向的话要多覆盖16字节数据然后通过第二次溢出将覆盖的局部变量改变回原来的值。写脚本攻击,失败。。。
又分析了栈的分布,没有错啊。发现程序中的格式化字符漏洞我没有用,才想起程序的栈随机化。每次加载程序的栈地址不一样,我不能把gdb调试看到的栈地址在脚本中用。
gdb找ebp-4的位置。
再次脚本攻击成功:
1 | from pwn import * |
MISC
welcome to the misc world
附件下载解压后一张png图片与一个压缩包,压缩包要密码,显然要从所给png图片找密码。
png图片是名字红蓝猜测rb隐写。因为是png图片直接使用zsteg工具看一下,可以看到隐藏了一张图片,提取出来发现密码:
用360压缩打开压缩包,可以看到有ntfs隐写流文本文件,直接输入密码查看:
以为是flag,提交但是错误的,这里就懵了很久。。。
后面想到还有一个hint.png图片,打开看没什么,拖进010editor发现最后有一长段字符:
从字符组成猜测是base64,解码后:
从这里明确了就是base64编码,但是解出的编码还是不清楚是什么,但确定是一种编码,进入编码网站把觉得会是都试了下,在escape编码发现:
然后记得有一种核心价值观编码,在这个编码网站也有(真的齐全),解码后:
那么之前flag里的内容就是通过base85加密后的,解密base85得到flag: