01 SQL注入漏洞原理与利用方法
1.1 Web应用架构分析

 1998 年 至今 20多年 了
爆出 sql 注入 导致 大量数据泄露
发现问题 —> 规避 sql注入 带来的 风险
 研究 web框架 能 使我们 更熟悉 框架审计 中 注入的 原理
 
B/S 架构 开始 的时候 数据库 和网站 在同一台服务器 上
webapp 网站 放在 容器里
 容器和数据库 软件 安装在 操作系统里
 逻辑对 数据库的操作 来实现 网站功能

 之后 互联网技术 发展
 大量数据 大量请求 需要 web应用来处理
 
 集群效果

 中间件 容器
 
 
 

 

1.2 SQLi注入环境搭建

 
 
 

部分漏洞 需要 tomcat环境
 WAMP 一款windows系统下的Apache+PHP+Mysql集成环境整合包
 
 
 
 

工程配置信息 路径等

 部署的代码

 需要的应用

 
 
 
 

 

 



windows 和 linux 换行符 不一样 导致 记事本不换行




 
 
 
不同难度级别


Linux docker 安装 sqli labs
 

 
 
 
 后台运行
 再命名
 本地:docker 端口 —端口映射
 创建 清理镜像
 
 




 
 边看代码 边学习 注入
1.3 SQL注入原理分析

 



 
 注意 返回 长度 select 1,version()
 
 



 
 
 用1 来 占位

 


# %23 注释符号

 
 
 
 
MySQL注入方法逻辑运算及常用函数



 

 



 
 
 

 

 

 

 
~ 0x7e


 
 
 

 
 
 
 
 
 

 
 
 
 

 
 
 
 
 
 

 
 


 
登陆处 注入 构造 万能密码
 'or '1'='1
 

 
时间延时注入



updatexml
 
 xpath格式 

 
 报错注入
SQL注入流程

 
 
 灵活构造参数 用于 搜索引擎
页面爬取 动态链接 去依次 注入 测试

 
 
 
 
 


 这种 更适用于 有 登陆验证授权 或 cookie 的 案例
 
 
 

* 用在 漏洞 sql注入 特别了解

 黑盒测试
 
白盒测试 寻找 测试点
 
 
 id 参数 存在 sql注入 漏洞
从 sql命令 往上找 反向
 GET POST 用户数据 正向


 flask路由 对 用户 输入 地址识别
 进入不同方法 进行处理
 
直接用 form表单
 validate 有效性判断 password 没有做处理
 获取到数据
 
 直接 insert 添加到 数据库中

 密码做了 hash 处理 没法 对 数据库 直接操作
username 做了 正则匹配 也没办法
email 邮箱 注册 验证
 
 邮箱 没有对 输入内容 进行验证
 
 
 构造 payload
 

 
 Microsoft JET Access 数据库

 mysql 5.x 存在 用数据语句 内置库 表 列 -->查询 关键数据
access 不存在 库信息
 
 
 
 
 sqlserver sa权限 执行系统命令
 
mysql 权限 低 不能直接执行系统命令
 读文件 配置文件
 tomcat 管理员管理密码 部署webshell 变相提权
 读取 数据库配置文件 - 账号密码
写文件 --os-shell
 php-mysql 写一个 webshell 到 网站目录 执行系统命令 变相提权
SQL手工注入方法



 引擎层
 实现 数据 存取
 定义 数据 存储 的 格式 方式
sql层
 特定的 语法 完成 数据库任务执行
 执行结果 处理 返回 可识别信息
连接层
 通讯协议 线程 验证

 结构化 查询语句
 授权
 数据库 定义 控制 操作 查询 语言
 解析器
 优化器
 执行器
 引擎层
 缓存
了解基础原理

 库 xx小学
 表 xx年级xx班
 列 序号 学号 姓名 性别
 数据 1 x x x
库 功能 操作
mysql 账户信息
 sys 元数据信息
 performance_schema 性能参数 参数设置 收集
 information_schema 访问 元数据








 十六进制 不需要 单引号 ’ '包裹
1.BIN:binary,二进制的;
2.OCT:octal,八进制的;
3.HEX:hexadecimal,十六进制的;
4.DEC:decimal,十进制的。
 
Hash是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值
 

 
 




03 XSS漏洞原理与利用
第一章:XSS基础
1.1 XSS介绍与原理~1

 
 
 打cookie 
 xss + csrf   getshell
 

 用来攻击  使用浏览器 打开这个 页面的 用户  
 获取cookie    正常用户/管理员 权限
 

反射型  - 非存储型 
通常  xss 代码  Payload (js)  通过 get 某个参数 传入   后端 
没有经过 存储    直接反射回   用户页面 (html)上  
 

  存储型
  payload  存   在某一介质 (数据库、缓存、文件)
用户 查看这个页面时    展示 页面  取出数据 时  执行
 

 跟反射型类似
 但接受者 不再是  后端程序    而是 js 拿到参数  直接  在页面 显示
 

  html 实体编码  大多数 管用
    
  白名单  发表文章  富文本  过滤掉  js代码   或者  涉及非法的属性
  只div  a  p b  标签    
  排除onError、onLoad  事件属性 
  只 src  
  黑名单 可能会绕过
  
  xss 业务场景   对症 
  反射  get 输入    script代码块 输出  
 

xss 流程
payload 构造
验证
修复
xss 高阶 新用法
xss持久化
xss系列
 

 

 










