寒假学习笔记2

CSRF

CSRF,全称Cross-site request forgery,翻译过来就是跨站请求伪造,是指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。

LOW 

查看源码


GET方式得到三个参数,change,password-new,password-conf。如果password-new和password-conf相同,那么更新数据库,并没有任何防CSRF的措施,这里由多重攻击方式,可以直接构造链接,构造攻击页面

CSRF攻击的关键就是利用受害者的cookie向服务器发送伪造请求。

直接构造链接:

在上方URL中构造链接 http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#

 可以修改密码

因为本地搭的环境,服务器域名是ip所以无法生成相应的短链接,实际攻击场景下只要目标服务器的域名不是ip,是可以生成相应短链接的。


构造攻击页面:

为了隐藏攻击手段,可能构造一个假的页面,然后放在网上,诱导受害者访问这个页面

方法:

1.用burpsuit抓包,利用engagement tools生成CDRF PoC,访问点击提交之后就可以更改密码

2.复制生成的HTML代码 

 3.新建HTML文件,打开点击提交,访问点击提交之后就可以更改密码

 

Medium 

查看源码

if( eregi( $_SERVER[ ‘SERVER_NAME’ ], $_SERVER[ ‘HTTP_REFERER’ ] ) 

【 注:在php语言中int eregi(string pattern, string string),译为

检查string函数中是否含有pattern,如果有返回True,反之False。】

因此,此句是判断HTTP_REFERER中是否包含SERVER_NAME。

因为是本地搭建的DVWA,所以http包中Host字段就是本机,而Referer字段就是本地搭建的DVWA页面的地址,所以对于这个本地搭建的DVWA是无效的。

 但是在现实中这种情况一般是不可能存在的,我们可以通过更改页面文件名来绕过stripos函数

假如服务器地址为192.168.66.66,即为SERVER_NAME,我们只需要把我们构造的恶意页面文件名改为192.168.66.66.html,HTTP_REFERER就会包含192.168.66.66.html,就可以绕过stripos了 

High

查看源码

high级别的源码中加入了Anti-csrf token机制,由checkToken函数来实现,用户每次访问更改密码页面时,服务器会返回一个随机的token,之后每次向服务器发起请求,服务器会优先验证token,如果token正确,那么才会处理请求。所以我们在发起请求之前需要获取服务器返回user_token,利用user_token绕过验证。这里我们可以使用burpsuit的CSRF Token Tracker插件可以直接绕过user_token验证。 

步骤:

1.安装CSRF Token Tracker插件

2.添加插件之后添加Host和Name 

3.抓包发送到repeater

 

 

File Inclusion

File Inclusion,意思是文件包含(漏洞),是指当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。文件包含漏洞分为本地文件包含漏洞与远程文件包含漏洞,远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)。

文件包含分类:

LFI:本地文件包含(Local File Inclusion)

RFI:远程文件包含(Remote File Inclusion)

与文件包含有关的函数:

include():只有代码执行到该函数时才会包含文件进来,发生错误时只给出一个警告并继续向下执行。

include_once():和 include()功能相同,区别在于当重复调用同一文件时,程序只调用一次。

require():只要程序执行就包含文件进来,发生错误时会输出错误结果并终止运行。

require_once():和 require()功能相同,区别在于当重复调用同一文件时,程序只调用一次。

相关的 php.ini 配置参数:

allow_url_fopen = on (默认开启)

allow_url_include = on (默认关闭)

Low

文件包含是在URL通过GET传参的方式获取文件 

经过测试发现可以直接获取服务器文件路径

在E盘建立一个测试文件test.txt 

 

直接在URL中包含本地文件

 

成功输出test.txt文件内容,无论文件后缀名是什么,只要文件内容为php脚本都会正确解析并执行 

File Upload(文件上传)

L:

在文件上传的功能处,若服务端脚本语言未对上传的文件进行严格验证和过滤,导致恶意用户上传恶意的脚本文件时,就有可能获取执行服务端命令的能力,这就是文件上传漏洞。
文件上传漏洞对Web应用来说是一种非常严重的漏洞。一般情况下,Web应用都会允许用户上传一些文件,如头像、附件等信息,如果Web应用没有对用户上传的文件进行有效的检查过滤,那么恶意用户就会上传一句话木马等Webshell,从而达到控制Web网站的目的。

文件上传漏洞成因

  1. 未过滤或Web前端过滤被绕过

  2. 文件检测被绕过

  3. 中间件解析

  4. 不完善的黑名单扩展名

  5. 文件路径截断

  6. HTTP不安全方法(PUT协议)

Low

查看源码:

源码分析:

函数介绍:

basename()函数返回路径中的文件名部分

string basename(string $path[,string $suffix])

参数介绍:

$path:必需,规定要检查的路径

