XYCTF2024
1,XYCTF2024-ezhttp
访问是一个登录框,先右击看一下源码
看到提示,又翻看了f12,没有什么发现,扫一下目录
扫到了一个robots.txt和flag.php
访问
得到账号密码
出现这种情况抓包
更改Referer,Referer它是当前请求页面的来源页面的地址
更改ua头,它包含了操作系统,浏览器等信息
试了一下xff头,发现不行,xff头 用于标识通过代理服务器连接到 web 服务器的客户端的原始 IP 地址的标头。
一些代理服务器会将客户端的IP地址放在Proxy-Client-IP请求头中。
下面链接有很多类似的请求头
获取客户端真实IP地址的HTTP请求头_wl-proxy-client-ip-CSDN博客
via用于表示请求或响应经过的中间节点,通常被代理服务器使用。
根据提示,我们更改一下cookie
2,XYCTF2024-ezMake
在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。
函数调用,很像变量的使用,也是以 $
来标识的,其语法如下:
$(<function> <arguments>)
shell函数也不像其它的函数。顾名思义,它的参数应该就是操作系统Shell的命令。
通过shell函数执行命令
使用函数 — 跟我一起写Makefile 1.0 文档
3,ezmd5
随便上传了两张图片,出现的结果
应该是要让两张图片的md5一样
通过fastcoll生成jpg的图片进行碰撞,就能获取到flag
MD5碰撞原理简单介绍及其实现 - wysng - 博客园
4,warm up
前面两个代码可以直接看出来是md5之间进行比较,而且是弱比较
md5强比较,弱比较
强比较:使用三个 ''==='' 比较,比较值,也比较类型
弱比较:使用两个 ''=='' 比较,只比较值,不比较类型
- 0e绕过的原理
科学记数法是一种记数的方法。
计算器表达10的幂一般是用E或e
如:2 760 000 = 2.76×10^6 = 2.76e6
所以0e,无论后面跟什么值,都是0
加密后的密文 原值
QNKCDZO 0E830400451993494058024219903391
240610708 0E462097431906509019562988736854
s878926199a 0E545993274517709034328855841020
s155964671a 0E342768416822451524974117254469
s214587387a 0E848240448830537924465865611904
绕过了第一个if
绕过第二个if, 因为md5("0e215962017")=0e291242476940776845150308577824
绕过第三个if, 覆盖XY和XYCTF然后0e比较
/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)
?a=/test/e&b=system('cat /flag');&c=test
preg_replace /e 模式 漏洞分析总结 - 猪猪侠的哥哥 - 博客园