[RootersCTF2019]I_3_Flask 1
[RootersCTF2019]I_<3_Flask1附Arjun安装使用教程SSTI(Server-Side Template Injection,服务端模板注入) 源代码中有 先把arjun安装好 1.安装arjun教程 如果像我一样由于不使用全局安装,需要在master目录下打开终端下载三个依赖库 在终端依次输入: pip install dicttoxml -i https://pypi.tuna.tsinghua.edu.cn/simple pip install ratelimit -i https://pypi.tuna.tsinghua.edu.cn/simple pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple 使用教程:使用 Python 的 模块运行模式 (-m): 命令格式: python -m arjun -u url -m GET 关键参数: -u:指定题目给你的网址。 -m GET:告诉工具去 URL 后面找参数(Flask 题目常用)。 ...
[GWCTF 2019]枯燥的抽奖 1
[GWCTF 2019]枯燥的抽奖1知识点:1.substr(substring子字符串)->意味提取一部分字符串 举例: substr($str, 0, 10);表示在str字符串中,从0处开始截取,一次截取10位 2.伪随机 算法的本质是“确定性函数” PHP 的 mt_rand() 使用的是 Mersenne Twister(梅森旋转算法)。 数学本质:它是一个复杂的递归公式。每一个新产生的数字 $X_{n}$ 都是基于前一个状态 $X_{n-1}$ 通过位运算(移位、与、异或)计算出来的。 输入决定输出:该算法接受一个初始值,即 Seed(种子)。一旦 Seed 确定,算法生成的整个数字序列就完全固定了。 状态机的内部机理 计算机没有“灵魂”去随机想一个数字,它运行的是一个状态机: 种子 (Seed):初始化状态机的内部状态向量(Mersenne Twister 拥有一个 624 个 32 位整数的状态阵列)。 序列生成:每次你调用 mt_rand(),算法会对状态阵列执行一次“旋转”(Twist)变换,并提取出一个数字输出。 不可逆性 vs 可预测性:...
[RCTF2015]EasySQL 1
[RCTF2015]EasySQL1寻找注入点,这里利用的是二次注入, 我的理解是先埋雷,然后打开雷得到想要的内容 我们可以猜测更改密码的后端代码 update 新密码 where username=”用户名” 1update password='xxxx' where username="xxxx" 那这里我们利用报错注入,修改用户名为我们的注入内容即可 1update password='xxxx' where username="admin"||extractvalue(1,...,0x7e))# 为什么是admin?前面注册的时候发现这个admin用户名已经被注册过了 重新注册,用户名为以下内容: 123admin"||extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)=database()),0x7...
moectf2025 speed
moectf2025 speed题目提示: Did you see my little pony? She runs really fast… 运行软件后出现窗口,出现后立马闪退 当然你可以录视频截屏看到窗口内容,在后面我们会知道内容就是flag 也可以来好好研究一下底层逻辑: 首先找到窗口函数,winmain f5反汇编 得到 红色部分可能不太清楚,那个就是销毁窗口函数,我们只要调试然后在这里做断点就ok了 然后就可以看到停留的窗口 调试方法:f2断点,断电为红色圆圈的时候,按软件上面的运行键|> 以下是我掉过的坑,看到flag就直接去找flag的线索了,没思考题目的意思 得到的flag也是错的 12345678910111213141516171819202122 for ( i = 0; i < 100; ++i ) { if ( i >= (unsigned int)'d' ) j____report_rangecheckfailure(); Destination[i] = 0; ...
moectf2025 catch
moectf2025 catch知识点:1.ROT13ROT13 的全称是 Rotate by 13 places(循环右移13位)。 字母表一共有 26 个字母,13 恰好是它的一半。这个加密方法就是把字母表对折: A 变成第 14 个字母 N B 变成第 15 个字母 O …以此类推 它的特点是: 对称性:如果你对一个词做两次 ROT13,它就会变回原样。 只换字母:数字(如 4)、符号(如 {、_)完全不受影响。 题目提示:IDA pro 9.0 推出了针对 C++ exception 的优化 但是这并不意味着所有的 try catch 都能被正确反编译 查找字符串发现了疑似flag的字符串还有一个try to catch me .data:0000000140027120 00000027 C zbrpgs{F4z3_Ge1px_jvgu_@sybjre_qrfhjn} 既然题目提示了catch,我们去找到try to catch me的位置,一探究竟 try to catch me1234567891011 printf("try to catch ...
webshell后门 1
webshell后门1题目提示别忘记看,是找pass 文件毕竟是有后门的,我的火绒把他识别了然后删掉了问题文件 别忘记做这道题目之前把火绒给关了 可用d盾软件查杀文件,看看可疑文件里面有没有我们想知道的pass 打开zp.php之后发现pass 12345678/*===================== 程序配置 =====================*///echo encode_pass('angel');exit;//angel = ba8e6c6f35a53933b871480bb9a9545c// 如果需要密码验证,请修改登陆密码,留空为不需要验证$pass = 'ba8e6c6f35a53933b871480bb9a9545c'; //angel
zip伪加密 1
BUUCTF zip伪加密1知识点:zip加密辨识123456789101112131415161718未加密:文件头中的全局方式位标记00 00目录中源文件的全局方式位标记00 00伪加密:00 0009 00真加密:09 0009 00只要是奇数都为加密,而偶数则视为未加密 绿色:上:文件头标记;下:目录中源文件的文件头标记 红:全局方式位标记 解法:直接把90改成00即可
ningen 1
ningen1010打开发现有压缩包的标识, 拿到kali虚拟机里面,binwalk和foremost一下得到压缩包 密码既然提示了就爆破,得到密码即为zip文件解压密码 打开后获得flag
moectf2025 base
moectf2025 baseBase编码是一种将二进制数据转换为可打印字符的编码方式。 它将二进制数据按照一定规则映射为一组字符,以便于传输和存储。 寻找字符串 moectf{Y0u_C4n_G00d_At_B45e64!!}
镜子里面的世界 1
镜子里面的世界1steg.png已经提示了steg 然后提取就行 记得去掉空格