|
原文链接:基础四-SQL注入小结中篇
1.注入点不同类型注入
1.1 数字型注入
代码写法:select * from user where id =1
由于是数字,所以一般不考虑引号闭合的问题,当然具体情况还是要具体分析。
案例演示:sqllab靶场
 
1.2 字符型注入
代码写法:select * from user where name ='x'
(一般存在单引号或者其他符号)
在进行字符型注入时,要注意闭合前后的符号,不然我们的sql语句是执行不了的
案例1:sqllab靶场演示
 
 
案例2.实战-华图教育伪静态注入漏洞(乌云网)
 
1.3 搜索型注入
代码写法:select * from user where name like '%xiaodi%'
(一般存在单引号和百分号,也会有其他符号)
案例演示:pikachu靶场
1.4 JOSN型注入
代码写法:SELECT username,paawd FROM users WHERE username='{$username}'
(只是可能,并不一定这样)下面为部分josn结构格式:
数字:{"age":30 },字符:{"uname":"yang"},
数组:{"sites":[{"name":"yang"},{"name":"ming"}]}
案例演示:本地代码演示
 
查看源代码,看看sql语句,再构造payload
 
判断数据库多少列,2正常,3报错

接下来联合查询即可

之后就和正常注入一样了,就不演示了。
小结:由于我们一般是黑盒,不知道源码写法所以我们要多次尝试,寻找闭合字符:',",%,),}等等 ,达到绕过的目的。
2.sql注入-提交方式类型注入
2.1 GET型注入
GET型注入也算我们平时遇到最多的注入,因为注入点就在url链接中的某一个参数中。
案例演示:sqllab靶场
2.2 POST型注入
这个也比较常见,当我们登录时,经常是以POST的形式进行数据提交,这里也是SQL漏洞的一个常发生地。
 
2.3 Cookie注入
cookie注入其原理也和平时的注入一样,只不过说我们是将提交的参数已cookie方式提交了。
案例演示:CTFhub靶场
 
 

我们这里就成功的得到了数据库名,但是要注意的一点是,在平时测试中cookie注入要么是对方使用request接收,要么就是数据库会接收cookie的值。
这里推荐使用hcakbar插件,可以更加方便快捷的进行注入测试。
2.4 HTTP头注入(XFF注入、UA注入、REFERER注入)
什么是http头 这张图片箭头所指,都是他的头部信息,当然不全,当数据包存在这些信息的时候,我们可以尝试在这些地方添加我们的sql语句,来达到注入的目的。
案例演示:UA注入-CTFhub靶场
 
 
这里数据库对UA接收的数据过滤不严格,并且带入数据库查询,导致SQL注入漏洞的产生。
小结:这些地方均可能存在注入漏洞,需要我们手动测试。
3.sql注入-查询方式类注入(代码写法只是一般如此)
3.1 select 查询
在网站应用中进行数据显示查询效果
代码写法:select * from news wher id=$id
 
3.2 Insert 插入
在网站应用中进行用户注册添加等操作
插入在网站应用中进行用户注册添加等操作代码写法:
insertintonews(id,url,text)values(2,′x′,′t')
我们将注册信息抓包,发现均是注入测试点
 
 
3.3 update 更新
会员或后台中心数据同步或缓存等操作
代码写法:update user set pwd='id
 
 
3.4 Delect 删除
后台管理里面删除文章删除用户等操作
代码写法:delete from news where id=$id
 
3.5 order by 排列数据
order by是mysql中对查询数据进行排序的方法, 使用示例
select * from 表名 order by 列名(或者数字) asc;升序(默认升序)
select * from 表名 order by 列名(或者数字) desc;降序
案例演示:sqllab靶场46关
通过asc 和desc查看返回数据是否相同来简单判断是否存在order by注入
 
 
之后我们就可以使用报错或者bool进行注入了
报错回显:http://127.0.0.1:8989/sqli-labs- ... ter/Less-46/?sort=1 and(updatexml(1,concat(0x7e,(select database())),0));
小结:对于和后端数据库有交互的地方,都有可能存在SQL注入漏洞,需要我们认真判断和大胆尝试。
|
|