理论部分
这个部分是参考小迪安全以及根据自己的理解写的。
PHP-MYSQL-数据请求类型
SQL语句是直接存在数据库的,它通常无法在页面能够直接看到。靶场里看到的都是故意设计成这样,便于初学者学习和理解的。所以我们需要在黑盒中去尝试各种SQL语句进行判断,有时候遇到注入但是注入失败的情况。因而,黑客也不是天才,他需要多次尝试才能够拿到数据库的权限。
按照数据请求类型分,通常包括这几种类型
- select * from news where id=$id;
复制代码- select * from news where id='$id';
复制代码- select * from news where id like '%$id%'
复制代码- select * from news where id=('$id');
- select * from news where (id='$id');
复制代码 PHP-MYSQL-数据请求方法
全局变量方法:GET POST SERVER FILES HTTP头等
User-Agent:使得服务器能够识别客户使用的操作系统,浏览器版本等。
Cookie:网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据。
X-Forwarded-For:简称XFF,它代表的是用户所在的客户端,也就是HTTP请求端真实的IP。通常一些网站的防注入功能会记录请求端的真实IP地址并写入数据库的某某文件(攻击者通过改写XFF头可以伪造成客户端的IP)
Referer:浏览器向WEB服务器表明自己是从哪个页面链接过来的。
Host:客户端执行自己想要访问的WEB服务器的域名/IP地址和端口号。
功能点:
1.用户登录时
2.登陆判断IP时
实现:代码配置固定IP进行判断-策略绕过
实现:数据库白名单IP去判断-select 注入
实现:防注入记录IP去保存数据库-insert注入
3.文件上传将文件名写入到数据库-insert注入
PHP-MYSQL-数据请求格式
- 数据采用统一格式进行传输时,后端进行json格式解析并带入数据库。
- 数据采用加密格式进行传输时,后端进行base64解密解码并带入数据库。
PHP-MYSQL-SQL操作-增删改查
- 查询:SELECT * FROM news where id=$id
复制代码- 增加:INSERT INTO news (字段名) VALUES (数据)
复制代码- 删除:DELETE FROM news WHERE id=$id
复制代码- 修改:UPDATE news SET id=$id
复制代码 PHP-MYSQL-注入函数-布尔&报错&延迟
当页面请求的数据不能返回到前端页面时,就会出现盲注。
- regexp,like,ascii,left,ord,mid
- and length(database()) = 7;
- and left(database(),2) ='de';
- and substr(database(),2,1) ='m';
- and ord(left(databse(),1)) =112;
复制代码 [code]if,sleepand sleep(1);and if(1>2,sleep(1),0);and if(1 |