网安学习-Python安全开发

news/2024/11/29 0:54:09/

目录

Python学习的意义

涉及相关技术

案例一:IP&Whois&系统指纹获取代码段-外网

查询IP

whois查询

案例二:CDN&子域名&端口扫描&交互代码段-外网

判断CDN 

子域名查询

端口扫描

案例三:Py格式解析环境与可执行程序格式转换-Pyinstaller


        此后如竟没有炬火,我便是唯一的光。

Python学习的意义

  1. 学习相关安全工具的原理;
  2. 掌握自定义工具以及拓展开发;
  3. 解决实战中无工具或手工麻烦批量化等情况;
  4. 在二次开发Bypass,日常任务,批量测试利用等方面均有帮助;例如SRC批量收集并利用,AWD批量利用获取FLAG,CTF加解密脚本等;

涉及相关技术

  1. Socket部分技术
  2. 进程命令执行
  3. 交互参数执行
  4. NMAP工具模块使用
  5. 异常处理

案例一:IP&Whois&系统指纹获取代码段-外网

查询IP

功能:例如输入域名www.xxx.com;返回解析的IP

原理:利用Python中的socket模块的gethostbyname函数能够实现解析域名 IP 地址的功能

def ip_check(url):IP = socket.gethostbyname(url)print(IP)#return IP

输入某一个域名,解析的结果如下:

whois查询

功能:输入目标地址,能够查询目标的whois信息

原理:Python的whois模块的whois函数能够获取目标的whois信息;需要导入python-whois模块

import whois
#该段代码是小迪老师的代码,而在自己编写的时候需要使用的是whois.query(url),但是出现了错误
def whois_check(url):data = whois.whois(url)print(data)

案例二:CDN&子域名&端口扫描&交互代码段-外网

判断CDN 

功能:输入目标地址,能够判断目标是否是CDN服务器

原理:Python通过os库的system函数调用执行系统的nslookup命令来解析目标地址,如果解析地址的IP地址过多,那么说明使用了CDN服务器。

def cdn_check(url):ip_check(url)commend = 'nslookup '+urlip_CDN = os.popen(commend).read()ip_count = ip_CDN.count('.')if ip_count>9:print('存在CDN,具体结果如下:')print(ip_CDN)else:print('不存在CDN,具体结果如下:')print(ip_CDN)

通过点号来判断是否存在CDN,本方法,其实可以使用正则,我还没学会。

子域名查询

实现功能,查询目标的子域名

原理:如输入 www.baidu.com;先正则去掉 www;然后加载字典,如内容为 aa;与处理后的 url 进行 拼接,即 aa.baidu.com;然后调用 socket 模块的 gethostbyname 函数来判断该域名是否能够 解析 IP,如果能说明该域名存在,不能则说明不存在。

方法有两种:

  1. 利用字典加载爆破进行查询
  2. 利用ping或者第三方接口进行查询
def zyum_check(url):urls = url.replace('www','')for zym_dic in open('D:\Python\CTF\Python_信息收集\dic.txt'):zym_dic = zym_dic.replace('\n','')para = zym_dic+urlstry:ip = socket.gethostbyname(para)print(para+'->'+ip)time.sleep(0.1)except Exception as e:pass

端口扫描

实现功能 能跑判断对应端口是否开放

原理 Socket 模块的 socket 函数

方法:

  1. 原生态:自写socket协议tcp、udp扫描

  2. 调用第三方masscan、nmap模块等扫描(内网)

  3. 调用系统工具脚本执行

def duankou_check(url):IP = ip_check(url)server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)port = {'20','21','22','25','23','80','443','135','110','8080','9080','9090','3389','8081','1521','1433','3306','139'}for de_port in port:result = server.connect_ex((IP,int(de_port)))if result==0:print(de_port+' is open')else:print(de_port+' is close')

案例三:Py格式解析环境与可执行程序格式转换-Pyinstaller

制作网上大佬的脚本工具,使用cmd+参数。例如sqlmap工具。