$suddix:可选。规定文件扩展名,如果文件中有suffix,则不会输出这个扩展名

步骤 

1.写一句话木马

2.上传一句话木马

 3.显示上传成功,用蚁剑进行链接

成功连接

CTFshow

第五题

题目:phps源码泄露有时候能帮上忙

第一步:按F12 

 第二步:

点击index.php,查看flag

 得到flag

phps文件就是php的源代码文件,通常用于提供给用户(访问者)直接通过Web浏览器查看php代码的内容。

第六题

题目:解压源码到当前目录,测试正常,收工

 按F12

由题目可知是考察源码泄露,按F12,在url/www.zip得到网页源码,提示在fl00g.txt中 

 访问url/fi00g.txt就可以得到flag

第七题

题目:版本控制很重要,但不要部署到生产环境更重要

版本控制:

可以把一个版本控制系统(缩写VCS)理解为一个“数据库”,在需要的时候,它可以帮你完整地保存一个项目的快照。当你需要查看一个之前的快照(称之为“版本”)时,版本控制系统可以显示出当前版本与上一个版本之间的所有改动的细节。

常见的版本控制工具

1.Git

Git是目前世界上最先进的分布式版本控制系统,使用Git和Gitlab搭建版本控制环境是现在互联网公司最流行的版本控制方式
简介:
Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有事务。
Git易于学习,占用内存小,具有闪电般快速的性能。

常用Git服务器

1.github==全球最大的开源网站

2.码云==免费的,国内的

3.coding==国内的

2.SVN
TortoiseSVN是一款非常易于使用的跨平台的 版本控制/版本控制/源代码控制软件。它基于Apache Subversion(SVN)® ; TortoiseSVN为Subversion提供了一个简单易用的用户界面。

3.CVS(Concurrent Versions System简介:

是开发源码的并发版本系统 。

它可用于各种平台,包括 Linux 、Unix和 Windows NT/2000/XP等。

CVS免费开源,对项目进行版本管理。

访问http://7b8ee9ab-f801-4842-afa3-52711f9aa9af.chall.ctf.show/.git/得到flag

第八题

题目:版本控制很重要,但不要部署到生产环境更重要。

 

这题和上题一样,也是版本控制泄露,考察svn源码泄露,访问url/.svn

第九题

题目:发现网页有个错别字?赶紧在生产环境vim改下,不好,死机了 

认识 VIM

刚开始用 VIM 打开文件的时候,需要从宏观的去了解一下 VIM 这个编辑器。

VIM 常用的有四个模式,:

  • 正常模式 (Normal-mode)
  • 插入模式 (Insert-mode)
  • 命令模式 (Command-mode)
  • 可视模式 (Visual-mode)

什么是正常模式(Normal-mode) ?

正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作。这时击键时,一些组合键就是 vim 的功能键,而不会在文本中键入对应的字符。

在这个模式下,我们可以通过键盘在文本中快速移动光标,光标范围从小到大是字符、单词、行、句子、段落和屏幕。启动 VIM 后默认位于正常模式。不论是什么模式,按一下 <Esc> 键 ( 有时可能需要按两下,插入模式按一下 Esc ,就会切换到正常模式,命令模式或者可视模式下执行完操作以后,就会自动进入正常模式,如果进入命令模式或者可视模式没有执行任何操作,按两下 Esc 即可 )都会进入正常模式。

下面的三个模式都是过键盘上相应的键位去触发的。

什么是插入模式?(Insert-mode)

在正常模式中按下个别字母键(后面会详细介绍),会进入插入模式。

例如按 i 键会进行插入模式。该模式启动以后,就会进入编辑状态,通过键盘输入内容。

什么是命令模式(Command-mode)

在正常模式中,按下(冒号)键或者/ (斜杠),会进入命令模式。在命令模式中可以执行一些输入并执行一些 VIM 或插件提供的指令,就像在shell里一样。这些指令包括设置环境、文件操作、调用某个功能等等。

什么是可视模式(Visual-mode)

在正常模式按下v, V, <Ctrl>+v,可以进入可视模式。可视模式中的操作有点像拿鼠标进行操作,选择文本的时候有一种鼠标选择的即视感,有时候会很方便。

在vim编辑文本时会创建一个临时文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容

以 index.php 为例 第一次产生的缓存文件名为 .index.php.swp
第二次意外退出后,文件名为.index.php.swo
第三次产生的缓存文件则为 .index.php.swn

 

这道题是考察vim缓存,根据以上知识,访问http://aaa843e6-7531-48ee-911c-9ea062296591.chall.ctf.show/index.php.swp

 下载文件,得到flag

第十题

题目:cookie 只是一块饼干,不能存放任何隐私数据

直接在bp中抓包,得到flag

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值