# sql注入
sql注入 我们不管注入的形式是什么我们只要知道和数据库进行交互的时候就有可能出现漏洞我们抓个包直接改包就好了 sql注入会对我们的数据和我们的权限造成危害的
## sql浅谈
SQL注如就是将我们想要查询的sql语句通过参数传递到后台的sql语句中去执行查询我们要的东西。
  我们要想想我们能去进行sql注入的条件是什么,我们要将我们的语句去上传也就是我们需要要一个可控变量,然后这个变量是要被后台接受并在数据库中查询的,在之后就是过滤不严谨这是看对方的,如果过滤特别严谨我们几乎是没有办法完成注入的。
## 判断注入点
我们要去完成注入的话我们肯定要去发现一个注入点,找注入点就大同小异了参数后面加and 1=1,and 1=2我们去看他的页面是否正常来判断
##

##请求方式

get,post,request,cookie,http头...我们通常会把注入分成get型 post型之类的就是通过请求方式去分的;这里我们抓包之后分析数据包在数据包中去判断注入点然后再去对应的注入点上面注入
## 信息收集
我们在注入的时候我们肯定是要把注入语句给放到对应的参数上面的,不是盲注的话order by判断字段,然后我们就要去找到这个注入点的一些信息,例如数据库,用户权限,版本,操作系统之类的

## 注入操作
我们利用我们的判断的信息在mysql中5.0版本以上就会有一个information_schema
如果是低版本我们就不能用这个思路
我们可以通过他去找到所有的名字,符号“.”这个点表示的是下级例如information_schema.tables,这个就是记录了所有的表的名字的表
同理查列名也一样
在我们的MySQL里面我们找到root权限注入的话的话我们是可以跨站去查询其他数据库里的数据,我们有root权限的注入的话我们就可以查数据库名select * from schemeta,schemata_name
select table_name from information_schema.tables where table_schema="数据库名"这是查表名的
select column_name from information_schema.columns where table_name="表名"这是列名
select 列名 from 数据库名.表名 这是查看数据
## 绕过方式
如果有防护的话我们是要去绕过的那么绕过的方式
1.更换请求方式
2.将我们的注入语句编码
3.等价的关键字替换
4.注释符,特殊符号混用
5.大小写绕过
6.垃圾数据轰炸

搜索语句

 在mysql里各个不同功能的搜索词不一样我们也可以利用功能来判断是否会有注入的出现,insert:插入语句,经常会在注册的时候出现,update:更新,我们更改自己的数据的时候会出现;select:搜索数据的时候会出现的

盲注:在我们的sql语句中有一些语句是不会有回显得或者也有可能是网站这里不让他去把回显给我们那我们就要去采用盲注的方式,盲注又分为报错盲注,布尔盲注,时间盲注。我们在报错信息能够出现的时候就用报错注入,布尔盲注是在页面在我们语句错误的时候我们就是错误的页面语句正确才能出现正常的页面而时间盲注是不管我们的语句怎么样我们只有一个页面我们只能通过sleep()之类的函数去帮助我们

 

## 注入的思路
sql注入是一个十分大的一个知识一个总体的思路就是先判断他的数据库类型,注入点的权限,之后要知道请求方法和数据类型,如果是低权限的话就一步一步去获取数据去哪到我们要的数据,而如果是高权限的话数据库又有这个功能我们就进行文件的写入,命令执行之类的操作。

## 其他注入

加解密注入--网站的数据接受是会把我们的数据加密在接收,我们在抓包后要把我们的注入语句也进行同样的加密后再去发包,这样我们的注入语句才会生效;

http头注入--数据包是有一些http头的后端要是选择去接受这些数据的话这里也是可以注入的

堆叠注入--在mysql数据库中;代表结尾的意思我们在注入的时候用;结尾后接上我们写的句子然后完成闭合就可以去查询我们要的数据

二次注入--这个注入方式是要代码开源的时候我们才能用的就是先把语句放到数据库里然后二次调用完成我们的注入

 

posted on 2022-01-09 22:42  我在家  阅读(84)  评论(0)    收藏  举报