未知攻,何知守。
进行网络安全实践操作时,必须遵守网络安全法。
网络安全法全文(必看)https://zhuanlan.zhihu.com/p/27336286
为什么要学习网络安全:
网络安全已经成为各国关注的焦点,不仅关系到机构和个人用户的信息资源和资产风险,也关系到国家安全和社会稳定。进入21世纪,随着信息化建设和IT技术的快速发展,各种网络技术的应用更加广泛深入,同时出现很多网络安全问题,致使网络安全技术的重要性更加突出。计算机安全问题,应该象每家每户的防火防盗问题一样,做到防范于未然。甚至不会想到你自己也会成为目标的时候,威胁就已经出现了,一旦发生,常常措手不及,造成极大的损失。
转载自:为什么需要网络安全 - 业百科
网页与数据库交互时,存在多种传递参数方式:Get传参,Post传参,Head传参等。
Post传参:
在网页上变量传递的参数,不会在URL栏上显示出来,例如我们在登录时,输入的账号与密码并不会在URL栏上显示,这就是Post传参的概念。
Get传参:
我们访问网页时,传递的参数会在URL栏上显示出来。
Head传参:
在协议的请求头进行参数的传递,在URL栏看不到传递的参数。
准备工作:
1、需要注册靶场,在第一个文章有(sql联合注入--Get传参_等黄昏等你来的博客-CSDN博客);
2、浏览器下载插件ModHeader(能添加请求头的插件都可以)。
以搜狐浏览器为例下载该插件:
1、打击,打开扩展和主题;
2、在搜索栏输入ModHeader,搜索;
3、点击,进行插件的下载,下载完成(等会会用到)。
本次靶场要求:
第一步,判断是否存在sql注入:
可以看到,第一节get传参的方式出现了报错,被防火墙拦截了(防火墙一般只拦截Get,Post方式),说明使用get,post传参进行注入较为困难。尝试使用插件进行Head传参进行sql注入。
打开插件,添加一个请求头,如图。
在Name添加cookie,Value构造值,如下图。
在URL栏回车,发现新闻内容依旧存在,说明Head传参方式可行。
在Value值构造我们的sql注入语句,插件中空格不可直接使用,需要用+号代替空格(绕过waf),每次在插件构造sql语句后,需要在URL栏回车进行访问测试。
5、判断数据库字段数,构造语句:id=171+order+by+20进行判断,二分法依次测试,得出字段数为10,并可知存在sql注入;
6、猜测数据库中是否存在admin表并判断回显点;
构造语句:id=171+union+select+1,2,3,4,5,6,7,8,9,10+from+admin
URL栏为:掌控安全学院实战演练靶场
结果如下:
可以看到,存在回显点2,3,7,8,9。这些位置都可以在页面与服务器交互时查询出现数据, 并表明我们的猜测是正确的(存在admin表),继续进行合理的猜测是否存在username段,password字段并查询出数据(在回显点的数字进行查询数据才能显示出来)。
7、判断admin表中字段名并查询数据:
构造语句:id=171+union+select+1,username,password,4,5,6,7,8,9,10+from+admin(有五个回显点,这里随便选了两个进行显示,在其它回显点显示的内容也是一样的)
得出以下内容:
可以知道username:admin,password:b9a2a2b5dffb918c(明显的md5加密算法,进行撞库查询),使用在线工具或者网站。
通过撞库得出password:welcome
所谓的破解是通过字典,进行枚举查询(也叫撞库),得出结果。
拿到管理员账号和密码之后,没有看到flag,说明还需要登录。
我们尝试找到登录界面:在初始网页输入admin发现成功进入登录页面(我们是管理员登录,就首先猜测admin,不行在猜login等)
得到以下页面,输入我们查找出的账号:admin和密码welcome并输入提示的验证码
输入完成后,出现以下界面:
拿到flag,完成以上靶场的要求。
总结:
1、首先进行测试是否存在注入点;
2、发现防火墙拦截(waf),分析防火墙是什么类型的(我们判断出改靶场网页防火墙一般只会拦截Get,Post传参),使用Head传参方式尝试绕过;
3、绕过后,进行判断注入点位置;
4、联合查表法部分关键字被拦截,绕过后任然无法使用,灵活变通直接猜测表的名字等。
5、得出字段数后,根据第一节经验首先猜测表单名称;
6、分析管理员后台登录路径。