具体思路
这段代码主要实现了通过SQL注入攻击从目标Web应用程序中获取数据库名称的过程。以下是代码的详细分析:
-
定义了基本请求参数:
BASE_URL
:目标服务器地址。VULNERABLE_ENDPOINT
:存在SQL注入漏洞的API接口,这里是/show.php
。USER_AGENT
:模拟浏览器User-Agent信息以发起HTTP请求。
-
定义了一个名为
shellcode
的列表,其中包含了4个SQL查询语句,分别用于:- 获取数据库名
- 获取当前数据库中的所有表名
- 获取指定表(cms_users)的所有列名
- 获取cms_users表中用户名和密码拼接的记录
-
定义函数
get_content_length()
,通过遍历长度值范围(0-999),利用盲注技术尝试确定第四个payload("select concat(username,':',password) from cms_users")的结果长度。当在响应文本中发现特定字符串“网游分级标准研究有初步成果”时,认为找到了正确的长度,并返回该长度值;若未找到,则返回None。 -
定义函数
get_database_name(content_length)
,接收上一步得到的数据库名长度值作为参数,然后逐个字符地构建新的payload来