网络攻防——基于深度学习的SQL注入攻击


注:以下代码编译器采用vscode、jupyter notebook,未验证其他编译器的兼容性,如有其他需要请联系chayleo@163.com。

复习一下sql注入基本步骤
sql注入(基本方法)
1.找到注入点

2.猜表有几列
admin’ order by 2#
admin’ order by 3#
admin’ order by 4#

3.猜数据库名
-1’ union select 1,database(),2# //当前使用的数据库
1’ union select 1,2,group_concat(schema_name)from (information_schema.schemata) #
1’ union select 1,group_concat(distinct table_schema),2 from information_schema.columns# //所有数据库
以上三选一

4.猜表名
1’ union select 1,group_concat(table_name),2 from information_schema.tables where table_schema=‘数据库名’#
1’ union select 1,group_concat(table_name),2 from information_schema.tables where table_schema=database()#
-1’ union select 1,group_concat(distinct table_name),2 from information_schema.columns where table_schema = ‘数据库名’#

以上三选一

5.猜列
-1’ union select 1,group_concat(column_name),2 from information_schema.columns where table_name=‘数据表名’#

6.猜列的内容
-1’ union select 1,group_concat(username,1,password),2 from 表名 #
1’ union select user,2,password from 表名 # //只有一条记录

以上二选一

设计一个登录网站

这里不多赘述,仅仅建立了一个前后端分离的web网页(用bootstrap框架作为前端的美化框架)
在这里插入图片描述

对Web请求的URL数据进行标准化处理

对于过滤出来的字符采用URL拼接的方式发送到目标服务器,在后端方面采用了正则表达式对字符串进行过滤,在参数输入之前,对参数进行严格的格式检查。过滤掉所有非法字符,只保留数字和字母,并限制参数的长度,然后将过滤后的参数直接传递给 loginRepository.findByEncodeAndPassword 方法,由于该方法采用了 JPA 的预编译语句机制,因此不会被 SQL 注入攻击。
在这里插入图片描述

利用语法及语义分析方式对其进行了向量表示

使用BeautifulSoup提取html页面内容保留纯文字部分,将这些文本作为自然语言文本进行处理,使用TF-IDF 的文本表示方法表示,TF-IDF 矩阵中的每个数字都代表一个单词在一个文本中的重要程度,数字越大表示
该单词在该文本中越重要。
在这里插入图片描述

利用深度学习算法对样本进行训练和检测

测试编码,我们使用Padas库中的read_csv函数

import chardet
with open('sqliv2.csv', 'rb') as f:
    result = chardet.detect(f.read())
    
print(result['encoding'])

对于数据的处理部分,调用DataFrame中的dropna函数,去除了data数据集中的缺失值;接着,调用DataFrame中的fillna函数,将data数据集中所有的NaN值填充为0,以处理异常值。并使用DataFrame中的apply函数,将每一行“Sentence”列的文本作为参数,传递给extract_feature函数,并将返回的特征向量作为新的“input_feature”列添加到data数据集中。

data = data.dropna()
data = data.fillna(0)
data['input_feature'] = 
data['Sentence'].apply(lambda x: extract_feature(x))

接下来调用Scikit-learn库中的train_test_split函数,将数据集中80%的数据划分为训练集和标签,另外20%的数据划分为测试集和标签。其中,数据集的特征使用了我们之前提取的文本特征。接着,使用Scikit-learn库中的LogisticRegression模型,创建一个名为model的分类器,并调用fit函数进行训练。

X_train, X_test, y_train, y_test =
 train_test_split(data['input_feature'], data['Label'],
 test_size=0.2, random_state=42)
model = LogisticRegression()
model.fit(X_train.tolist(), y_train.tolist())

利用模型对测试集的数据进行预测,并计算了预测结果的准确率、召回率和F1 score,准确率大概为87.4%左右
在这里插入图片描述除此之外,我们也可以手动进行测试,例如判断’or’==’or’是否是一个sql注入的数据
在这里插入图片描述

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网络攻防技术与实战——深入理解信息安全防护体系》是一本介绍网络攻防技术和信息安全防护的书籍。该书通过系统地介绍了网络攻防技术和实战经验,帮助读者深入理解信息安全防护的相关知识。 首先,该书对网络攻防技术进行了详细的介绍。它从网络攻击的基本原理和分类开始,介绍了常见的攻击手段,如拒绝服务攻击、病毒蠕虫和木马攻击等。接着,书籍重点探讨了不同防护技术的原理和实施方法,包括访问控制技术、入侵检测与防御技术、流量分析技术等。这些内容可以帮助读者了解网络攻击的过程和方法,为实施信息安全防护奠定基础。 其次,该书介绍了信息安全防护体系。作者将信息安全防护分为多个层次,包括网络层、主机层和应用层等,针对不同层次的安全防护提供了相应的解决方案。读者可以学习如何构建强大的信息安全防护体系,以保护企业和个人的敏感数据,并降低信息泄露和损失的风险。 另外,该书还提供了丰富的实战经验和案例分析。通过分析真实的攻击事件和防御措施,读者可以更好地理解信息安全防护的实践和应用。此外,书中还介绍了一些常见的安全工具和平台,如入侵检测系统和安全事件响应平台等,帮助读者更加高效地进行信息安全防护工作。 总之,《网络攻防技术与实战——深入理解信息安全防护体系》是一本对网络攻防技术和信息安全防护进行深入讲解的书籍。它提供了全面而系统的知识,帮助读者理解攻击原理、掌握防护技术,并且通过实战经验和案例分析提供了实用的指导。读者可以通过该书提升自己在信息安全领域的能力和水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值