import socket
import os
import time
import whois
import sys
import nmap#输入域名
#web_name = input()#通过域名反查IP地址
def ip_check(url):IP = socket.gethostbyname(url)print(IP)return IP#识别目标域名是否采用了CDN
#通过nslookup来查看回显的结果是否存在两个及以上的IP地址
#利用python去执行系统命令'''共有四种方法:1. os.system()      //不能将结果的值取出,不能进行操作2. os.popen()       //返回的是一个对象,那么继续通过read便可以将对象中的内容读取出来3. commands模块4. subprocess模块
''''''
ip_CDN = os.system('nslookup www.xiaodi8.com')
print(ip_CDN)
'''def cdn_check(url):ip_check(url)commend = 'nslookup '+urlip_CDN = os.popen(commend).read()ip_count = ip_CDN.count('.')if ip_count>9:print('存在CDN,具体结果如下:')print(ip_CDN)else:print('不存在CDN,具体结果如下:')print(ip_CDN)'''端口扫描1. 原生态:自写socket协议tcp、udp扫描2. 调用第三方masscan、nmap模块等扫描(内网)3. 调用系统工具脚本执行
'''def duankou_check(url):IP = ip_check(url)server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)port = {'20','21','22','25','23','80','443','135','110','8080','9080','9090','3389','8081','1521','1433','3306','139'}for de_port in port:result = server.connect_ex((IP,int(de_port)))if result==0:print(de_port+' is open')else:print(de_port+' is close')#whois反查
#通过第三方库进行查询或者是通过第三方接口进行查询
'''data_whois = whois.query(web_name)
print(data_whois)'''#子域名查询
#1. 利用字典加载爆破进行查询
#2. 利用ping或者第三方接口进行查询
def zyum_check(url):urls = url.replace('www','')for zym_dic in open('D:\Python\CTF\Python_信息收集\dic.txt'):zym_dic = zym_dic.replace('\n','')para = zym_dic+urlstry:ip = socket.gethostbyname(para)print(para+'->'+ip)time.sleep(0.1)except Exception as e:pass#通过nmap进行内网存活主机的端口的探针
#关于nmap的出错,配置安装这方面的错误,可以借鉴这篇文章拿https://blog.csdn.net/mkmlmkmlmkml/article/details/116094552
def nmapscan():nm = nmap.PortScanner()try:data = nm.scan(hosts='192.168.52.0/24',arguments='-T4 -F')print(nm.all_hosts())print(nm.csv())print(data)except Exception as e:print('error')if __name__ == '__main__':#zyum_check('www.xueersi.com')#cdn_check('www.xueersi.com')#ip_check('www.xueersi.com')check = sys.argv[1]url = sys.argv[2]if check=='-cdn':cdn_check(url)elif check=='-zym':zyum_check(url)elif check=='-ip':ip_check(url)elif check=='-port':duankou_check(url)else:zyum_check(url)cdn_check(url)ip_check(url)duankou_check(url)#nmapscan()

那么针对nmap内网探针存活的主机,那么内网中的主机,可能不存在python的解析环境。所以需要将我们的脚本打包生成可执行文件,例如windows中的exe文件。

需要安装pyinstaller,通过pip install pyinstaller,先安装。

之后就可以直接使用pytinstaller -F 脚本文件名。那么便会直接在C:\Users\用户\dist下面生成对应的可执行文件,通过cmd便可以直接执行该文件。

我这里没有开虚拟机,所以内网中没有主机存活。 


http://www.ppmy.cn/news/155647.html

相关文章

python安全开发——内外网收集 Socket子域名DNS

前言: 做渗透测试,第一步就是进行信息收集,对于具体的环境下,需要不同的测试需求,通过自己编写的脚本进行测试会有事半功倍的效果,本文主要介绍了在信息收集的时候,我们可能使用到的库函数。 本人水平有限, (一)外网信息收集 1、域名反查IP功…

2022考研该如何准备?zym勿入,因为大佬都不需要考研!

最近有好几个同学问我考研应该怎么准备?要不要买课?我想说的是富人的话买课当然好啊,支持正版。但是现在2022届考研的课基本上都没录完的,而知识的迭代远没有你想象中的快,就像我买了整套2022届的王道408辅导书&#x…

adk安装更新

首先下载zym,这是一个代理服务器软件。如下,代理地址为127.0.0.1,端口号为8580。 然后点击Android SDK Manager的tools选项,选择Settings。将HTTP代理服务器地址设为上面那个软件的127.0.0.1,代理端口设为8580。勾选强…

PHP混淆zym解密

PHP混淆zym解密 最近二开过程中,碰到PHP混淆zym加密的问题,刚开始找了好多网站都是付费的,后来在吾爱破解找到了解决方法。 大神解密及调试过程,详见原文:https://www.52pojie.cn/thread-693641-1-1.html 源码 decry…

SAP-MM库存进销存报表

1、总览: 事务代码MB5B是查询选择期间之内的收发存报表; 其中,收、发为汇总选择期间的收、发信息,存为选择期间的期初、期末库存数据;我们也可以用该报表查询历史上某一天的库存,但注意有一些限制条件。 …

使用echarts画设备拓扑图

开发需求背景 今天领导派了一个小活,要求我将公司的物联网平台的网络拓扑图画出来。做一个数据展示的页面,集成到现有的iot平台上。 说到拓扑图,大家都也都比较清楚,能够清晰地表示网络链路的链接关系。 官方一点的解释是&…

Android 9.0 (P版本) 亮度进度条变化等级更新

1. 现象 使用命令进行设置 adb shell settings put system screen_brightness x, 发现亮度进度条不再为 x/255 n% 的关系了 实际测试的一些数值 设置亮度值 Android O 是否满足 value / 255 Android P 0 0% 0% 0% 1 0% 0% 0% 2 0% 1% 0% 3 0% 1% 0% 4 0% 2% 11% 5 0% 2% 15…

GWAS处理流程(全基因组关联分析)——对从ADNI数据库下载的SNP数据及进行质控(QC)

对从ADNI数据库下载的SNP数据及进行质控(QC) 简介一、先查看数据中的个体和SNP缺失情况1.查看2.生成绘图以可视化缺失结果。 二、QC第一步:删除缺失度大于某个数值的SNP和个体1.删除SNP2.删除个体3.重复1操作4.重复2操作 三、QC第二步&#x…