SQL注入(3)
如果无权读取information schema库 / 拒绝union、order by语句,只能通过猜测的方式:
猜列名
' and asd is null--+ (+代表空格)
-
当我们执行之后,通过报错可看出来没有这个asd
-
通过更换asd,去猜测,如果没有报错,说明数据库存在这个列名
-
但是一般情况下,都是通过跑字典的方式,kali里面自带字典文件
-
之后我们就可以通过bp进行跑字典的操作,首先执行随便的参数,然后代理截断下来
-
之后将截断的发送到repeater测试服务器是否可以正常响应
-
服务器能够正常响应之后的话,发送到intruder去
-
之后选中你想要插入的点,选择它,然后点击add
-
接着点击Payloads,传入我们的字典文件
-
之后点击start attack
-
之后我们就可以分析出哪些是正常存在的列了
猜表名
-
列表猜出来了,就可以开始猜测表名字,刚刚我们看到确实存在user这个列名
'and table.user is null--+ (+代表空格)
-
如果表名不存在会报错
-
之后的才做和猜列名一样了,不做详细概述,自己试试吧,表名的字典路径如下
猜库里面的其他表
'and(select count(*) from b)>0--+(+代表空格)
上面的直接爆出库名了;
-
接着从bp里面去跑字典就行了,库名不变,猜测表明,不做详细步骤描述了
猜测字段内容
'or user='admin
'or user like '%a%
##包含a的user
当数据库可写
';update users set user='yuanfh' where user='admin
-
将用户名修改,直接注入会报错,原因是Sql客户端工具的问题,直接用工具演示
同理也可以修改密码、添加用户、删除表等等,熟悉SQL语句的人去尝试下吧;
SQLi没有通用的方法,掌握原理,了解各种数据库特性;
没有回复内容