漏洞显示为: -
方法: GET
参数:查询
攻击:'| case randomblob(10000000)当不为null然后“”else“”结束 -
证据:使用参数值['|]可以控制查询时间case randomblob(10000000)当不为null然后“”else“”end - ],这导致请求花费[542]毫秒,参数值['| case randomblob(100000000)当不为null然后“”else“”end - ],这导致请求花费[900]毫秒,当原始未修改的查询值[query]花了[167]毫秒。
方法: GET
参数:查询
攻击:字段:[查询],值[查询并存在(SELECT UTL_INADDR.get_host_name('10 .0.0.1')来自双联盟SELECT UTL_INADDR.get_host_name('10 .0.0.2')来自双联盟SELECT UTL_INADDR.get_host_name('10 .0.0.3')来自双联盟SELECT UTL_INADDR.get_host_name('10 .0.0.4')来自双联盟SELECT UTL_INADDR.get_host_name('10 .0.0.5')来自双联) - ]
方法: GET
参数:查询
攻击:查询AND 2972 = DBMS_PIPE.RECEIVE_MESSAGE(CHR(113)|| CHR(65)|| CHR(80)|| CHR(114),5)
方法: GET
参数:查询
攻击:查询WAITFOR DELAY'0:0:15' -
方法: GET
参数:查询
攻击:字段:[查询],值[“;从DATA_SCHEMA.SYSTEM_COLUMNS中选择”java.lang.Thread.sleep“(15000),其中TABLE_NAME ='SYSTEM_COLUMNS',COLUMN_NAME ='TABLE_NAME ' - ]
方法: GET
参数:查询
攻击:字段:[查询],值[转换时的情况(pg_sleep(15)为varchar)> ''然后0其他1结束]
方法: GET
参数:查询
攻击:查询/睡眠(15)
方法: GET
参数:查询
攻击:查询; SELECT PG_SLEEP(5) -
方法: GET
参数:查询
攻击: 2018年2月; SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(105)|| CHR(122)|| CHR(102)|| CHR(108),5)FROM DUAL - < / p>
方法: GET
参数:查询
攻击:查询)WAITFOR DELAY CHAR(48)+ CHAR(58)+ CHAR(48)+ CHAR(58)+ CHAR(91)+ CHAR(83)+ CHAR(76) + CHAR(69)+ CHAR(69)+ CHAR(80)+ CHAR(84)+ CHAR(73)+ CHAR(77)+ CHAR(69)+ CHAR(93)AND(1972 = 1972
遵循给定示例的所有源代码: -
public interface UserRepository extends JpaRepository<User, Long> {
@Query("select u from User u where u.firstname = :firstname or u.lastname = :lastname")
User findByLastnameOrFirstname(@Param("lastname") String lastname,
@Param("firstname") String firstname);
}
答案 0 :(得分:1)
选择其中一个基于时间的攻击并重新运行 - 您可以通过右键单击ZAP中的警报并选择“使用请求编辑器打开/重新发送”来完成此操作。 检查请求花了多长时间(显示在对话框的底部) - 是否与攻击使用的延迟相同(或多一点)? 如果是这样,请尝试增加延迟并重新发送 - 现在是否需要更长的时间?
如果时间受到攻击中指定的时间的影响,那么您将遇到SQL注入漏洞。
为什么havnt我说了你发布的源代码?那是因为我不知道那是不是所有的相关代码:)
您可能还想尝试在代码上使用静态分析器 - 它可能会显示加载的误报,但您可以专注于它报告的任何SQL注入漏洞。