安全矩阵

 找回密码
 立即注册
搜索
楼主: Pluto

李佳瑞学习日记

[复制链接]

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-2 23:28:03 | 显示全部楼层
PHP 构造函数

构造函数是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,在创建对象的语句中与 new 运算符一起使用。

PHP 5 允许开发者在一个类中定义一个方法作为构造函数,语法格式如下:
  1. void __construct ([ mixed $args [, $... ]] )
复制代码
在上面的例子中我们就可以通过构造方法来初始化 $url 和 $title 变量:
  1. function __construct( $par1, $par2 ) {
  2.    $this->url = $par1;
  3.    $this->title = $par2;
  4. }
复制代码
现在我们就不需要再调用 setTitle 和 setUrl 方法了:
  1. $runoob = new Site('www.runoob.com', '菜鸟教程');
  2. $taobao = new Site('www.taobao.com', '淘宝');
  3. $google = new Site('www.google.com', 'Google 搜索');

  4. // 调用成员函数,获取标题和URL
  5. $runoob->getTitle();
  6. $taobao->getTitle();
  7. $google->getTitle();

  8. $runoob->getUrl();
  9. $taobao->getUrl();
  10. $google->getUrl();
复制代码
析构函数
析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。
PHP 5 引入了析构函数的概念,这类似于其它面向对象的语言,其语法格式如下:
  1. void __destruct ( void )
复制代码
  1. <?php
  2. class MyDestructableClass {
  3.    function __construct() {
  4.        print "构造函数\n";
  5.        $this->name = "MyDestructableClass";
  6.    }

  7.    function __destruct() {
  8.        print "销毁 " . $this->name . "\n";
  9.    }
  10. }

  11. $obj = new MyDestructableClass();
  12. ?>
复制代码
执行以上代码,输出结果为:
  1. 构造函数
  2. 销毁 MyDestructableClass
复制代码

继承
PHP 使用关键字 extends
来继承一个类,PHP 不支持多继承,格式如下:
  1. class Child extends Parent {
  2.    // 代码部分
  3. }
