BUUCTF web wp (五)

[ACTF2020 新生赛]BackupFile——备份文件

由题目可提示,这道题的考点是备份文件

在这里插入图片描述

常见的备份文件后缀名有: .git .svn .swp .~ .bak .bash_history。

逐一尝试常见的备份文件后缀名,发现为.bak,页面随即跳转到网页源码。

/index.php.bak

在这里插入图片描述

PHP中的弱类型比较
== 仅比较两个变量的值
===比较两个变量的值和类型

源码中要求get传参传入变量key,传入的key与$str作弱比较,且要求传入的变量均为数字,于是令key=123即可得到flag

在这里插入图片描述

[HCTF 2018]admin

在这里插入图片描述
点击HCTF在这里插入图片描述
点击404:Not Found,页面没有任何跳转。
页面有右上角有两个按钮,登录和注册
在这里插入图片描述

访问登录的页面

在这里插入图片描述
再访问注册的页面

在这里插入图片描述
注册时随便输入一个账号和密码,我输入的账号和密码均为123(第一次注册时使用admin提示已经被注过),使用注册成功的账号密码进行登录。在这里插入图片描述
这种方法不可以,我们再次查看题目源码在这里插入图片描述

<!-- you are not admin -->猜测如果以admin登录成功,则可能的到flag。我们在使用注册的账号登录成功后,发现右上角有三个按钮在这里插入图片描述
我们三个操作均尝试并查看网页源码,寻找可用的信息。在这里插入图片描述

index页面和之前的index页面查看源代码是一样的。
posts页面进入只会显示404,就算再后面新增了文章也是一样。
edit页面是一个类似博客编写页面,有两个文本框,但试了一下XSS都被过滤了。
change页面是一个修改密码的页面。可能存在逻辑漏洞,尝试一下发现不需要输入之前的密码直接输入新密码就行,这样就不存在多步骤校验可能存在的逻辑绕过。而且查看报文发现报文中没有写用户名,里面只有一个新密码。证明用户名是通过session来获取的,所以也不存在中间截获修改的漏洞。

Session
在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。

session的工作原理
(1)当一个session第一次被启用时,一个独一的标识被存储于本地的cookie中。
(2)首先使用session_start()函数,PHPsession仓库中加载已经存储的session变量。
(3)当执行PHP脚本时,通过使用session_register()函数注册session变量。
(4)当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。

我们在change password选项的网页源码中发现了一个有关github的网址,尝试访问。在这里插入图片描述
下载该网站的flask文档【Flask 是一个用 Python 编写的Web应用程序框架】,并解压在这里插入图片描述
解压后打开文件夹的index.html文件,在这里插入图片描述

{% if current_user.is_authenticated and session['name'] == 'admin' %}
<h1 class="nav">hctf{xxxxxxxxx}</h1>

只要从session中得到的值nameadmin就会显示flag,即能够使用admin登录即可拿到flag

方法1

继续审代码,在routes.py文件中,发现了strlower小写函数,猜测如果使用ADMIN进行注册,即可登录成功获得flag在这里插入图片描述

方法2

直接抓包使用burp来爆破字典获得密码123

[极客大挑战 2019]BuyFlag——PHP函漏洞

打开链接为三叶草安全技术小组的招新信息。
查看网页源码,发现了index.phppay.php

在这里插入图片描述
访问index.php,与之前的网页没什么不一样。访问pay.php,发现了提示得到flag的条件在这里插入图片描述
查看网页源代码,发现了一段注释在这里插入图片描述
在控制台发现user值只有一个值为0在这里插入图片描述
修改user的值为1时,页面发生了变化在这里插入图片描述
由于上面源码中注释的内容为POST传参,则使用post方式传入money=100000000&password=404,提示password不能为数字。在这里插入图片描述
再次传入money=100000000&password=404mach,则提示密码太长在这里插入图片描述

这里对字符进行了判断,对字符处理的函数在PHP漏洞中比较常见,使用数组进行传参来绕过判断即可得到flag

money[]=1&password=404mach

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

poggioxay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值