学习web安全也快3个月了,从一开始的小白到现在开始了解web渗透的整体流程和一些常见漏洞。现在想写一个整体的Mysql注入的文章,其目的为了复习sql注入的知识点,也想记录我学习的心酸的过程。
整体大纲
1.注入的产生
(1)注入攻击的本质,是把用户输入的数据当做代码执行。这里有两个关键条件,第一个是用户能控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。
(2)程序在开发的时候没对用户的数据过滤,把用户的数据都当做可信数据。
(3)过滤不严格。
(4)数据库配置不当。
(5)转义不当。
2.注入的分类
sql注入的分类比较杂,网上有许多分类。但是其本质就是有俩种:数字型和字符型,因为一个用户输入的数据要不是数字或字符。所以像cookie注入,insert,update,delete注入等都是在这两类基础上,在不同位置的注入。
3.常见的闭合类型
程序在设计sql查询语句时,被输入的数据的闭合方式有多种,在sql注入时,正确猜解出sql语句的闭合方式是至关重要的一步。
下面列出几种常见的闭合方式(结合sql-libs测试平台)
select * from admin where id = $id; //数字型 注入
select * from admin where id = '$id'; //字符型
select * from admin where id = "$id";//字符型
select * from admin where id = ($id);//字符型
select * from admin where id = ('$id');//字符型
select * from admin where id = ("$id");//字符型
select * from admin where username like '%adm%';//搜索型
select * from admin where username like ('%adm%');//搜索型
select * from admin where id = $id limit 0,1;
select * from admin order by $id; //order by后注入,其本质还是数字型
select * from admin order by limit 0,1 $id; //limit后注入
select * from admin order by id limit 1,1 $id;