复制代码
实例
实例中 Child_Site 类继承了 Site 类,并扩展了功能:
  1. <?php
  2. // 子类扩展站点类别
  3. class Child_Site extends Site {
  4.    var $category;

  5.     function setCate($par){
  6.         $this->category = $par;
  7.     }
  8.   
  9.     function getCate(){
  10.         echo $this->category . PHP_EOL;
  11.     }
复制代码
方法重写
如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
实例中重写了 getUrl 与 getTitle 方法:
  1. function getUrl() {
  2.    echo $this->url . PHP_EOL;
  3.    return $this->url;
  4. }
  5.    
  6. function getTitle(){
  7.    echo $this->title . PHP_EOL;
  8.    return $this->title;
  9. }
复制代码
访问控制
PHP 对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。
  • public(公有):公有的类成员可以在任何地方被访问。
  • protected(受保护):受保护的类成员则可以被其自身以及其子类和父类访问。
  • private(私有):私有的类成员则只能被其定义所在的类访问。
属性的访问控制
类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。
  1. <?php
  2. /**
  3. * Define MyClass
  4. */
  5. class MyClass
  6. {
  7.     public $public = 'Public';
  8.     protected $protected = 'Protected';
  9.     private $private = 'Private';

  10.     function printHello()
  11.     {
  12.         echo $this->public;
  13.         echo $this->protected;
  14.         echo $this->private;
  15.     }
  16. }

  17. $obj = new MyClass();
  18. echo $obj->public; // 这行能被正常执行
  19. echo $obj->protected; // 这行会产生一个致命错误
  20. echo $obj->private; // 这行也会产生一个致命错误
  21. $obj->printHello(); // 输出 Public、Protected 和 Private


  22. /**
  23. * Define MyClass2
  24. */
  25. class MyClass2 extends MyClass
  26. {
  27.     // 可以对 public 和 protected 进行重定义,但 private 而不能
  28.     protected $protected = 'Protected2';

  29.     function printHello()
  30.     {
  31.         echo $this->public;
  32.         echo $this->protected;
  33.         echo $this->private;
  34.     }
  35. }

  36. $obj2 = new MyClass2();
  37. echo $obj2->public; // 这行能被正常执行
  38. echo $obj2->private; // 未定义 private
  39. echo $obj2->protected; // 这行会产生一个致命错误
  40. $obj2->printHello(); // 输出 Public、Protected2 和 Undefined

  41. ?>
复制代码
方法的访问控制
类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。
  1. <?php
  2. /**
  3. * Define MyClass
  4. */
  5. class MyClass
  6. {
  7.     // 声明一个公有的构造函数
  8.     public function __construct() { }

  9.     // 声明一个公有的方法
  10.     public function MyPublic() { }

  11.     // 声明一个受保护的方法
  12.     protected function MyProtected() { }

  13.     // 声明一个私有的方法
  14.     private function MyPrivate() { }

  15.     // 此方法为公有
  16.     function Foo()
  17.     {
  18.         $this->MyPublic();
  19.         $this->MyProtected();
  20.         $this->MyPrivate();
  21.     }
  22. }

  23. $myclass = new MyClass;
  24. $myclass->MyPublic(); // 这行能被正常执行
  25. $myclass->MyProtected(); // 这行会产生一个致命错误
  26. $myclass->MyPrivate(); // 这行会产生一个致命错误
  27. $myclass->Foo(); // 公有,受保护,私有都可以执行


  28. /**
  29. * Define MyClass2
  30. */
  31. class MyClass2 extends MyClass
  32. {
  33.     // 此方法为公有
  34.     function Foo2()
  35.     {
  36.         $this->MyPublic();
  37.         $this->MyProtected();
  38.         $this->MyPrivate(); // 这行会产生一个致命错误
  39.     }
  40. }

  41. $myclass2 = new MyClass2;
  42. $myclass2->MyPublic(); // 这行能被正常执行
  43. $myclass2->Foo2(); // 公有的和受保护的都可执行,但私有的不行

  44. class Bar
  45. {
  46.     public function test() {
  47.         $this->testPrivate();
  48.         $this->testPublic();
  49.     }

  50.     public function testPublic() {
  51.         echo "Bar::testPublic\n";
  52.     }
  53.    
  54.     private function testPrivate() {
  55.         echo "Bar::testPrivate\n";
  56.     }
  57. }

  58. class Foo extends Bar
  59. {
  60.     public function testPublic() {
  61.         echo "Foo::testPublic\n";
  62.     }
  63.    
  64.     private function testPrivate() {
  65.         echo "Foo::testPrivate\n";
  66.     }
  67. }

  68. $myFoo = new foo();
  69. $myFoo->test(); // Bar::testPrivate
  70.                 // Foo::testPublic
  71. ?>
复制代码









回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-3 21:53:01 | 显示全部楼层
SQL注入示例
正常请求返回的数据
//Get input
$id = $_REQUEST[ ‘ id’  ];
//Check database
$query =”SELECT first_name ,last_name FROM users WHERE user_id = ”$id;”;

有可能用户
$query =”SELECT first_name ,last_name FROM users WHERE user_id = ”4;”;
但也有可能
$query =”SELECT first_name ,last_name FROM users WHERE user_id = ”4;”or “1” =” 1”;




然后今天尝试使用sqlmap   才发现好多问题   
第一个是没有配置环境   第二是只能使用python2.7
按照教程下载了python管理器,但还是除了好多问题
出现了类似这样的问题  
Traceback (most recent call last):
File"E:\anaconda\lib\site-packages\psutil_pswindows.py", line 63……
……
File"E:\anaconda\lib\site-packages\psutil_pswindows.py", line 705……
……
PermissionError: [WinError 5] 拒绝访问。
通过百度不断尝试,发现不是网上的路劲中有中文的错误,也不是没有配置环境
卸载了后,按照教程又重新安装了一次 并且把之前安装的python2.7卸载了 留下了3.7发现可以使用了
安装这几个花了挺多时间的 所幸最后还是可以使用了
然后搜索了使用教程进行了简单额尝试
第一次使用还是有很多不清楚的,之后再慢慢了解吧。
PHP的基础内容基本看完了,但是全局变量和面向对象那里还是很模糊,很多东西不能理解。
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-4 23:59:06 | 显示全部楼层
今天接着昨天一致在看软件,今天重新下载了,并且可以成功使用,挺高兴的


然后进行了简单的学习
一、sqlmap选项
  目标:至少要选中一个参数
    -u URL, --url=URL   目标为 URL (例如. "http://www.site.com/vuln.php?id=1")
    -g GOOGLEDORK       将谷歌dork的结果作为目标url
  请求:
    这些选项可用于指定如何连接到目标URL
    --data=DATA         数据字符串通过POST发送
    --cookie=COOKIE     HTTP Cookie的值
    --random-agent      随机选择 HTTP User-Agent 头的值
    --proxy=PROXY       使用代理去连接目标URL
    --tor               使用匿名网络
    --check-tor         检查Tor是否正确使用
  注入:
    这些选项可用于指定要测试哪些参数,提供自定义注入负载和可选篡改脚本
    -p TESTPARAMETER    可测试的参数
    --dbms=DBMS         将后端DBMS强制到此值
  检测:
    这些选项可用于定制检测阶段
    --level=LEVEL       执行的测试级别(1-5, 默认 1)
    --risk=RISK         执行测试的风险 (1-3, 默认 1)
  技术:
    这些选项可用于调整特定SQL注入的测试的技术
    --technique=TECH    SQL注入技术选择 (默认 "BEUSTQ")
  枚举:
    T这些选项可用于枚举后端数据库管理系统的信息、结构和数据表。此外,还可以运行自己的SQL语句
    -a, --all           检索全部
    -b, --banner        检索 banner
    --current-user      检索当前用户
    --current-db        检索当前数据库
    --passwords         列出用户密码的hash值
    --tables            列出表
    --columns           列出字段
    --schema            列出DBMS schema
    --dump              Dump DBMS数据库表的条目
    --dump-all          Dump 所有DBMS数据库表的条目
    -D DB               指定数据库
    -T TBL              指定表
    -C COL              指定字段
  操作系统访问:
    这些选项可用于访问后端数据库管理系统底层操作系统
    --os-shell          提示为交互式操作系统shell
    --os-pwn            提示为OOB外壳,Meterpreter或VNC
  通用:
    这些选项可用于设置一些通用的工作参数
    --batch             永远不要要求用户输入,使用默认行为
    --flush-session     刷新当前目标的会话文件
  杂项:
    --sqlmap-shell      提示输入交互式sqlmap shell
    --wizard            初学者的简单向导界面

二、sqlmap使用
1.对url进行检测,判断是否存在SQL注入
python sqlmap.py -u "url" --batch


这个网站不存在 之后我会拿自己的练习
2.获取数据库
python sqlmap.py -u URL --dbs --batch 获取全部数据库
python sqlmap.py -u URL --current-db --batch 获取当前数据库
3.获取当前数据库里所有表
python sqlmap.py -u URL -D wavsepDB --tables --batch

4.获取表的字段
python sqlmap.py -u URL -D wavsepDB -T users --columns --batch
5.dump字段内容
python sqlmap.py -u URL -D wavsepDB -T users -C "password,username" --dump --batch
如果字段内容多的话可以再加上如 --start 1 --stop 100 这样就取1-100条数据
--dump 可以换成 --dump-all则导出全部的内容



审计原则
检查参数是否过滤
从SQL语句关键词反推变量
根据网站业务逻辑检查
Form语句
定义和用法
<form> 标签用于为用户输入创建 HTML 表单。
表单能够包含 input 元素,比如文本字段、复选框、单选框、提交按钮等等。
表单还可以包含 menus、textarea、fieldset、legend 和 label 元素。
表单用于向服务器传输数据。
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-5 23:46:23 | 显示全部楼层
今天看了一下burpsuit的内容
Burp Suite 是用于攻击web 应用程序的集成平台。它包含了许多Burp工具,这些不同的burp工具通过协同工作,有效的分享信息,支持以某种工具中的信息为基础供另一种工具使用的方式发起攻击。这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP
消息,持久性,认证,代理,日志,警报的一个强大的可扩展的框架。它主要用来做安全性渗透测试。
二、工具箱

       1.Target(目标)——显示目标目录结构的的一个功能
  2.Proxy(代理)——是一个拦截HTTP/S的代理服务器(抓包),作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
  3.Spider(爬虫)——是一个应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
  4.Scanner(扫描器)[仅限专业版]——是一个高级的工具,执行后,它能自动地发现web 应用程序的安全漏洞。
  5.Intruder(入侵)——是一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
  6.Repeater(中继器)——是一个靠手动操作来补发单独的HTTP 请求,并分析应用程序响应的工具。
  7.Sequencer(会话)——是一个用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
  8.Decoder(解码器)——是一个进行手动执行或对应用程序数据者智能解码编码的工具。
  9.Comparer(对比)——是一个实用的工具,通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
      10.Extender(扩展)——可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
      11.Options(设置)——对Burp Suite的一些设置
测试工作流程

Burp支持手动的Web应用程序测试的活动。它可以让你有效地结合手动和自动化技术,使你可以完全控制所有的BurpSuite执行的行动,并提供有关您所测试的应用程序的详细信息和分析。 让我们一起来看看Burp Suite的测试流程过程吧。 如下图

重新看了各个方面的功能,并且练习proxy拦截和修改的内容

也看了解了些其他内容,但由于我英语不是很好,上面好多东西如果不看教程,我是完全看不懂的,所以好多东西没亲手操作就没记住。

这几天我会练习一下这些内容



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-6 23:54:06 | 显示全部楼层
今天用navicat的命令端操作了一下之前写的代码
-- 创建数据库

-- 创建学生表


file:///C:/Users/柠檬不萌/AppData/Local/Temp/ksohtml18084/wps2.jpg
需要注意的是 要看表的话要写tables而不是table 第一次我就错了
-- 创建班级表
file:///C:/Users/柠檬不萌/AppData/Local/Temp/ksohtml18084/wps3.jpg

-- 向学生表中插入数据
file:///C:/Users/柠檬不萌/AppData/Local/Temp/ksohtml18084/wps4.jpg
-- 向班级表中插入数据

file:///C:/Users/柠檬不萌/AppData/Local/Temp/ksohtml18084/wps5.jpg
接下来就是查询
所有代码如下
-- 创建数据库 create database python_test_1 charset=utf8;
-- 使用数据库 use python_test_1;
-- 创建学生表
create table students( id int unsigned primary key auto_increment not null, name varchar(20) default '', age tinyint unsigned default 0, height decimal(5,2), gender enum('男','女','中性','保密') default '保密', cls_id int unsigned default 0, is_delete bit default 0 );
-- 创建班级表
create table classes ( id int unsigned auto_increment primary key not null, name varchar(30) not null );
-- 向学生表中插入数据 insert into students values (0,'张三',18,180.00,2,1,0), (0,'李四',18,180.00,2,2,1), (0,'王五',29,185.00,1,1,0), (0,'赵六',59,175.00,1,2,1), (0,'冯远征',38,160.00,2,1,0), (0,'金星',28,150.00,4,2,1), (0,'王刚',18,172.00,2,1,1), (0,'周杰伦',36,NULL,1,1,0), (0,'曹操',27,181.00,1,2,0), (0,'刘备',25,166.00,2,2,0), (0,'孙权',33,162.00,3,3,1), (0,'周瑜',12,180.00,2,4,0), (0,'鲁肃',12,170.00,1,4,0), (0,'马超',34,176.00,2,5,0);
-- 向班级表中插入数据 insert into classes values(0,'python_01'),(0,'python_02');
-- 数据准备就绪,开始查询 -- 查询编号大于3的同学 select * from students where id>3;
-- 查询编号不大于3的同学 select * from students where id<=3;
-- 查询姓名不是张三的同学 select * from students where name!='张三'
-- 查询编号大于3的男同学 select * from students where id>3 and gender='男';
-- 查询编号大于2或者没被删除的同学 select * from students where id>2 or is_delete=0;
-- 查询姓李的学生 select * from students where name like '李%';
-- 查询姓张且名字是一个字的学生 select * from students where name like '张_';
-- 查询姓马或者名字是超的学生 select * from students where name like '马%' or name like '%超';
-- 查询编号是1或3或5的学生 -- in表示在一个非连续的范围内
select * from students where id in(1,3,5);
-- between ... and ...表示在一个连续的范围内 -- 查询编号为3到8的学生 select * from students where id between 3 and 8;
-- 查询编号是3到8的男生 -- between A and B在匹配数据的时候匹配的范围空间是 [A,B] select * from students where (id between 3 and 8) and gender='男';
-- is null表示判断为空 -- 查询没有填写身高的学生 select * from students where height is null;
-- 判非空is not null -- 查询填写了身高的学生 select * from students where height is not null;
-- order by 排序查询 -- 排序的语法规则:select * from 表名 order by 列1 asc | desc, 列2 asc | desc, ...
-- 查询未删除男生信息,按学号降序 select * from students where gender='男' and is_delete=0 order by id desc;
-- 查询未删除学生信息,按名id升序 select * from students where is_delete=0 order by id asc;
-- 显示所有的学生信息,先按照年龄从大-->小排序,当年龄相同时 按照身高从高到低排序 select * from students where order by age desc, height desc;


回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-6 23:55:36 | 显示全部楼层
Pluto 发表于 2020-5-6 23:54
今天用navicat的命令端操作了一下之前写的代码
-- 创建数据库

前期创建的代码如下
  1. -- 创建数据库
  2. create database python_test_1 charset=utf8;

  3. -- 使用数据库
  4. use python_test_1;

  5. -- 创建学生表

  6. create table students(
  7.     id int unsigned primary key auto_increment not null,
  8.     name varchar(20) default '',
  9.     age tinyint unsigned default 0,
  10.     height decimal(5,2),
  11.     gender enum('男','女','中性','保密') default '保密',
  12.     cls_id int unsigned default 0,
  13.     is_delete bit default 0
  14. );

  15. -- 创建班级表

  16. create table classes (
  17.     id int unsigned auto_increment primary key not null,
  18.     name varchar(30) not null
  19. );

  20. -- 向学生表中插入数据
  21. insert into students values
  22. (0,'张三',18,180.00,2,1,0),
  23. (0,'李四',18,180.00,2,2,1),
  24. (0,'王五',29,185.00,1,1,0),
  25. (0,'赵六',59,175.00,1,2,1),
  26. (0,'冯远征',38,160.00,2,1,0),
  27. (0,'金星',28,150.00,4,2,1),
  28. (0,'王刚',18,172.00,2,1,1),
  29. (0,'周杰伦',36,NULL,1,1,0),
  30. (0,'曹操',27,181.00,1,2,0),
  31. (0,'刘备',25,166.00,2,2,0),
  32. (0,'孙权',33,162.00,3,3,1),
  33. (0,'周瑜',12,180.00,2,4,0),
  34. (0,'鲁肃',12,170.00,1,4,0),
  35. (0,'马超',34,176.00,2,5,0);
复制代码
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-7 23:34:47 | 显示全部楼层
#ajax 技术
异步的javascript 和 xml

经常用于前端和服务器端的数据交互

优点:异步获取数据,局部刷新,对程序友好
#web服务器
客户端(展示数据)服务器端(存储数据)
browser《=》servers    b/s架构

mac 自带服务器 站点位置:资源库=》webServer=》Documents

    服务启动:终端=》sudo apacheCtl start=》输入密码
    服务停止:终端=》sudo apacheCtl stop
    重启服务:终端=》sudo apacheCtl restart

    启动服务之后,在浏览器中输入:localhost

window  需要安装appserver
    安装教程:https://wenku.baidu.com/view/60d25b126c175f0e7cd13766.html

    下载地址:https://www.appserv.org/en/

    站点位置:在安装目录中 www文件夹,进入以后将文件都删除,因为默认会打开index.html页面,所以将我们的文件都以文件夹形式存放

    启动服务:运行=》服务=》查看本地服务=》apache2.2=》右键单击

    启动服务以后,在浏览器中输入localhost:端口号
#url   http://localhost:8080/index.html
       
http://  http协议
域名:顶级域名,二级域名
端口:8080

协议     域名            服务器上的文件路径            参数
https://baike.baidu.com/item/App%20Server/3539420?fr=aladdin
当你访问服务器的时候,如果服务器上的文件能被浏览器解析,浏览器就会解析它,如果不能,那么浏览器就会下载它
查询IP:window:  在cmd中输入 ipconfig
mac   :  在终端中输入 ifconfig | grep "inet " | grep -v 127.0.0.1
#使用ajax 四部曲
       
1.创建ajax实例对象
2.打开服务器进行连接
3.发送请求
4.接受返回数据

注意的问题:

    兼容问题        try{
            xhr=new XMLHttpRequest();
        }catch(e){
            xhr=new ActiveXObject("Microsoft.XMLHTTP");
        }
​    get请求的缓存问题
    可以在url后面追加时间戳
#ajax状态码
       
readyState从0-4变化,每一次变化都会调用onreadystatechange函数

status  200代表成功返回
#post 和 get的不同
get是获取数据,优先从缓存中读取数据
    参数拼接到url后面,不安全
    参数传递有大小的限制,最大1024kB
    速度快,一般来说,比post请求快一倍

post是提交数据,
    参数是放到send中去提交,比较安全
    参数传递量很大,缓存较轻
    时间较长

回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-8 20:13:38 | 显示全部楼层
今天看dvwa的内容虽然假期已经搭建过,但是当时印象不深

DVWA(Damn Vulnerable Web Application)是一个用来进行安全脆弱性鉴定的PHP/MySQL Web应用,旨在为安全专业人员测试自己的专业技能和工具提供合法的环境,帮助web开发者更好的理解web应用安全防范的过程。

DVWA共有十个模块,分别是:



1.Brute Force(暴力(破解))

2.Command Injection(命令行注入)

3.CSRF(跨站请求伪造)

4.File Inclusion(文件包含)

5.File Upload(文件上传)

6.Insecure CAPTCHA (不安全的验证码)

7.SQL Injection(SQL注入)

8.SQL Injection(Blind)(SQL盲注)

9.XSS(Reflected)(反射型跨站脚本)

10.XSS(Stored)(存储型跨站脚本)

DVWA的搭建

1.(我们使用的是xampp下面的就看了一下)

安装好后运行127.0.0.1看是否可以出现界面

下载DVWA http://www.dvwa.co.uk/

(xampp放入到htdocs中)

2.配置一下相关文件首先最好先配置一下数据库密码

修改后将DVWA/confing下的config.inc.php.dist修改为

config.inc.php,找到其中的把原来的db_password改为刚设置的

3.修改成功后访问127.0.0.1/DVWA

然后创建好了若没有问题便会自动跳转至登陆界面

账号/密码:admin/password

DVWA上的漏洞列表DVMA正如他的名字一样是一个包含了很多漏洞的应用系统。DVWA的漏洞包括了OWASP oepen web application security project的web 10大漏洞。DVWA里面具体包括如下这些漏洞:
1.暴力破解漏洞通过brute force登录页面进入到该漏洞的测试位置。这个漏洞是用来测试暴力破解工具和展示不安全的弱密码。
2.命令执行漏洞在存在风险的系统上执行命令。
3.CSRF伪造跨站请求漏洞,允许攻击者去修改应用的管理员密码。
4.SQL注入,DVWA包括盲注和错误型注入两种SQL注入漏洞类型。
5.不安全的文件上传漏洞,允许攻击者上传恶意的文件到web服务器上
6.XSS跨站脚本漏洞,允许攻击者注入他们自己的脚本到web服务器上。DVWA系统里面包含了反射性XSS和存储型XSS两种类型。
7.文件包含漏洞,允许进行本地文件包含执行和远程文件包含执行
文件上传
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。
文件上传的文件载体要么在服务器端具备可执行性,要么具备影响服务器端行为的能力,其发挥作用还需要具备以下几个条件:
(1)上传的文件具备可执行性或能够影响服务器行为,所以文件所在的目录必须在WEB容器覆盖的路径之内;(必须在这个服务器之下)
(2)用户可以从Web上访问这个文件,从而使得Web容器解释执行该文件;(就是你可以访问到你上传的这个文件)
(3)上传后的文件必须经过安全检查,不会被格式化、压缩等处理改变其内容;
(文件的内容不会被修改)
绕过方案:
使用Burpsuite:
1)先将木马的扩展名改成一个正常的图片扩展名,如jpg
2)上传时使用Burpsuite拦截数据包,将木马的扩展名改为原来的php,即可绕过客户端的验证。
注意:这里修改文件名后,请求头中的Content-Length的值也要改
文件名大小写绕过
用像AsP,pHp 之类的文件名绕过黑名单检测
名单列表绕过
用黑名单里没有的名单进行攻击,比如黑名单里没有asa 或cer 之类
特殊文件名绕过
比如发送的http 包里把文件名改成test.asp. 或test.asp_(下划线为空格),这种命名方式在windows 系统里是不被允许的,所以需要在burp 之类里进行修改,然后绕过验证后,会被windows 系统自动去掉后面的点和空格,(Unix/Linux 系统没有这个特性。)

