复习 常见网站使用的sql:
或者awvs
默认单引号是开发人员的失误 所以双引号就没事
像上面这个参数多的 每个都要进行sql注入
/*就是空格 截断关键字
正式:MYSQL
大多使用mysql 的服务器 是linux搭建 建议少使用组件 因为一个组件可能就有一个漏洞\
PHPmyadmin可能会换名字 并且不允许 但网站可能会有我对外部开的接口
报token工具
mysql语法
2 6 7 8 9 很重要
注意是反斜杠
读取目录 找阿帕奇环境根目录
上图的问题结果: 会报错
相关函数
mid函数username字段 从第3个字符到结束
limit函数效果如下
从第几行开始往后读 不包括第n行的
作用:
下图是计算有几行数据
group by
mysql注释
%0a都是url使用的 不要混淆
内联注释
!代表非注释
这一块学会了 绕过就很容易 上图
数据库结构对比
注入原理
下图前3个手工常用
例子
mysql 和下面那个 一般权限不够
为什么看版本 低于5.0没有这个库 图里面的白色的很重要 可改名 删不掉
需要报错 才能 显示注入出来的东西
这个函数是当前数据库 第二好database可能被waf 而不是下图
怕单引号 双引号 导致引号转移 数据库会 查询错误
或者转 16进制 最好!!!!不需要单引号
报完后指定表明报列名
报出来了列名如下
查列里面的数据
group concat 查出来的东西连一起
#是对php的注释
asp不是# 是单引号
常见的防注入代码
显错注入
一般都是闭合 或者斜杠 语句没有执行成功 post get都有
表示sql语句出现问题了
这上面很多函数有些能用有些不能 要一个一个试
去网上搜索mysql显错注入语句
数据库不区分大小写 php检测时区分
显错直接看版本
!!实战当中肯定不会明文
例如:
这个波浪线占了一个所以我们需要使用mid函数查询
其实不需要16进制 直接mid就行
实战经验
报id能报出来 但是字符就不行
那我们就转16进制
然后16进制解码就行
下图方法可行 很麻烦
这种东西 tw rb 韩国、
容易出这种问题
登录的检测注入 就乱起八早 输
'--
双引号就是无敌 不能闭合
开发者直接用双引号会报错 要用双引号 开发者要写函数
登录时 #可能就直接登录了 因为php代码
上图进不去
admin' order by 1#就进得去
长字节攻击
宽字节注入
绕过单引号截断 %bf %df
为了防止php把%修改我们需要用bp 把%25修改为%
utf-8有容错 宽字节会失败
读写函数 root权限
第一步获取根目录
老大发现使用单引号加路径 结果单引号被转义了 所以我们要使用16进制 不加单引号
第二步 写
但这里转16进制也不行
老大换了php版本 单引号没被过滤 才写进去的
linux mysql的root权限很低 不像win
2016菜刀过不了魔术引号
2016魔改能过
网上下的菜刀尽量放虚拟机 有后门
下图记录了很多路径名 这是配置文件信息