CN113726787A - Sql注入的生成方法、装置、设备和存储介质 - Google Patents

Sql注入的生成方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN113726787A
CN113726787A CN202111015069.8A CN202111015069A CN113726787A CN 113726787 A CN113726787 A CN 113726787A CN 202111015069 A CN202111015069 A CN 202111015069A CN 113726787 A CN113726787 A CN 113726787A
Authority
CN
China
Prior art keywords
sql
word segmentation
sql injection
word
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202111015069.8A
Other languages
English (en)
Other versions
CN113726787B (zh
Inventor
陆凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN202111015069.8A priority Critical patent/CN113726787B/zh
Publication of CN113726787A publication Critical patent/CN113726787A/zh
Application granted granted Critical
Publication of CN113726787B publication Critical patent/CN113726787B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及人工智能技术,提出一种SQL注入的生成方法、装置、设备和存储介质,该方法包括:获取多个可执行的SQL注入;根据SQL注入集合中可执行的SQL注入生成新的SQL注入;根据可执行的SQL注入对应的数据表获取对应的至少一条待被注入SQL语句;将新的SQL注入分别与每个待被注入SQL语句进行拼接,得到多个拼接SQL语句;执行拼接SQL语句,若任意一条拼接SQL语句执行成功,则判定新的SQL注入有效,若所有拼接SQL语句执行都不成功,则判定新的SQL注入无效。本申请通过对生成的新的SQL注入进行有效性验证,挑选出可执行的新SQL注入、去除无效SQL注入,保证了新生成的SQL注入的可执行性,根据高执行性的新的SQL注入可以更好地优化网络安全防御系统,进一步保证网络安全。

Description

SQL注入的生成方法、装置、设备和存储介质
技术领域
本申请涉及网络安全技术领域,尤其涉及一种SQL注入的生成方法、装置、设备和存储介质。
背景技术
SQL注入是一种常见的网络安全攻击,通常是将恶意SQL命令注入到后台数据库执行。在工业界,对于SQL注入的识别和防护主要依赖于Web应用防火墙。防火墙通常通过解析http请求,对解析得到的字符串(SQL注入)进行匹配检测,如果解析得到的字符串命中了预先构建的黑名单库中的已知属于SQL注入的字段,则判定该http请求属于SQL注入,并进行拦截。因此,黑名单库中收集的SQL注入信息越多,能够识别的来自网络的SQL注入越多,对于网络安全越有保障。
现有技术中,为了构建、补充和完善用于识别SQL注入的黑名单库,网络安全研发人员通常使用常见的sql注入生成工具通过基于字符级别的特定变异策略生成新的SQL注入,来预测黑客可能使用到的SQL注入,进而根据这些提前预测的SQL注入优化网络安全防御策略例如防火墙策略等。但是现有SQL注入工具的变异能力有限,生成的很多SQL注入本身不可执行,这些不可执行的无效SQL注入也同样不可能被黑客用来作为进行网络攻击的SQL注入,因此不足以补充和完善SQL注入的黑名单库,导致很多来自网络的恶意SQL注入不能被有效识别,严重威胁网络安全。
发明内容
为了解决现有技术中无法保证生成的SQL注入的有效性,从而导致无法有效识别网络的恶意SQL注入,严重威胁网络安全的技术问题。本申请提供了一种SQL注入的生成方法、装置、设备和存储介质,其主要目的提高生成的SQL注入的数量和质量以及有效性。
为实现上述目的,本申请提供了一种SQL注入的生成方法,该方法包括:
获取SQL注入集合,SQL注入集合包含多个可执行的SQL注入;
根据SQL注入集合中可执行的SQL注入生成新的SQL注入;
获取可执行的SQL注入对应的数据表,根据数据表获取对应的至少一条待被注入SQL语句,待被注入SQL语句包含数据表的表名和/或字段名;
将新的SQL注入分别与每个待被注入SQL语句进行拼接,得到每个待被注入SQL语句对应的拼接SQL语句;
执行拼接SQL语句,若任意一条拼接SQL语句执行成功,则判定新的SQL注入有效,若所有拼接SQL语句执行都不成功,则判定新的SQL注入无效。
此外,为实现上述目的,本申请还提供了一种SQL注入的生成装置,该装置包括:
已知SQL注入获取模块,用于获取SQL注入集合,SQL注入集合包含多个可执行的SQL注入;
新SQL注入生成模块,用于根据SQL注入集合中可执行的SQL注入生成新的SQL注入;
被注入SQL获取模块,用于获取可执行的SQL注入对应的数据表,根据数据表获取对应的至少一条待被注入SQL语句,待被注入SQL语句包含数据表的表名和/或字段名;
拼接模块,用于将新的SQL注入分别与每个待被注入SQL语句进行拼接,得到每个待被注入SQL语句对应的拼接SQL语句;
执行判断模块,用于执行拼接SQL语句,若任意一条拼接SQL语句执行成功,则判定新的SQL注入有效,若所有拼接SQL语句执行都不成功,则判定新的SQL注入无效。
为实现上述目的,本申请还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,处理器执行计算机可读指令时执行如前面任一项的SQL注入的生成方法的步骤。
为实现上述目的,本申请还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如前面任一项的SQL注入的生成方法的步骤。
本申请提出的SQL注入的生成方法、装置、设备和存储介质,通过对生成的新的SQL注入进行有效性验证,挑选出可执行的新SQL注入、去除无效SQL注入,保证了新生成的SQL注入的可执行性,根据高执行性的新的SQL注入可以更好地优化网络安全防御系统,进一步保证网络安全。
附图说明
图1为本申请一实施例中SQL注入的生成方法的应用场景图;
图2为本申请一实施例中SQL注入的生成方法的流程示意图;
图3为本申请一实施例中SQL注入的生成装置的结构框图;
图4为本申请一实施例中计算机设备的内部结构框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的SQL注入的生成方法,可应用在如图1的应用环境中,其中,终端设备可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。
图2为本申请一实施例中SQL注入的生成方法的流程示意图。参考图2,以该方法应用在图1中的终端设备为例进行说明。该SQL注入的生成方法包括以下步骤S100-S500:
S100:获取SQL注入集合,SQL注入集合包含多个可执行的SQL注入。
具体地,SQL注入集合具体可以表示为一个数组集合,例如:SQL注入集合P_list=[P1,P2,…Pi,…]。P_list中每个元素为一个可执行的SQL注入。可执行的SQL注入为已知的SQL注入。
一个可执行的SQL注入可能包括数字、字符串、左开字符串、右开字符串、关键字、运算符中的一个或多个。
例如,数字:11,字符串:xx,左开字符串:XX’,右开字符串:‘XX,字符串:‘XX’。
可执行的SQL注入Pi举例:
P1:1or 1=1+1
P2:1’union all selectpassword from userwhere name=‘admin
P3:1’union selectpassword from userwhere name=‘admin’
P1、P2和P3中,1’为左开字符串,‘admin为右开字符串,1为数字,or、union、all、select、password、from、user、where、name均为关键字,=和+均为运算符,‘admin’为字符串。
S200:根据SQL注入集合中可执行的SQL注入生成新的SQL注入。
具体地,将可执行的SQL注入截断为多个SQL注入片段,从至少两个可执行的SQL注入中各选取至少一个SQL注入片段进行拼接得到新的SQL注入,实现了通过衍生的方式生成新的SQL注入。
S300:获取可执行的SQL注入对应的数据表,根据数据表获取对应的至少一条待被注入SQL语句,待被注入SQL语句包含数据表的表名和/或字段名。
具体地,本实施例在数据库环境,模拟真实业务数据库。在数据库中有多种数据表,每个数据表有表名和字段名。例如一个user表,包含字段名password、name。
获取可执行的SQL注入对应的数据表,可以模拟真实业务数据库,来验证SQL查询语句的可执行性。
不同的可执行的SQL注入可能对应相同的数据表,每个数据表对应至少一个待被注入SQL语句。
S400:将新的SQL注入分别与每个待被注入SQL语句进行拼接,得到每个待被注入SQL语句对应的拼接SQL语句。
S500:执行拼接SQL语句,若任意一条拼接SQL语句执行成功,则判定新的SQL注入有效,若所有拼接SQL语句执行都不成功,则判定新的SQL注入无效。
具体地,可执行的SQL注入所对应的新的SQL注入都是根据SQL注入片段拼接得到的,因此,新的SQL注入也需要根据可执行的SQL注入对应的数据表来验证可执行性。待被注入SQL语句是数据表所对应的可执行SQL语句中的SQL语句片段,将待被注入SQL语句与新的SQL注入进行拼接,可以得到完整的拼接SQL语句。拼接的SQL语句可能能够被正常执行,也可能不能被正常执行。
待被注入SQL是常见的业务sql语句。例如:select description from productwhere pname=‘注入点’。注入点即为待拼接的SQL注入。
SQL注入可执行的要求:SQL注入与至少一个待被注入SQL拼接后,在数据库中可执行。
例如将SQL注入:1’union all select password from user where name=‘admin作为注入点插入待被注入SQL:select desction from product where pname=‘注入点’中得到拼接SQL。然后在数据库中执行拼接SQL。拼接SQL也属于数据库执行语句。
一个新的SQL注入可以尝试和每个待被注入SQL语句拼接得到拼接SQL语句,拼接SQL语句在准备好的模拟数据库中被执行。
若有一条拼接SQL语句执行成功,则该新的SQL注入是一个可成功执行的SQL注入,即为有效SQL注入。
若所有的拼接SQL语句都不能执行成功或报错,则该新的SQL注入是一个不可执行的SQL注入,即为无效SQL注入。
所有经验证可成功执行的新的SQL注入作为系统新生成的SQL注入被加入到黑名单库中。
自动生成SQL注入是为了提前预测黑客可能用到的用来进行网络攻击的SQL注入,以根据提取预测的SQL注入优化自身的网络安全防御策略例如防火墙策略。SQL注入作为网络安全攻击手段,只有其为可执行的SQL注入才能对网络安全造成威胁。因此,黑客恶意注入的SQL注入都是可执行的。同理,网络安全研发人员提前在黑名单库中添加、布局的SQL注入也必须是可执行的才有意义。因此,需要对生成的SQL注入进行有效性检测。以根据有效的SQL注入来提前布局网络安全防御策略。
本实施例通过对生成的新的SQL注入进行有效性验证,挑选出可执行的新SQL注入、去除无效SQL注入,保证了新生成的SQL注入的可执行性,根据高执行性的新的SQL注入可以更好地优化网络安全防御系统,进一步保证网络安全。且本实施例全自动执行、降低了人工成本。
在一个实施例中,根据SQL注入集合中可执行的SQL注入生成新的SQL注入,包括:
对SQL注入集合中可执行的SQL注入进行分词,得到可执行的SQL注入对应的第一分词序列;
根据所有第一分词序列获得第一分词词表,第一分词词表包含所有第一分词序列不重复的分词,第一分词词表中的每个分词为一词元素;
根据第一分词词表对第一分词序列执行变异操作,得到第一分词序列对应的新的分词序列;
对第一分词序列对应的新的分词序列中的词元素进行组装,得到新的SQL注入。
具体地,按照SQL语法的分词规则对每个可执行的SQL注入进行分词,得到每个可执行的SQL注入对应的第一分词序列。SQL语法的分词规则是将数字、包括空格在内的字符串、左开字符串、右开字符串单独记录为分词以实现分词。第一分词序列为对应的可执行的SQL注入进行分词后的所有分词的集合,分词之间可以使用逗号隔开,且包含重复的分词,每个分词也称为token。
例如,P1的第一分词序列为:[1,or,1,=,1,+,1]
P2的第一分词序列为:[1’,union,all,select,password,from,user,where,name,=,‘admin]。
P3的第一分词序列为:[1’,union,select,password,from,user,where,name,=,‘admin’]。
第一分词词表是对所有第一分词序列中的分词或token进行去重处理得到的。根据上述中P1、P2和P3,可以得到P1、P2和P3对应的第一分词词表为:[1,or,=,+,1’,union,all,select,password,from,user,where,name,‘admin,‘admin’]。
可执行的SQL注入的第一分词序列中的每个分词都可以被第一分词词表中的分词替换掉,每个分词都可以被删除,每个分词的左右都可以添加新的分词,不论是替换、删除还是添加都可以改变原本的第一分词序列,生成新的第一分词序列,对新的第一分词序列中的词元素进行组装或恢复操作,可以生成新的第一分词序列对应的新的SQL注入。
例如,将新的第一分词序列恢复成新的SQL注入:
新的第一分词序列:[1’,=,1,+,1]
恢复为:
新的SQL注入:1’=1+1。
在本实施例中,步骤S300中获取可执行的SQL注入对应的数据表具体包括:根据第一分词序列获取对应的数据表,第一分词序列的分词中包含了数据表的表名和/或字段名。
具体地,可执行的SQL注入所对应的新的SQL注入都是根据对应的第一分词序列变异得到,因此,每个第一分词序列可能携带有为表名的分词和/或为字段名的分词,因此,根据第一分词序列中为表名的分词和/或为字段名的分词可以查询到对应的数据表。
本实施例对已有的可执行的SQL注入进行分词,从分词的角度通过变异操作生成新的SQL注入,使得自动生成SQL注入的能力得以增强,能够快速生成大量新的SQL注入以及更复杂的新SQL注入,减少了人工参与,且根据可执行的SQL注入新生成的SQL注入可执行的概率更大。另外,对更新的SQL注入进行有效性验证挑选出可执行的SQL注入、去除无效SQL注入,进一步保证了新生成的SQL注入的可执行性。生成的SQL注入经过了模拟环境的验证,具有可执行性高的优点。
在一个实施例中,根据第一分词词表对第一分词序列执行变异操作,得到第一分词序列对应的新的分词序列,包括:
根据第一分词词表和第一分词序列,对任意一个第一分词序列执行以下至少一种子变异操作:
从第一分词词表中选取至少一个词元素增加至对应的第一分词序列中,
删除对应的第一分词序列中的至少一个分词,
从第一分词词表中选取至少一个词元素替换对应的第一分词序列中相应数量的分词,
将两个第一分词序列分别划分为至少两个第一子分词序列,从两个第一分词序列中各自任意选取至少一个第一子分词序列进行互换,
其中,对同一个第一分词序列每种子变异操作可执行至少一次;
根据至少一种子变异操作得到任意一个第一分词序列对应的新的分词序列。
具体地,
a.在第一分词序列中增加第一分词词表中的至少一个词元素。
从第一分词词表中任意选取至少一个词元素,将选取的词元素增加至第一分词序列中的随机位置。
举例:
[数字,or,数字,=,数字,+,数字]
变为:
[数字,or,+,数字,=,数字,+,数字],其中,增加了一个“+”的词元素。
当然也可以指定每个第一分词序列可以在指定位置增加不超过预设数量的词元素。
b.从第一分词序列中随机选取并删除至少一个分词。
举例:
[左开字符串,union,all,select,password,from,user,where,name,=,右开字符串]
变为:
[左开字符串,union,all,select,password,from,where,name,=,右开字符串]
其中,删除了user这个分词。
当然本实施例可以指定每个第一分词序列可以删除的分词的最大个数。
c.从第一分词词表中随机选取至少一个词元素随机替换掉第一分词序列中相同数量的分词。即,将第一分词序列中一个或多个位置对应的分词,替换为第一分词词表中的一个或多个词元素。
举例:
[左开字符串,union,all,select,password,from,user,where,name,=,右开字符串]
变为:
[左开字符串,union,all,select,password,from,+,where,name,=,右开字符串]
其中,将分词user替换为了“+”。
d.选取两个第一分词序列,从一个第一分词序列中选取左半部分或右半部分的分词与另外一个第一分词序列中左半部分或右半部分的分词进行交换。
举例:
原本的两个第一分词序列:
[数字,or,数字,=,数字,+,数字],
[左开字符串,union,all,select,password,from,table,where,name,=,右开字符串],
交换后:
[数字,or,数字,union,all,select,password,from,table,where,name,=,右开字符串],
[左开字符串,=,数字,+,数字]。
上述仅仅是示例性举例,具体变异可以根据实际情况进一步细化或限定。每个第一分词序列经过一系列变异操作后得到新的第一分词序列。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、机器人技术、生物识别技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
在一个实施例中,在步骤S200之前,该方法还包括:
获取训练样本集合,训练样本集合包括标签为非注入的合法SQL语句和标签为注入的样本SQL注入;
具体地,获取SQL语料集合,SQL语料集合包括多个成功执行的合法SQL语句,合法SQL语句为区别于SQL注入的非SQL注入。
样本SQL注入可以为可执行的SQL注入,也可以包含可执行的SQL注入和其他SQL注入。
将标签为非注入的合法SQL语句和标签为注入的样本SQL注入作为训练样本,组成训练样本集合。
进行语料收集时,语料主要有两种来源:可执行的合法SQL语句和SQL注入。可执行的合法SQL语句可以在数据库执行日志中收集大量执行成功的SQL语句作为无监督语料,并对语料做去重,得到合法SQL语料样本。SQL注入为收集到的SQL注入语料。分别对每个合法SQL语句和样本SQL注入打标签处理。标签包括注入和非注入。合法SQL语句的标签是“非注入”,SQL注入语料的标签是“注入”。收集的语料生成训练样本用来训练模型。
在本实施例中,步骤S200具体包括以下步骤:
对训练样本集合中的合法SQL语句和样本SQL注入进行随机掩码处理;
利用随机掩码处理后的训练样本集合对待训练bert模型进行训练,得到已训练的SQL注入生成模型;
将可执行的SQL注入输入至已训练的SQL注入生成模型,得到对应新的SQL注入。
具体地,现有的BERT(Bidirectional Encoder Representation fromTransformers,即双向转换器的编码器)预训练过程包含两个不同的预训练任务,分别是Masked Language Model任务即掩蔽语言模型和Next Sentence Prediction任务即下一句预测。Masked Language Model(MLM)通过随机遮盖一些词,然后预测这些被遮盖的词来训练双向语言模型,并且使每个词的表征参考上下文信息。掩蔽语言模型(MLM)——由于BERT模型的双向功能(双向性)及其使用的多层自关注机制的效果,为了训练深度双向表示,一些输入被随机掩盖,然后预测那些被屏蔽的输入。下一句预测(NSP),为了训练理解句子关系以及单词之间的语义关系的模型。
利用特定符号[MASK]来遮盖每个合法SQL语句和样本SQL注入中任意一个或多个位置的分词,将使用特定符号[MASK]遮盖后的合法SQL语句和样本SQL注入作为MLM训练样本集合。
将经过随机掩码处理后的训练样本集合作为预训练bert模型的输入进行预测训练,得到已训练的SQL注入生成模型。
已训练的SQL注入生成模型可以对可执行的SQL注入对应的分词序列中任意遮盖的掩码进行预估,并用预估得到的替换词来替换可执行的SQL注入对应的分词序列中被掩盖的分词,得到该可执行的SQL注入对应的新的分词序列,对该新的分词序列中的词元素(分词)进行组装得到新的SQL注入。
在一个实施例中,对训练样本集合中的合法SQL语句和样本SQL注入进行随机掩码处理,包括:
对训练样本集合中的合法SQL语句和样本SQL注入分别进行分词,得到每个训练样本对应的第二分词序列;
对第二分词序列中的分词执行随机掩码操作,得到第二分词序列对应的掩码分词序列、掩码序列和实际被掩码分词;
根据所有第二分词序列和待训练bert模型的特定分词获得第二分词词表,第二分词词表包括所有第二分词序列和待训练bert模型中不重复的分词,第二分词词表中的每个分词为一词元素。
具体地,在Masked Language Model(MLM)任务中,随机”遮蔽”分词序列中的一个或多个分词,这需要我们在预训练之前,对语料做分词处理。
按照SQL语法的分词规则对每个合法SQL语句和样本SQL注入进行分词。SQL语法的分词规则是将数字、包括空格在内的字符串、左开字符串、右开字符串单独记录为分词以实现分词。第二分词序列为对应的合法SQL语句或样本SQL注入进行分词后的所有分词的集合,分词之间可以使用逗号隔开。
例如,P1的第二分词序列为:[1,or,1,=,1,+,1]。
P2的第二分词序列为:[1’,union,all,select,password,from,user,where,name,=,‘admin]。
P3的第二分词序列为:[1’,union,select,password,from,user,where,name,=,‘admin’]。
P4:select*from table where 1=1,
则P4的第二分词序列为:[select,*,from,table,where,1,=,1]
具体地,[CLS]标志放在第一个句子的首位,经过BERT得到的表征向量C可以用于后续的分类任务。
随机选择第二分词序列中的至少一个分词,替换为bert模型自带的特定符号[MASK]。以[CLS]作为开头的标志,[SEP]作为结束标志,构成掩码分词序列。
举例:掩码前的分词序列:[select,*,from,table,where,数字,=,数字]
掩码后的分词序列:[[CLS],select,*,[MASK],table,where,数字,=,数字,[SEP]];
掩码序列:[0,0,1,0,0,0,0,0],实际被掩码分词为from。
[SEP]标志用于分开两个输入句子,例如输入句子A和B,要在句子A,B后面增加[SEP]标志。[UNK]标志指的是未知字符。[MASK]标志用于遮盖句子中的一些单词,将单词用[MASK]遮盖之后,再利用BERT输出的[MASK]向量预测单词是什么。
第二分词词表是对所有第二分词序列中的分词或token及bert模型特定符号进行去重处理得到的。根据上述中P1、P2和P3,可以得到包括P1、P2和P3以及bert模型特定符号的第二分词词表为:[1,or,=,+,1’,union,all,select,password,from,user,where,name,‘admin,’admin’,[MASK],[CLS],[SEP],[UNK]]。在该第二分词词表中增加bert模型的自带的特定符号[MASK]、[CLS]、[SEP]、[UNK]等。以[CLS]作为开头的标志,[SEP]作为结束标志。
在一个实施例中,利用随机掩码处理后的训练样本集合对待训练bert模型进行训练,得到已训练的SQL注入生成模型,包括:
将随机掩码处理后的训练样本集合中的掩码分词序列、掩码序列、实际被掩码分词以及携带的第二分词词表输入至待训练bert模型中;
获取第二分词词表中每个词元素的语义向量表示;
迭代执行以下步骤:
计算掩码分词序列中包括掩码在内的每个分词的位置向量和语义向量表示,
根据掩码的语义向量表示以及第二分词词表中每个词元素的语义向量表示,计算每个掩码与词表中的每个词元素的相似度,
根据相似度计算概率分布,根据概率分布和每个实际被掩码分词计算损失函数,
若损失函数小于等于预设值,则停止训练,得到已训练的SQL注入生成模型,
若损失函数大于预设值,则根据损失函数计算梯度,并根据梯度更新模型参数,执行并计算掩码分词序列中包括掩码在内的每个分词的位置向量和语义向量表示至根据相似度计算概率分布,根据概率分布和每个实际被掩码分词计算损失函数的步骤。
具体地,语义向量表示包含了第二分词词表中每个词元素的语义信息。利用掩码序列和位置向量可以获取到掩码分词序列中掩码对应的语义向量表示。利用预训练Bert模型的掩码语言建模任务对随机掩码处理后的训练样本集合中被mask的所有分词进行预测。得到每个被掩码的分词的向量表示,与实际被掩码分词所对应的one-hot编码计算损失函数,根据损失函数,采用梯度下降算法,迭代地对预训练bert模型进行模型参数优化更新,实现对掩码的预测,直到损失函数小于等于预设值,则训练结束。训练结束的结束条件还可以是训练次数达到预设次数。
在一个实施例中,该方法还包括:
对可执行的SQL注入进行分词,得到对应的目标分词序列,
对目标分词序列中的分词执行随机掩码操作,得到目标分词序列对应的目标掩码分词序列、目标掩码序列;
将可执行的SQL注入输入至已训练的SQL注入生成模型,得到对应新的SQL注入,包括:
将目标分词序列对应的目标掩码分词序列、目标掩码序列输入至已训练的SQL注入生成模型,得到对应的目标掩码的目标位置向量和目标语义向量表示,
从第二分词词表中查找与目标语义向量表示相似度最近的候选语义向量表示所对应的词元素作为可执行的SQL的替换词,
根据目标位置向量将替换词填充至可执行的SQL注入对应的目标掩码位置,得到目标分词序列对应的新的分词序列,
对目标分词序列对应的新的分词序列中的词元素进行组装,得到新的SQL注入。
具体地,已训练的SQL注入生成模型获取到可执行SQL注入对应的掩码位置的语义向量表示表示。根据所述语义向量表示表示从词表中查找出与所述语义向量表示相似度最近的替换词。
举例:
可执行的SQL注入:1’union all selectpassword from table--
目标分词序列:[1’,union,all,select,password,from,table,--]
随机掩码处理后的掩码分词序列:[[CLS],1’,union,[MASK],select,password,from,table,--,[SEP]],其中,分词all被遮掩。
已训练的SQL注入生成模型预测的分词序列:[[CLS],1’,union,distinct,select,password,from,table,--,[SEP]]。
将已训练的SQL注入生成模型预测的分词序列中的词元素进行组装,得到新的SQL注入:1’union distinct select password from table--。
通过神经网络模型生成的新的SQL注入由于是寻找相似度最近的替换词,因此,得到的新的SQL注入与可执行的SQL注入的相似度更高,可执行性更高,减少了无效SQL注入的生成,也减少了新SQL注入的检测开销,提高了生成有效SQL注入的效率。
本申请通过自动修改分词序列进行变异操作生成新的SQL注入和通过bert语言模型生成新的SQL注入,自动生成SQL注入能力强,能够快速生成大量新的SQL注入,且能够生成更复杂的新SQL注入。生成的新SQL注入经过了模拟环境的验证,具有可执行性高的优点。
本申请提供了一种网络安全防控方法,该方法包括:
根据前面任一项的SQL注入的生成方法获取新的、可执行的目标SQL注入;
根据目标SQL注入更新黑名单库以及网络安全防御策略;
根据更新的黑名单库和网络安全防御策略对http请求进行SQL注入攻击检测。
具体地,不法分子利用SQL注入攻击可以从数据库中获取敏感信息、导出文件,或者利用数据库的特性添加用户篡改数据等一系列恶意操作,因此,对于数据库系统来说,有效的进行SQL防御非常重要。目前,常用的SQL注入检测方式是:利用网络安全防御系统中的黑名单库对用户发送的网络请求中的字段进行规则匹配,如果在黑名单库中匹配到了网络请求中的字段,则该网络请求有可能是具有攻击性的非法网络请求。因此,在黑名单库中提前补充和添加预测的SQL注入非常关键。
本实施例会根据新的目标SQL注入优化网络安全防御策略例如防火墙策略等。例如原来有一个来自网络的疑似SQL注入会被防火墙拦截。但是原有的网络安全防御策略中防火墙对SQL注入中的注释的识别功能的不完善,如果黑客在已有的SQL注入上加一些注释就可以绕过防火墙。更新的网络安全防御策略是对已有的SQL注入加注释以修补防火墙的漏洞,更好地识别网络上的疑似SQL注入。
本实施例利用更新的黑名单库和网络安全防御策略分析并校验每个用户发送的http请求,确保每个http请求有效且安全,对无效或有攻击行为的http请求进行拦截或隔离,保障了网络安全。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图3为本申请一实施例中SQL注入的生成装置的结构框图。参考图3,该SQL注入的生成装置包括:
已知SQL注入获取模块100,用于获取SQL注入集合,SQL注入集合包含多个可执行的SQL注入;
新SQL注入生成模块200,用于根据SQL注入集合中可执行的SQL注入生成新的SQL注入;
被注入SQL获取模块300,用于获取可执行的SQL注入对应的数据表,根据数据表获取对应的至少一条待被注入SQL语句,待被注入SQL语句包含数据表的表名和/或字段名;
拼接模块400,用于将新的SQL注入分别与每个待被注入SQL语句进行拼接,得到每个待被注入SQL语句对应的拼接SQL语句;
执行判断模块500,用于执行拼接SQL语句,若任意一条拼接SQL语句执行成功,则判定新的SQL注入有效,若所有拼接SQL语句执行都不成功,则判定新的SQL注入无效。
SQL注入的生成装置一般设置于服务器/终端设备中。
在一个实施例中,新SQL注入生成模块200具体包括:
第一分词模块,用于对SQL注入集合中可执行的SQL注入进行分词,得到可执行的SQL注入对应的第一分词序列;
第一词表组成模块,用于根据所有第一分词序列获得第一分词词表,第一分词词表包含所有第一分词序列不重复的分词,第一分词词表中的每个分词为一词元素;
变异模块,用于根据第一分词词表对第一分词序列执行变异操作,得到第一分词序列对应的新的分词序列;
第一组装模块,用于对第一分词序列对应的新的分词序列中的词元素进行组装,得到新的SQL注入。
在一个实施例中,变异模块具体用于:
根据第一分词词表和第一分词序列,对任意一个第一分词序列执行以下至少一种子变异操作:
从第一分词词表中选取至少一个词元素增加至对应的第一分词序列中,
删除对应的第一分词序列中的至少一个分词,
从第一分词词表中选取至少一个词元素替换对应的第一分词序列中相应数量的分词,
将两个第一分词序列分别划分为至少两个第一子分词序列,从两个第一分词序列中各自任意选取至少一个第一子分词序列进行互换,
其中,对同一个第一分词序列每种子变异操作可执行至少一次;
根据至少一种子变异操作得到任意一个第一分词序列对应的新的分词序列。
在一个实施例中,该装置还包括:
训练样本获取模块,用于获取训练样本集合,训练样本集合包括标签为非注入的合法SQL语句和标签为注入的样本SQL注入;
新SQL注入生成模块200具体包括:
遮掩模块,用于对训练样本集合中的合法SQL语句和样本SQL注入进行随机掩码处理;
训练模块,用于利用随机掩码处理后的训练样本集合对待训练bert模型进行训练,得到已训练的SQL注入生成模型;
预测生成模块,用于将可执行的SQL注入输入至已训练的SQL注入生成模型,得到对应新的SQL注入。
在一个实施例中,遮掩模块具体包括:
第二分词模块,用于对训练样本集合中的合法SQL语句和样本SQL注入分别进行分词,得到每个训练样本对应的第二分词序列;
子掩码模块,用于对第二分词序列中的分词执行随机掩码操作,得到第二分词序列对应的掩码分词序列、掩码序列和实际被掩码分词;
第二词表组成模块,用于根据所有第二分词序列和待训练bert模型的特定分词获得第二分词词表,第二分词词表包括所有第二分词序列和待训练bert模型中不重复的分词,第二分词词表中的每个分词为一词元素。
在一个实施例中,训练模块具体包括:
样本输入模块,用于将随机掩码处理后的训练样本集合中的掩码分词序列、掩码序列、实际被掩码分词以及携带的第二分词词表输入至待训练bert模型中;
第一计算模块,用于获取第二分词词表中每个词元素的语义向量表示;
第二计算模块,用于计算掩码分词序列中包括掩码在内的每个分词的位置向量和语义向量表示;
第三计算模块,用于根据掩码的语义向量表示以及第二分词词表中每个词元素的语义向量表示,计算每个掩码与词表中的每个词元素的相似度;
第四计算模块,用于根据相似度计算概率分布,根据概率分布和每个实际被掩码分词计算损失函数;
训练停止模块,用于若损失函数小于等于预设值,则停止训练,得到已训练的SQL注入生成模型;
循环模块,用于若损失函数大于预设值,则根据损失函数计算梯度,并根据梯度更新模型参数,跳转到第二计算模至第四计算模块。
在一个实施例中,该装置还包括:
第二分词模块,用于对可执行的SQL注入进行分词,得到对应的目标分词序列,
第二掩码模块,用于对目标分词序列中的分词执行随机掩码操作,得到目标分词序列对应的目标掩码分词序列、目标掩码序列;
预测生成模块具体包括:
第五计算模块,用于将目标分词序列对应的目标掩码分词序列、目标掩码序列输入至已训练的SQL注入生成模型,得到对应的目标掩码的目标位置向量和目标语义向量表示,
第六计算模块,用于从第二分词词表中查找与目标语义向量表示相似度最近的候选语义向量表示所对应的词元素作为可执行的SQL的替换词;
填充模块,用于根据目标位置向量将替换词填充至可执行的SQL注入对应的目标掩码位置,得到目标分词序列对应的新的分词序列;
第二组装模块,用于对目标分词序列对应的新的分词序列中的词元素进行组装,得到新的SQL注入。
其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本申请中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
关于SQL注入的生成装置的具体限定可以参见上文中对于SQL注入的生成方法的限定,在此不再赘述。上述SQL注入的生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图4为本申请一实施例中计算机设备的内部结构框图。该计算机设备具体可以是图1中的终端设备。如图4所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,该计算机设备的处理器用于提供计算和控制能力。存储器包括存储介质和内存储器。存储介质可以是非易失性存储介质,也可以是易失性存储介质。存储介质存储有操作系统,还可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器实现SQL注入的生成方法。该内存储器为存储介质中的操作系统和计算机可读指令的运行提供环境。该内存储器中也可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行SQL注入的生成方法。该计算机设备的网络接口用于与外部服务器通过网络连接通信。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令(例如计算机程序),处理器执行计算机可读指令时实现上述实施例中SQL注入的生成方法的步骤,例如图2所示的步骤S100至步骤S500及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机可读指令时实现上述实施例中SQL注入的生成装置的各模块/单元的功能,例如图3所示模块100至模块500的功能。为避免重复,这里不再赘述。
处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机可读指令和/或模块,处理器通过运行或执行存储在存储器内的计算机可读指令和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。
存储器可以集成在处理器中,也可以与处理器分开设置。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例中SQL注入的生成方法的步骤,例如图2所示的步骤S100至步骤S500及该方法的其它扩展和相关步骤的延伸。或者,计算机可读指令被处理器执行时实现上述实施例中SQL注入的生成装置的各模块/单元的功能,例如图3所示模块100至模块500的功能。为避免重复,这里不再赘述。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中”。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指示相关的硬件来完成,所述的计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍速率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种SQL注入的生成方法,其特征在于,所述方法包括:
获取SQL注入集合,所述SQL注入集合包含多个可执行的SQL注入;
根据所述SQL注入集合中可执行的SQL注入生成新的SQL注入;
获取所述可执行的SQL注入对应的数据表,根据所述数据表获取对应的至少一条待被注入SQL语句,所述待被注入SQL语句包含所述数据表的表名和/或字段名;
将所述新的SQL注入分别与每个所述待被注入SQL语句进行拼接,得到每个所述待被注入SQL语句对应的拼接SQL语句;
执行所述拼接SQL语句,若任意一条拼接SQL语句执行成功,则判定所述新的SQL注入有效,若所有拼接SQL语句执行都不成功,则判定所述新的SQL注入无效。
2.根据权利要求1所述的方法,其特征在于,所述根据所述SQL注入集合中可执行的SQL注入生成新的SQL注入,包括:
对所述SQL注入集合中可执行的SQL注入进行分词,得到所述可执行的SQL注入对应的第一分词序列;
根据所有第一分词序列获得第一分词词表,所述第一分词词表包含所有第一分词序列不重复的分词,所述第一分词词表中的每个分词为一词元素;
根据所述第一分词词表对所述第一分词序列执行变异操作,得到所述第一分词序列对应的新的分词序列;
对所述第一分词序列对应的新的分词序列中的词元素进行组装,得到新的SQL注入。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一分词词表对所述第一分词序列执行变异操作,得到所述第一分词序列对应的新的t分词序列,包括:
根据所述第一分词词表和第一分词序列,对任意一个第一分词序列执行以下至少一种子变异操作:
从所述第一分词词表中选取至少一个词元素增加至对应的第一分词序列中,
删除对应的第一分词序列中的至少一个分词,
从所述第一分词词表中选取至少一个词元素替换对应的第一分词序列中相应数量的分词,
将两个第一分词序列分别划分为至少两个第一子分词序列,从所述两个第一分词序列中各自任意选取至少一个第一子分词序列进行互换,
其中,对同一个第一分词序列每种子变异操作可执行至少一次;
根据所述至少一种子变异操作得到任意一个第一分词序列对应的新的分词序列。
4.根据权利要求1所述的方法,其特征在于,在所述根据所述SQL注入集合中可执行的SQL注入生成新的SQL注入之前,所述方法还包括:
获取训练样本集合,所述训练样本集合包括标签为非注入的合法SQL语句和标签为注入的样本SQL注入;
所述根据所述SQL注入集合中可执行的SQL注入生成新的SQL注入,包括:
对所述训练样本集合中的合法SQL语句和样本SQL注入进行随机掩码处理;
利用随机掩码处理后的训练样本集合对待训练bert模型进行训练,得到已训练的SQL注入生成模型;
将所述可执行的SQL注入输入至所述已训练的SQL注入生成模型,得到对应新的SQL注入。
5.根据权利要求4所述的方法,其特征在于,所述对所述训练样本集合中的合法SQL语句和样本SQL注入进行随机掩码处理,包括:
对所述训练样本集合中的合法SQL语句和样本SQL注入分别进行分词,得到每个训练样本对应的第二分词序列;
对所述第二分词序列中的分词执行随机掩码操作,得到所述第二分词序列对应的掩码分词序列、掩码序列和实际被掩码分词;
根据所有第二分词序列和待训练bert模型的特定分词获得第二分词词表,所述第二分词词表包括所有第二分词序列和待训练bert模型中不重复的分词,所述第二分词词表中的每个分词为一词元素。
6.根据权利要求5所述的方法,其特征在于,所述利用随机掩码处理后的训练样本集合对待训练bert模型进行训练,得到已训练的SQL注入生成模型,包括:
将随机掩码处理后的训练样本集合中的掩码分词序列、掩码序列、实际被掩码分词以及携带的所述第二分词词表输入至待训练bert模型中;
获取所述第二分词词表中每个词元素的语义向量表示;
迭代执行以下步骤:
计算掩码分词序列中包括掩码在内的每个分词的位置向量和语义向量表示,
根据掩码的语义向量表示以及第二分词词表中每个词元素的语义向量表示,计算每个掩码与词表中的每个词元素的相似度,
根据所述相似度计算概率分布,根据所述概率分布和每个实际被掩码分词计算损失函数,
若所述损失函数小于等于预设值,则停止训练,得到已训练的SQL注入生成模型,
若所述损失函数大于预设值,则根据所述损失函数计算梯度,并根据所述梯度更新模型参数,执行所述计算掩码分词序列中包括掩码在内的每个分词的位置向量和语义向量表示至根据所述相似度计算概率分布,根据所述概率分布和每个实际被掩码分词计算损失函数的步骤。
7.根据权利要求4所述的方法,其特征在于,所述方法还包括:
对所述可执行的SQL注入进行分词,得到对应的目标分词序列,
对所述目标分词序列中的分词执行随机掩码操作,得到所述目标分词序列对应的目标掩码分词序列、目标掩码序列;
所述将所述可执行的SQL注入输入至所述已训练的SQL注入生成模型,得到对应新的SQL注入,包括:
将所述目标分词序列对应的目标掩码分词序列、目标掩码序列输入至所述已训练的SQL注入生成模型,得到对应的目标掩码的目标位置向量和目标语义向量表示,
从所述第二分词词表中查找与所述目标语义向量表示相似度最近的候选语义向量表示所对应的词元素作为所述可执行的SQL的替换词,
根据所述目标位置向量将所述替换词填充至所述可执行的SQL注入对应的目标掩码位置,得到所述目标分词序列对应的新的分词序列,
对所述目标分词序列对应的新的分词序列中的词元素进行组装,得到新的SQL注入。
8.一种SQL注入的生成装置,其特征在于,所述装置包括:
已知SQL注入获取模块,用于获取SQL注入集合,所述SQL注入集合包含多个可执行的SQL注入;
新SQL注入生成模块,用于根据所述SQL注入集合中可执行的SQL注入生成新的SQL注入;
被注入SQL获取模块,用于获取所述可执行的SQL注入对应的数据表,根据所述数据表获取对应的至少一条待被注入SQL语句,所述待被注入SQL语句包含所述数据表的表名和/或字段名;
拼接模块,用于将所述新的SQL注入分别与每个所述待被注入SQL语句进行拼接,得到每个所述待被注入SQL语句对应的拼接SQL语句;
执行判断模块,用于执行所述拼接SQL语句,若任意一条拼接SQL语句执行成功,则判定所述新的SQL注入有效,若所有拼接SQL语句执行都不成功,则判定所述新的SQL注入无效。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,其特征在于,所述处理器执行所述计算机可读指令时执行如权利要求1-7任一项所述的SQL注入的生成方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,其特征在于,所述计算机可读指令被处理器执行时,使得所述处理器执行如权利要求1-7任一项所述的SQL注入的生成方法的步骤。
CN202111015069.8A 2021-08-31 2021-08-31 Sql注入的生成方法、装置、设备和存储介质 Active CN113726787B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111015069.8A CN113726787B (zh) 2021-08-31 2021-08-31 Sql注入的生成方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111015069.8A CN113726787B (zh) 2021-08-31 2021-08-31 Sql注入的生成方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN113726787A true CN113726787A (zh) 2021-11-30
CN113726787B CN113726787B (zh) 2023-02-07

Family

ID=78680101

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111015069.8A Active CN113726787B (zh) 2021-08-31 2021-08-31 Sql注入的生成方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN113726787B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114157476A (zh) * 2021-12-01 2022-03-08 上海钧正网络科技有限公司 基于Web应用防护系统的SQL注入漏洞检测方法、装置、终端及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054043A (zh) * 2010-12-30 2011-05-11 畅捷通软件有限公司 大数据生成方法和装置
US20170068820A1 (en) * 2014-01-20 2017-03-09 Prevoty, Inc. Systems and methods for sql value evaluation to detect evaluation flaws
CN111581229A (zh) * 2020-03-25 2020-08-25 平安科技(深圳)有限公司 Sql语句的生成方法、装置、计算机设备及存储介质
CN112069498A (zh) * 2020-09-21 2020-12-11 全球能源互联网研究院有限公司 一种sql注入检测模型构建方法及检测方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102054043A (zh) * 2010-12-30 2011-05-11 畅捷通软件有限公司 大数据生成方法和装置
US20170068820A1 (en) * 2014-01-20 2017-03-09 Prevoty, Inc. Systems and methods for sql value evaluation to detect evaluation flaws
CN111581229A (zh) * 2020-03-25 2020-08-25 平安科技(深圳)有限公司 Sql语句的生成方法、装置、计算机设备及存储介质
CN112069498A (zh) * 2020-09-21 2020-12-11 全球能源互联网研究院有限公司 一种sql注入检测模型构建方法及检测方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114157476A (zh) * 2021-12-01 2022-03-08 上海钧正网络科技有限公司 基于Web应用防护系统的SQL注入漏洞检测方法、装置、终端及介质

Also Published As

Publication number Publication date
CN113726787B (zh) 2023-02-07

Similar Documents

Publication Publication Date Title
Xia et al. Less training, more repairing please: revisiting automated program repair via zero-shot learning
Li et al. Vulnerability detection with fine-grained interpretations
CN109697162B (zh) 一种基于开源代码库的软件缺陷自动检测方法
Tann et al. Towards safer smart contracts: A sequence learning approach to detecting security threats
Wang et al. Blended, precise semantic program embeddings
Chen et al. Why do smart contracts self-destruct? investigating the selfdestruct function on ethereum
CN116720515A (zh) 基于大语言模型的敏感词审核方法、存储介质及电子设备
CN112131120B (zh) 一种源代码缺陷检测方法及装置
CN112699665A (zh) 一种安全报告文本的三元组抽取方法、装置及电子设备
CN113158189B (zh) 一种恶意软件分析报告生成方法、装置、设备和介质
Huq et al. Review4Repair: Code review aided automatic program repairing
Kang et al. Automated permission model generation for securing SDN control-plane
Pan et al. Fine-grained commit-level vulnerability type prediction by CWE tree structure
CN113726787B (zh) Sql注入的生成方法、装置、设备和存储介质
Jain et al. A code centric evaluation of c/c++ vulnerability datasets for deep learning based vulnerability detection techniques
Tang et al. Deep learning-based solution for smart contract vulnerabilities detection
Alalfi et al. An approach to clone detection in sequence diagrams and its application to security analysis
Abdali et al. Securing Large Language Models: Threats, Vulnerabilities and Responsible Practices
CN113778852B (zh) 一种基于正则表达式的代码分析方法
CN114386048A (zh) 基于排序的开源软件安全漏洞补丁定位方法
Kim et al. Towards attention based vulnerability discovery using source code representation
Wang et al. Vcmatch: a ranking-based approach for automatic security patches localization for OSS vulnerabilities
Zhang et al. CodeBERT‐Attack: Adversarial attack against source code deep learning models via pre‐trained model
Cheng et al. MSDetector: A Static PHP Webshell Detection System Based on Deep-Learning
US20230385037A1 (en) Method and system for automated discovery of artificial intelligence (ai)/ machine learning (ml) assets in an enterprise

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant