XYCTF 2024 部分web wp

发现还不是XYCTF的浏览器那我们改改浏览器User-Agent:XYCTF

在这里插入图片描述

还需要本地用户,那我们在修改一个client-IP:127.0.0.1添加上去即可

在这里插入图片描述

还需要一个代理,网上查找了一下伪造代理就发现使用via即可。

在这里插入图片描述

那我们就传cookie即可

在这里插入图片描述

2、ezMake

打开靶机

在这里插入图片描述

随便输入一个ls试试看

在这里插入图片描述

这里的SHELL := /bin/bash:这行设置了 Makefile 里命令执行的 shell 环境为 /bin/bash。
ifndef PATH 和 override PATH :=:这两行检查环境变量 PATH 是否被定义,如果没有定义或者已经被定义,它们都会将 PATH 环境变量置空。这可能会导致问题,因为 PATH 是一个重要的环境变量,它定义了 shell 查找可执行文件的位置。

所以我们可以尝试一下echo $(< flag)试试看

在这里插入图片描述

返回一个echo,$被过滤了,那我们双写试试看。

在这里插入图片描述

3、ez?Make

打开靶机,跟1一样,随便输一个试试看。

在这里插入图片描述

被过滤了,那就换一个查。

在这里插入图片描述

既然可以pwd,那就试试能不能cd。

在这里插入图片描述

开始构造payload

cd ..&&cd ..&&cd ..&&cat /flag

在这里插入图片描述

检查发现cat /flag被过滤了,那我们换more,至于flag我们可以使用区间取值。

cd ..&&cd ..&&cd ..&&more [d-h][k-m][9-z][e-h]

在这里插入图片描述

4、εZ?¿м@Kε¿?

打开靶机
在这里插入图片描述

解析

这个命令看起来是在尝试使用两个输入重定向符号来传递输入给一个空的文件描述符。通常,<符号用于

输入重定向,而

<

是一种

s

h

e

l

l

变量,表示从标准输入中读取。但是在这个命令中,

<是一种shell变量,表示从标准输入中读取。但是在这个命令中,

<是一种shell变量,表示从标准输入中读取。但是在这个命令中,$表示当前shell的进

程ID,而<后面跟着的<又被理解为输入重定向符号。所以整个命令看起来有些混乱。

在这里插入图片描述

首先, $$ 是一个特殊的shell变量,代表当前Shell进程的ID(PID)。在Unix和类Unix系统中,这个变量通常用于引用当前Shell进程的ID。

然后, < 符号通常用于输入重定向,表示将一个文件的内容作为命令的输入,或者从文件中读取内容。

接着, $< 看起来像是一个尝试使用 < 符号来读取 $ 字符后面的内容,但这在常规的shell语法中是不被接受的。

因此,整个命令 $

