2024LitCTF--Web方向复现记录
比较简单的几道题
2024LitCTF–Web方向复现记录
[LitCTF 2024]浏览器也能套娃?
点进是一个浏览器界面 先随便试一下
http ://127.0.0.1
通过url地址访问网页内容 比较容易想到ssrf
之前笔记提到的ssrf的几种伪协议 试一下
file:///etc/passwd
下一步去尝试几个常见路径
[LitCTF 2024]高亮主题(划掉)背景查看器
1 |
|
strpos函数作用
strpos($haystack, $needle)
:在字符串 $haystack
中查找 $needle
第一次出现的位置。如果找到了,返回位置(整数 ≥ 0) 如果没找到,返回 false
。
1 | if (strpos($file, '..') === false) { |
如果 $file
不包含 ..
,strpos($file, '..') === false
执行 include $file
。
如果包含了 ..
,条件不成立,就输出 "Access denied."
。
抓包看到传进去的参数是theme
直接theme=../../../../flag就能得到
[LitCTF 2024]百万美元的诱惑
1 |
|
PHP 的 is_numeric()
函数用于检测变量是否为数字或数字字符串。
这里的意思就是c不能是数字而且还要大于2024
这个绕过是数组绕过 buu里面有道easymd5 那个有解释
得到dollar.php
访问
1 |
|
整个匹配就是要让x变成12
【bashfuck】bashshell无字母命令执行原理
【bashfuck】bashshell无字母命令执行原理 - FreeBuf网络安全行业门户
可以参考这个文章
$(())为0 通过取反得到$((~$(())))为-1
想要得到某个正整数 N:
- 先构造
-(N+1)
(通过重复-1
相加)。 - 再用取反
~
,就能得到N
。
所以要得到12
$(($(($(($(())))$(($(())))$(($(())))$(($(())))$(($(())))$(($(())))$(($(())))$(($(())))$(($(())))$(($(())))$(($(())))$(($(())))$(($(())))))))
这样构造
然后在html注释里查看flag
[LitCTF 2024]SAS - Serializing Authentication
简单的反序列化 代码给了username和passwd 构造反序列化让账号密码是登陆的就行
登陆的时候直接用构造出来的就行 不需要再加user
[LitCTF 2024]exx
题目已经给了提示是xxe
首页面长这样
随便登录一下抓包试试
也是很明显的xxe格式
读一下源代码
获取用户名和密码
检查用户名和密码是否为空
构造XML格式的数
发送AJAX请求
处理响应
输入的用户名直接回显到了页面上
XXE漏洞攻击——几道CTF题_xxe ctf-CSDN博客和这个题类似
然后找到flag的路径
1 | <!DOCTYPE test [ |
[LitCTF 2024]一个….池子?
这个是有关于ssti的 还没有详细学习ssti 简单看一下
ssti的一个明显特征就是当用户的输入被服务器端的模板引擎作为模板代码处理时,会影响或改变生成的页面内容或行为
异常的模板行为:
如果用户输入被直接用于模板而没有适当的清理或转义,那么输入特定的模板语法可能导致页面显示异常或出现错误信息。
- 输入类似
{{7*7}}
这样的表达式可能会:- 页面渲染出
49
(说明输入被解析了) - 页面结构异常(说明语法被执行了)
- 直接报错(说明模板引擎尝试解释输入)
- 页面渲染出
👉 这是最直接的 探测手段。
错误消息:
输入模板特定的语法后,服务器响应的错误消息可能会透露模板引擎的信息,比如类型、版本或错误的模板语句。
输出控制:
通过输入模板语言的控制结构(如循环和条件语句),攻击者可以控制输出内容,这可能表明模板引擎正在解析用户输入。
条件语句:
1 | {% if 7*7 == 49 %}YES{% endif %} |
如果页面出现 YES
,说明模板引擎执行了逻辑。
循环语句:
1 | {% for i in range(3) %}TEST{% endfor %} |
如果页面出现 TESTTESTTEST
,说明循环被执行。
命令执行:
如果用户能够通过输入执行系统命令,并且这些命令的结果反映在响应中,这几乎可以肯定是SSTI。
攻击者通过模板语法调用系统 API 或对象执行命令
jinja2:
1 | {{ cycler.__init__.__globals__.os.popen('id').read() }} |
Twig:
1 | {{ ['id']|filter('system') }} |
Freemarker:
1 | ${"freemarker.template.utility.Execute"?new()("id")} |
一旦命令执行成功,并且结果在响应中返回,那就确认是 SSTI 漏洞,而且能导致远程代码执行(RCE)。
具体的看ssti的笔记
fenjing crack -u http://node4.anna.nssctf.cn:28186/echo –method POST –inputs input –interval 0.01
fenjing crack -u http://node4.anna.nssctf.cn:28136/ssti –method POST –inputs name –interval 0.01
安装fenjing
执行上面的代码一键梭哈
用的时候题目不一样要修改一些参数 比如post还是get 以及传参进去的参数名