SEED:XSS
你可以到SEED官网获取实验资料:Buffer-Overflow Attack Lab (Server Version)
XSS概述……
实验概述
实验环境设置
DNS设置:使用命令sudo vim /etc/hosts编辑本地DNS配置,需要注意的是多个域名是可以定向到同一个IP地址的,因为Web服务器可以通过HTTP协议的hosts字段来区分访问的服务。
启动docker服务:使用命令dcbuild和dcup启动docker配置的服务,一般来说docker启动服务没有什么问题,以下是服务成功启动的截图:
准备工具“HTTP Header Live”:
任务
在浏览器提示框发布恶意消息使用Java Script代码写一段这样的功能很简单:
alert(‘XSS’);是JS代码部分,script标签在html中声明这是一段JS代码。另外,这当代码过长时可以使用链接的方法方法,将指定路径的JS代码记载执行:
下面需要将这段恶意js代码注入到该网站中,登录s ...
SEED:SQL Injection Attack Lab
你可以到SEED官网获取实验资料:Buffer-Overflow Attack Lab (Server Version)
SQL注入概述…….一、 作业题目SQL注入实验二、 实验步骤及结果1. 实验环境拓扑结构本次实验镜像有两个容器,其中一个是Web服务器,另外一个则用于托管Web程序的数据库。
Web服务器的IP地址为:10.9.0.5
域名:Web服务的URL地址为:http://www.seed-server.com
为了确保这个URL地址能够被解析,你需要查看/etc/hosts文件,确保该URL条目绑定Web服务器IP地址。如果不是,使用root权限修改这个条目。
MySQL数据库:数据库服务器的IP地址为:10.9.0.6
Web应用程序:这是一个简单的员工管理应用程序。员工可以通过此web应用程序查看和更新数据库中的个人信息。该web应用程序主要有两个角色:管理员是一个特权角色,可以管理每个员工的个人资料信息;员工是一个正常的角色,可以查看或更新他/她自己的个人资料信息。 ...
SEED:Environment Variable and Set-UID Program Lab
Environment Variable and Set-UID Program Lab1. Task1 Get Familiar with the Shellcode修改shellcode_32.py文件,使其能够删除文件。
测试在该目录下创建文件task1,通过ls命令发现task1文件创建成功。 可以看到执行a32.out文件后,通过ls命令发现task1文件被删除。
2. Task2 Level-1 Attackattack-code传入hello,获取server的堆栈信息。 Buf基地址为:0xffffd598Ebp地址为:0xffffd608
编写exploit.py文件。在32位环境下,ret地址为ebp地址+4(单位为字节),已知buf基地址,则偏移量为ebp地址+4-buf基地址。ret的值存储指令地址,要执行shellcode,因此要将ret指向shellcode地址。而shellcode使用了Nop填充,所以ret指向ret+4即可空转跳转到shellcode。
生成badfile,获取服务器权限 3. Task3 Level-2 Attack
attack ...
dga域名检测
DGA域名通过dga算法生成的域名,需要知道的是dga算法有很多分支。
在字符特征上与普通域名有一些差别,dga域名通常是一些无意义的数字和字母,而正常域名通常带有一些意义比如baidu.com(百度),另外正常域名通常有更多的元音字母,因为这让人更加容易记住和读。
不过,随着dga域名的改进(通过正常域名修改两个字母等),这些差距都可以被缩小,dga域名将会变得越来越像正常域名,这时候依靠于字符特征是难以起效了。
因此,找出dga域名更加深层的特征是必要的,dga域名通常用于黑客和僵尸网络通信,因此这将是未来一个有意义的方向。
下面,我们使用lstm检测dga域名,因为lstm相比于tf-idf和词袋模型更好的捕捉词语间的语序信息。
需要注意的是,我们训练的模型依然依靠的是dga域名的字符信息,因此这个模型具有局限性。
源代码# 数据读取
import pandas as pd
# 数据处理
from sklearn.utils import shuffle
from tensorflow.keras.preprocessing import sequence
import nump ...
SEED:Shellcode Development Lab
一. Shellcode概述shellcode广泛用于许多涉及代码注入的攻击中。编写shellcode是相当有挑战性的。虽然我们可以很容易地从互联网上找到现有的shellcode,但是能够从头开始编写我们自己的shellcode总是令人兴奋的。shellcode中涉及到几种有趣的技术。本实验室的目的是帮助学生理解这些技术,以便他们能够编写自己的shellcode。
编写shellcode有几个挑战,一个是确保二进制文件中没有0x00,另一个是找出命令中使用的数据的地址。第一个挑战不是很难解决,有几种方法可以解决它。第二个挑战的解决方案导致了编写外壳代码的两种典型方法。在一种方法中,数据在执行期间被推入堆栈,因此可以从堆栈指针获得它们的地址。在第二种方法中,数据存储在代码区域中,就在调用指令之后,因此在调用调用函数时,其地址被推入堆栈(作为返回地址)。两种解决方案都非常优雅,我们希望学生能够学习这两种技术。
二. 实验1. Task1 Writing Shellcode1.1. Task1.a The Entire ProcessCompiling to object code使用汇编 ...
Web 登录实现&身份认证
开发工具&环境前端vue集成html,css,javascript
后端SpringBoot集成mybatis,java,tomcat
数据库Mysql以及图形化界面SQLyogEnt
具体过程数据库数据-java对象/Dao(mapper)—> 程序数据 (controller)—> 后端数据 —tomcat—> 前端数据 -vue-> html数据
数据结构&接口文档数据结构数据库user表id,username,password;将id设置为主键
Java类新建User类:int id,String username,String password
接口文档1. 用户注册:POST localhost/auth/register
username: “xxx”
hash_password: “xxx”
2. 用户登录:POST localhost/auth/login
username: “xxx”
password: “xxx”
return token
2. 拉取用户信息:GET lo ...
SEED:Buffer Overflow Attack Lab (Server Version)
你可以到SEED官网获取实验资料:Buffer-Overflow Attack Lab (Server Version)
网络攻防技术——缓冲区溢出攻击(基于服务器)
一 缓存区溢出攻击概述C语言和堆栈局部变量函数中定义的变量
堆内存大,链表,碎片化
栈(堆栈)内存小,编译器决定1-8MB,后进先出LIFO,快
局部变量和堆栈c语言进阶:堆栈原理揭秘
C语言有很多不同类别的数据,他们有不同的生命周期,这不是C语言本身决定的,而是操作系统存放这些数据的位置决定了他们的生命周期。
运行一个程序,操作系统会将数据其映射到内存中,不同的数据将会映射到不同的内存中栈/堆/代码区等。
函数调用和堆栈缓冲区溢出原理一文理解缓冲区溢出
缓冲区溢出被定义为程序试图将数据写入缓冲区边界之外的情况。恶意用户可以利用此漏洞更改程序的流控制,从而导致恶意代码的执行。
栈溢出详解缓冲区溢出在栈溢出上应用很多,因为当程序调用函数时,会将返回地址ret暂时存在栈区上。如果构造一次恶意溢出使用恶意抵制覆盖返回地址ret的值,那么将可以控制程序流甚至执行以进程权限执行任意程序。如果这个进程是根权限,那 ...
恶意URL检测
源代码# 数据提取&处理(csv)
import pandas as pd
from sklearn.utils import shuffle
# 特征提取
import re
from sklearn.feature_extraction.text import TfidfVectorizer
# 训练集和测试集划分
from sklearn.model_selection import train_test_split
# 逻辑回归算法训练模型
from sklearn.linear_model import LogisticRegression
# 模型评估报告打印
from sklearn.metrics import classification_report
# 模型保存
import pickle
def read_dmoz0409(file_path, lable):
normal_pd = pd.read_csv(file_path, header=None, names=["url"], usecols=[1], nrows= ...
机器学习
机器学习在很多场景,
分类&回归简单来说,分类解决离散问题;回归解决连续问题。
分类(Binary Classification):一个例子,对于给定的一个字符串,检测是否为恶意的,那么这种就是分类问题,一般来说二分类问题比较常见。
回归(Regression):给定一个人的各方面信息,评估他的个人收入,他的收入显然是有大量可能的,因此这是回归问题。
分类模型线性回归回归模型Logist回归朴素贝叶斯了解更多
决策树机器学习一般步骤:
文件读取
数据处理
特征提取&向量化
训练集&测试集划分
模型训练
模型测试
模型保存
模型使用
1. 文件读取一般来说,数据集存储在txt或者csv文件中,它包括数据和标签两个部分。
需要注意的是数据集的并没有统一格式,需要根据具体情况便携代码。
首先将其读入程序,以便我们能够处理,可以将其读入列表,字典或者pd对象当中。
下面提供pandas读取csv文件的代码,并将数据集存储到pd对象中:
def read_file(file_path):
file_pd = pd.read_csv(file_path, usec ...
XSS注入检测
源代码pd对象和python字典类似,行为属性,列为列表
pd.read_csv()函数:
参数header:pandas是否选择csv文件第一行作为列名
参数usecols:pandas读取csv文件列
pd.to_csv()函数:
参数header:pandas是否将属性名写入csv文件
参数columns:pandas写入csv文件的属性(影响写入的顺序)
参数index:pandas是否写入序号
# 数据提取&处理
import pandas as pd
from sklearn.utils import shuffle
# 特征提取
import re
from sklearn.feature_extraction.text import TfidfVectorizer
# 训练集和测试集划分
from sklearn.model_selection import train_test_split
# 逻辑回归算法训练模型
from sklearn.linear_model import LogisticRegression
# 模型评估报告打印
from skl ...