.png)
知识点
Mysql-数据请求类型
Mysql-数据请求方法
Mysql-数据请求格式
一、PHP-MYSQL-数据请求类型
1、sql注入原理
SQL语句由于在黑盒中是无法预知写法的,SQL注入能发成功是需要拼接原SQL语句,大部分黑盒能做的就是分析后各种尝试去判断,所以有可能有注入但可能出现无法注入成功的情况。
究其原因大部分都是原SQL语句的未知性导致的拼接失败!
由于开发者对于数据类型和SQL数据写法(框架写法)导致SQL注入拼接失败!
2、分类
(1)数字型---无符号干扰
select * from news where id=$id;
(2)字符型---有符号干扰
select * from news where id='$id';
(3)搜索型---有多符号干扰
select * from news where id like '%$id%'
(4)框架型---有各种符号干扰
select * from news where id=('$id');
select * from news where (id='$id');
补充:
文件上传也可能产生注入,文件的文字进行数据库保存,sql注入就有条件产生
插入数据事件:
img = union select
insert news ('title','content','author','date','img') value {'union select'}
二、PHP-MYSQL-数据请求方法
1、全局变量方法
GET POST SERVER FILES HTTP头等
数据包的任何地方都能产生注入,看网站接收什么
POST:hackbar参数注入/postman/抓包,观察返回包长度
REQUEST:全部接收,无论get还是post还是cookie还是别的
可接收很多不同值,日志中一般都记录这些信息
只要修改以下信息,就可组合到数据库查询语句
User-Agent===>$_SERVER['HTTP_USER_AGENT']
使得服务器能够识别客户使用的操作系统,游览器版本等.(很多数据量大的网站中会记录客户使用的操作系统或浏览器版本等存入数据库中)
手机/PC浏览器,安卓/苹果浏览器,
Cookie
网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据
X-Forwarded-For===>$_SERVER['HTTP_X_FORWARDED_FOR']
简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,(通常一些网站的防注入功能会记录请求端真实IP地址并写入数据库or某文件[通过修改XXE头可以实现伪造IP])
Rerferer===>$_SERVER['HTTP_REFERER']
浏览器向WEB服务器表明自己是从哪个页面链接过来的
Host===>$_SERVER['HTTP_HOST']
客户端指定自己想访问的WEB服务器的域名/IP地址和端口号
3、举例,如功能点:
(1)用户登录时
(2)登录判断IP时,代入到数据库查询,但是xff可以伪造!
是PHP特性中的SSERVER['HTTP_X_FORWARDED_FOR'];接受IP的绕过(绕过)
实现:代码配置固定IP去判断-策略绕过
--->用php可以,其他不一定了,这种是在配置文件中固定ip如127.0.0.1
实现:数据库白名单IP去判断-select注入
实现:防注入记录IP去保存数据库-insert注入
(3)文件上传将文件名写入数据库-insert注入
这种是已经在数据库中配置好127.0.0.1能访问
tips:开发最好不要和数据库进行频繁交互
三、PHP-MYSQL-数据请求格式
1、数据采用统一格式传输,后端进行格式解析带入数据库(json)
{"username":"admin","password":"123456"}
在admin注入,比较难注
2、数据采用加密编码传输,后端进行解密解码带入数据(base64)
?id=MQ==
sqlmap也不行,所以要手注搭配工具
小结
sql注入攻击与防御(第二版)电子书在网盘
一天一节不太够 开学的课怎么上呢 还是按照自己的安排吧
原来是你 花薰凛然
Comments NOTHING