ctf mysql hash传递_分享个 CTF 小工具 bruteHASH

别问,问就是为了 CTF

思路源于一次三小时十二题的内部 CTF 竞赛,其中一道简单 MISC 给出明文范围(字母数字)和 MD5 开头,要求穷举出 flag——这当然不难,python 十几行代码搞定,但是运行出结果竟然用了近 20 分钟,感觉十分没有性价比啊!!

于是想找一个高性能(C/C++)指定格式 HASH 穷举工具,呃 无果……

为了 CTF 需要构造 HASH 时能够“一把梭”,于是有了年轻人的第一个“轮子”

功能

随机或穷举指定格式 HASH 值,输出符合条件的"明文 HASH"

支持指定明文格式

不限定明文格式随机字符穷举

自定义穷举字符集

CTF 常见 HASH(MD4/MD5/SHA1)

设置 HASH 开头、结尾或包含字符串

帮助

Usage of bruteHASH.exe:

-a string

设置明文格式,支持?占位符,如 flag{?????}(Linux 下字符串请使用引号包裹)

-aa

不限制明文,随机穷举指定格式 HASH

-b string

按顺序组合穷举字符集(字符集顺序会严重影响爆破速度,请尽量精确)

d 数字 | l 小写字母 | u 大写字母 | h 十六进制字符集 | p 特殊字符 | r 可见字符

例如:指定爆破字符集为数字、字母 -b=dlu

-bb string

自定义穷举字符集

-c string

设置目标 HASH 值包含字符串

-e string

设置目标 HASH 值结束字符串

-i int

设置目标 MD5 位数 16 位或 32 位 (default 32)

-m int

设置 HASH 算法

0 MD4 | 1 MD5 | 2 SHA1 (default 1)

-s string

设置目标 HASH 值起始字符串

示例

随机字符穷举,HASH 中包含"6377666"的 SHA1

> bruteHASH -aa -c=6377666 -m=2

随机字符穷举,"0e"开头的 MD4

> bruteHASH -aa -s=0e -m=0

用自定义字符集穷举"c???new???"明文,32 位 MD5 包含字符串"3b605234ed"

> bruteHASH -a="c???new???" -bb=abcdefnutuvw_ -c=3b605234ed

用数字、大写字母穷举明文"flag{?????}"(?代表未知 5 位),16 位 MD5 开头为"b6dff925"

> bruteHASH -a="flag{?????}" -b=du -s=b6dff925 -i=16

声明

CTF 偶尔需要用到"特殊"HASH,比如 MISC 中已知个别明文字符和部分 HASH,要穷举 flag 明文; WEB 中构造 MYSQL 注入,要用指定字符集构造一个以"xxxxxxxx"开头的 MD5 ; PHP 弱类型 HASH 比较需要构造"0e"开头的 HASH 等等。但"爆破"HASH 的工具不少,一个好用的穷举生成 HASH 的工具都没有

虽然"人生苦短,该用 python",但为了兼顾性能和开发效率,做了一个艰难的决定——

学用 golang 试一试?

首次使用 golang,本着能跑就行的初心聚合"云智慧"完成——

代码不精简有 BUG 且效率未达最佳,如需吐槽请 fork 后 show your code...

毕竟刚学首用,对 golang 很多特性还没了解,我知道代码很渣但目前已尽力,不知道从功能性、稳定性、效率等方面如何才能更优化,诚邀 golang 大佬批评指证

项目地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值