请输入ID作为带数值的参数
我们先输入一个id=2,有显示,然后我们现在判断一下是字符值类型还是数值类型的(注:字符类型和数值类型的攻击方式不一样)
判断方法为在id=2后面加’
加入后说明这个是字符类型的SQL注入,接下来就好办了
使用order by查看有多少字段,但是我们发现代码竟然报错了
翻译:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行使用接近极限0,1'的正确语法
这个说明是sql语句是问题然后我们看一下我们输入的sql语句实际输入的数值
发现了在3的后面多了一个',这说明什么问题
看仔细一点原来是这个数据类型是字符类型,id后面自带一个' '符合,这个时候我们要把3后面的'注释掉,扩展一个知识,在sql中-- 和#是注释的意思,-- 在URL中的解码是--+所以我们在后面加上这个
没有输出错误
现在我们在加1 输入4,现在提示Unknown column '4'in 'order clause'说明这个是3个字段
接下来我们进行联合查询
注:我们要让前面报错才能运行后面的联合查询的代码,详情看php代码这里就不一样解释了
如上图显示,说明有二个回显位,此时我们可以利用这个报数据库名,查询数据库名为database()
由此可知我们的数据库名为security
接下来进行表名的查询
具体代码为:
http://localhost/sql/Less-1/?id=-2' union
select 1,2,group_concat(table_name)
from information_schema.tables where
table_schema='security'--+
这样就爆出了表名:
Your Password:emails,referers,uagents,users
接下来我们就是去爆 字段名
Your Password:emails,referers,uagents,users
出现的是:
Your Password:id,username,password
这个时候我们已经知道了字段名了,我们这个时候查询所有内容
语法是select (id,usernaem,password) from users
接下来我们进行一些优化在id,username中加''
这样就可以很清楚的看出账号密码了!
教程到处为准!不懂的请私聊作者!