Quantcast
Channel: 记事本
Viewing all articles
Browse latest Browse all 122

Leviathan

$
0
0
  • leviathan0
    家目录下有个.backup文件夹,里面有一个bookmarks.html。直接用grep搜leviathan,得到密码
  • leviathan1以其为结尾
    反编译,发现只是简单地比较字符串,得到密码
  • leviathan2
    没发现溢出,单纯race condition的话又有点来不及,所以是command injection. 在当前目录下创建一个到目标文件的链接passwd->leviathan3,再创建一个文件名为anyfile;cat passwd的文件。那么在system执行的时候,命令注入,目标文件的内容会通过链接passwd获得
  • leviathan3
    是在do_stuff函数里,简单的字符串比较
  • leviathan4
    他会把密码的每个字符编码,然后输出。所以我们可以先构造码表,然后反推出密码。下面是python代码,其中字母表包括换行符,因为文件中可能以其为结尾
#!/usr/bin/env python2importsysdefconvert(c):res=[]n=ord(c)i=0whilei<=7:ifn&128:#negativeres.append('1')else:res.append('0')i=i+1n=(n<<1)&255return''.join(res)if__name__=='__main__':alpha='0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM\x0a'book=[convert(x)forxinalpha]codes=sys.argv[1].split(' ')res=[]forcodeincodes:idx=book.index(code)res.append(alpha[idx])print''.join(res)
  • leviathan5
    程序会输出某文件的内容,于是把目标文件链接到那里即可
  • leviathan6
    简单地比较数字

Viewing all articles
Browse latest Browse all 122

Trending Articles