将一句话木马的文件名【evil.php】,改成【evil.php.abc】(奇怪的不被解析的后缀名都行)。首先,服务器验证文件扩展名的时候,验证的是【.abc】,只要该扩展名符合服务器端黑白名单规则,即可上传。另外,当在浏览器端访问该文件时,Apache如果解析不了【.abc】扩展名,会向前寻找可解析的扩展名,即【.php】
白名单检测绕过
白名单就是只能上传规定后缀的文件,主要利用截断上传绕过,有0x00截断与%00截断
0x00截断:
在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束。利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00上传截断漏洞。
通过抓包截断将【evil.php.jpg】后面的一个【.】换成【0x00】。在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束,从而将【evil.php.jpg】的内容写入到【evil.php】中,从而达到攻击的目的。
0x00的意思为16进制00,所以将对应的进制改成00(至于怎么找到对应代码,看右边对应代码,找到第几行,从左到右,每个字母对应一个代码),改完直接go
在/Upload/后面加一个空格,点开hex,将其对应的20改成00即可,可绕过后缀名的过滤,从而得到webshell。
%00截断:
将文件名后面直接加上%00.jpg,先绕过后缀上传,然后利用burp的urldecode功能,其实和/00截断将hex20变成00一样,效果一样,两种方法都可以拿webshell