(

<

(<

(<<) 似乎尝试将当前Shell进程的ID作为文件名,然后使用 < 符号将其作为输入重定向,但这在大多数情况下并不合法,因为Shell通常不会允许使用PID来打开文件。

5、ezmd5

打开靶机

在这里插入图片描述

上图片进行比较,那我们随便上传两个试试看

在这里插入图片描述

返回说只有jpg格式,那我们就把png换一个jpg的试试看

在这里插入图片描述
返回

在这里插入图片描述

分析一下

这段文本告诉我们两个对象在不考虑它们的MD5哈希时是相等的,但是它们的MD5哈希值是不同的。这可能意味着虽然两个对象在某种意义上是"相等"的(例如,它们可能有相同的内容或值),但它们在某些细节上有所不同,导致它们的MD5哈希值不匹配。

那我们百度两张MD5值相同的图片比较一下试试看

在这里插入图片描述

在这里插入图片描述

最后返回flag

在这里插入图片描述

6、ezPOP

打开靶机

在这里插入图片描述

一开始以为pop链条的构造很简单,就是cab触发,关键是calluserfunc怎么利用

测试一下发现不是这样

Payload

var_dump(call_user_func(current,hex2bin)(73797374656d)('dir'));

我们把对应参数赋值,c和d分别在pop链条里面进行赋值,a和b在外部

GET传参

xy=a:2:{i:0;O:3:“CCC”:1:{s:1:“c”;O:3:“AAA”:2:{s:1:“s”;O:3:“BBB”:2:
{s:1:“c”;s:12:“73797374656d”;s:1:“d”;s:9:“cat /flag”;}s:1:“a”;s:1:“g”;}}i:0;N;}

POST传参

a=current&c=hex2bin

最后得出flag

在这里插入图片描述

7、ezRCE

打开靶机

在这里插入图片描述

解析

这是一个白名单绕过,从KaTeX parse error: Expected group as argument to ‘’’ at position 63: …8’,‘9’,‘\’,‘’‘̲,’‘,’<'];这里可以看出能给我们输入的并不对
而且system($cmd);是直接执行系统命令
那好,现在我们来尝试构造payload
首先系统命令?cmd=肯定是要的
那我们这里就在想了,既然限制我们只能输入这些
那我们普通的ls cat这些命令不就用不了了嘛
那怎么办呢??
一开始我也懵啊
然后我就查资料呗
发现其实liunx命令使用八进制也能运行
就比如ls的八进制是\154\163
那我们直接这样就可以被系统读取嘛???
那当然不行,如果这样的话,系统会直接默认为普通数字并不会有任何操作
那我怎么办呢?
这里问了一下GPT,我们可以利用bash的

s

t

r

i

n

g

语法,它允许字符串中的转义序列被解释。那这里我们就可以直接写成

‘string’ 语法,它允许字符串中的转义序列被解释。 那这里我们就可以直接写成

′string′语法,它允许字符串中的转义序列被解释。那这里我们就可以直接写成’ \154\163’,就这样,我们尝试一下能不能在liunx里面运行

在这里插入图片描述

可以看见成功运行,那我们这里的payload就可以写成

?cmd=$’\154\163’

返回

在这里插入图片描述

虽然flag不在当前目录有点可惜,但是我们知道了使用八进制构造payload是可行的
那我们怎么办呢?
直接cat /flag嘛?
那显然是不可能的,因为flag都不在当前页面你怎么cat啊
那这里去请教了一下师傅,我们虽然不能直接cat的
但是我们看见白名单里面有个<小于号
哎,是不是想起来了?
没错,我们可以使用<重定向flag
通俗易懂一点就是说
如果把它想象成一种“流动”,可以这样理解:文件 “/flag” 的内容像水一样流入了 “cat” 命令,然后 “cat” 命令将它输出到了屏幕上。
那cat转换八进制就是\143\141\164
/flag八进制就是\057\146\154\141\147
<不变
所以我们可以这样构造payload

?cmd=$'\143\141\164'<$'\057\146\154\141\147'

仔细看清楚了没有空格跟括号!!!!
所以最后得出

在这里插入图片描述

8、warm up

打开靶机

在这里插入图片描述

简单分析一下
第一个条件:‘val1’ 和 ‘val2’ 必须存在,且它们的值不能相等,但他们的 md5 值必须相等。这种情况在 PHP 中是可能的,因为 PHP 的 md5 函数对于某些特殊的字符串存在哈希碰撞。一个常见的例子是 ‘val1’ 设置为 ’ QNKCDZO’,‘val2’ 设置为 ‘240610708’,这两个字符串的 md5 值都是 ‘0e830400451993494058024219903391’。

payload

http://xyctf.top:42998/?val1=QNKCDZO&val2=240610708

即可得到

在这里插入图片描述

第二个条件
$md5 必须存在,且 $md5 的 md5 值必须等于 $md5。这个条件只有当 $md5 为一个特定的值时才能满足。
在 PHP 中,当进行字符串比较时,任何以 ‘0e’ 开头的字符串都会被视为 0,因为这种形式的字符串被解析为浮点数(科学计数法)。
所以这个”0e215962017”就是一个满足条件的字符串。它的md5 值是 ‘0e291242834679215926201711822669466’。当 $md5 设置为 ‘0e215962017’ 时,这个字符串的 md5 值和它自身进行比较时,都会被视为 0,因此满足了

m

d

5

=

=

m

d

5

(

md5 == md5(

md5==md5(md5) 的条件。

在这里插入图片描述

最后还有第三个条就能解出,那我们来分析一下
在这个条件中,$XY 必须等于

X

Y

C

T

F

XYCTF,

XYCTF,XY 不能等于 “XYCTF_550102591”,但是

X

Y

m

d

5

值必须等于

"

X

Y

C

T

F

5

50102591

"

m

d

5

值。然而,

"

X

Y

C

T

F

5

50102591

"

m

d

5

值是

"

0

e

77033489083562900000837272529

"

。这个

m

d

5

值在

P

H

P

中会被解析为

0

,因为它以

"

0

e

"

开头。在

"

314282422

"

中,

XY 的 md5 值必须等于 “XYCTF_550102591” 的 md5 值。 然而,“XYCTF_550102591” 的 md5 值是 “0e77033489083562900000837272529”。这个 md5 值在 PHP 中会被解析为 0,因为它以 “0e” 开头。 在 “314282422” 中,

XY的md5值必须等于"XYCTF5​50102591"的md5值。然而,“XYCTF5​50102591"的md5值是"0e77033489083562900000837272529”。这个md5值在PHP中会被解析为0,因为它以"0e"开头。在"314282422"中,XY 和

X

Y

C

T

F

的值都是

"

314282422

"

,所以它们是相等的。另外,

"

314282422

"

m

d

5

值是

"

0

e

830400451993494058024219903391

"

,

它以

"

0

e

"

开头,所以在

P

H

P

中会被解析为

0

。这样,

m

d

5

(

XYCTF 的值都是 “314282422”,所以它们是相等的。另外,“314282422” 的 md5 值是 “0e830400451993494058024219903391”, 它以 “0e” 开头,所以在 PHP 中会被解析为 0。这样,md5(

XYCTF的值都是"314282422",所以它们是相等的。另外,“314282422"的md5值是"0e830400451993494058024219903391”,它以"0e"开头,所以在PHP中会被解析为0。这样,md5(XY) 就等于 md5(“XYCTF_550102591”)。

在这里插入图片描述

访问,URL+LLeeevvveeelll222.php即可

在这里插入图片描述

使用bp抓包修改

在这里插入图片描述

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

mg-blog.csdnimg.cn/direct/7b8647038af04fb49453ddd4d227997a.png#pic_center)

使用bp抓包修改

在这里插入图片描述

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

[外链图片转存中…(img-oMD0hVWx-1715560412407)]

[外链图片转存中…(img-VxYc1avZ-1715560412408)]

[外链图片转存中…(img-HFoibcAc-1715560412408)]

[外链图片转存中…(img-hWjUuPDt-1715560412409)]

[外链图片转存中…(img-qAWL4KGT-1715560412409)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值