初始sql注入
原理:
可能存在数据库交互的地方:输入框、用户登入
判断可以sql注入:后端没有安全的校验,传输进去的sql语句会被执行
常用的sql注入方法:
1、联合输入union:有回显数据
2、报错注入
3、盲注:没有回显数据,只能显示是错误还是正确
危害:
1、绕过登入:使用万能密码登录网站后台
前提:存在sql注入漏洞
方法:将sql语句对筛选数据的条件进行注释
如:原sql语句:select * from users where user='amin' and password='123456'
修改后:select * from users where user='admin' or 1=1 # and password='123456'
2、获取敏感数据:获取网站管理员账户、密码等
3、文件系统操作:列目录、读取、写入文件等
直接拿到shell(控制端,web渗透最终的目的),一般情况下在拿到的shell用户权限非常低,之后将使用内网知识进行提权
4、执行系统命令:远程执行命令
分类:
1、基于注入点位置分类:
①GET注入
②POST注入
③Cookie注入
……
2、基于变量数据类型分类:
①字符型注入
②数字型注入
3、基于获取数据的方法分类:
①基于回显(联合注入)
②基于错误(报错注入)
③盲注
a、布尔型盲注
b、基于时间盲注
测试方法:
数字型:
字符型:
注入流程:
1、判断是什么类型的注入
2、根据注入类型构造语句
3、获取数据库名
4、获取表名
5、获取字段名
判断字段数量:可以使用order by逐一对字段进行排序,若超出字段数量时会报错