回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-9 23:37:42 | 显示全部楼层
今天自己练习SQL注入(网上找了一个例题  以bugkuctf平台的一道题为例:链接http://120.24.86.145:8002/chengjidan/
1、首先测试正常数据。
链接的结尾添加【?id=1(数字任意)
2、判断是否存在注入点;
【?id=32(数字任意)】链接的结尾依次添加语句【‘】、【and 1=1】和【and 1=2】,来判断网站是否存在注入点。尝试在正常数据后加上单引号,发现数据为空,加上注释符(注释符:#,–+ , //, – )后发现依旧可以正常输出,存在注入点。看是否报错,如果数据库报错,说明后台数据库处理了我们输入的数据,那么有可能存在注入点。
3、判断字段长度;
在链接后面添加语句【 order by 11 (数字任意)】,根据页面返回结果,来判断站点中的字段数目。该题中已经有四处回显(名字和3科分数),所以就猜4和5,得知查询结果中有四列
4、判断字段回显位置;
在链接后面添加语句【 union select 1,2,3,4,5,6,7,8,9,10,11#】进行联合查询(联合查询时记得把前面的查询为空)来暴露可查询的字段号。
这里要注意
判断数据库信息;
利用内置函数暴数据库信息
version()版本;database()数据库;user()用户;
不用猜解可用字段暴数据库信息(有些网站不适用):
and 1=2 union all select version()
and 1=2 union all select database()
and 1=2 union all select user()
操作系统信息:and 1=2 union all select @@global.version_compile_os from mysql.user
数据库权限:
and ord(mid(user(),1,1))=114 返回正常说明为root
5、查找数据库名;
Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息union select information_schema from information_schema.schemata (语句在显示位)
该题看一下数据库信息,库名为skctf_flag

查找数据库表名;

  1. union select group_concat(table_name) from information_schema.tables where table_schema=database()
复制代码
该题语句为【-1’ union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=database()),3,4#】得知表名为fl4g
查找列名
  1. 【-1' union select 1,(select group_concat(column_name) from information_schema.columns where table_name='fl4g'),3,4#】
复制代码
知道表名知道列名,获取数据
  1. -1' union select 1,(select skctf_flag from fl4g),3,4#
复制代码
得出flag查找数据库表中所有字段以及字段值;
and 1=2 union select 1,2,3,TABLE_NAME,5,6,7,8,9,10 from information_schema.TABLES where TABLE_SCHEMA=数据库(十六进制) limit 0(开始的记录,0为第一个开始记录),1(显示1条记录)—
and 1=2 Union select 1,2,3,COLUMN_NAME,5,6,7,8,9,10 from information_schema.COLUMNS where TABLE_NAME=表名(十六进制)limit 0,1
猜解账号密码;

登陆管理员后台。
读文件: union select 绝对路径 load_file
写入文件:union select
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-5-10 23:57:12 | 显示全部楼层
这里主要写一下DVWA环境的搭建
DVWA使用PHP写的,所以首先需要搭建web运行环境,我这里使用的是xampp
首先进入官网下载源码:http://www.dvwa.co.uk/  下载DVWA
或者可以进入github下载: https://github.com/ethicalhack3r/DVWA
二、安装
下载好之后解压,把源码复制到htdocs目录
然后进入DVWA,打开config目录里的config.inc.php
修改数据库账号密码
然后打开:127.0.0.1:8080/dvwa/
最后Create / Reset Datebase,登陆DVWA(默认账号:admin,默认密码:password)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 02:34 , Processed in 0.028338 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表