BUUCTF web wp (五)

文章目录

  • [ACTF2020 新生赛]BackupFile——备份文件
  • [HCTF 2018]admin
    • 方法1
    • 方法2
  • [极客大挑战 2019]BuyFlag——PHP函漏洞

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

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

BUUCTF web wp (五)_第1张图片

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

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

/index.php.bak

BUUCTF web wp (五)_第2张图片

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

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

BUUCTF web wp (五)_第3张图片

[HCTF 2018]admin

BUUCTF web wp (五)_第4张图片
点击HCTFBUUCTF web wp (五)_第5张图片
点击404:Not Found,页面没有任何跳转。
页面有右上角有两个按钮,登录和注册
BUUCTF web wp (五)_第6张图片

访问登录的页面

BUUCTF web wp (五)_第7张图片
再访问注册的页面

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

猜测如果以admin登录成功,则可能的到flag。我们在使用注册的账号登录成功后,发现右上角有三个按钮BUUCTF web wp (五)_第11张图片
我们三个操作均尝试并查看网页源码,寻找可用的信息。BUUCTF web wp (五)_第12张图片

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的网址,尝试访问。BUUCTF web wp (五)_第13张图片
下载该网站的flask文档【Flask 是一个用 Python 编写的Web应用程序框架】,并解压BUUCTF web wp (五)_第14张图片
解压后打开文件夹的index.html文件,BUUCTF web wp (五)_第15张图片

{% 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进行注册,即可登录成功获得flagBUUCTF web wp (五)_第16张图片

方法2

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

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

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

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

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

money[]=1&password=404mach

BUUCTF web wp (五)_第24张图片

你可能感兴趣的:(CTF,前端)