成功的营销网站,电话网站模版,个人网站建设基本教程,wordpress+菜单大小Misc
神秘文件
1.根据提示信息#xff0c;均需要从ppt中提取信息
2.在ppt的属性中发现一串密文和key#xff0c;解密之后得到第一部分#xff0c;根据提示Bifid chipher#xff0c;为双歧密码解密#xff0c;使用Bifid Cipher Decode解码 3.在第五张幻灯片#xff0c;…Misc
神秘文件
1.根据提示信息均需要从ppt中提取信息
2.在ppt的属性中发现一串密文和key解密之后得到第一部分根据提示Bifid chipher为双歧密码解密使用Bifid Cipher Decode解码 3.在第五张幻灯片发现有一串编码base64之后得到第六部分 4.第三张幻灯片发现base64编码解码之后得到flag 5.在第五张幻灯片的批注下找到base64解码之后得到第五部分 6.在幻灯片的母版中发现加密的内容并且需要溢出B,b,1,3解码之后得到第八部分 7.在第四张幻灯片中选择窗口发现加密内容解码之后得到第七部分 8.将ppt改为zip之后在照片的文件夹中发现图片有加密的内容解密之后得到第九部分 9.在ppt的压缩包中发现doc文件打开之后发现有加密的内容解密根据提示凯撒密码位移为10且是base64编码之后得到第二部分 10. 将压缩包中的.bin文件放在010中打开发现加密内容 11.使用base64解码之后再使用RC4解密最后再base64得到第三部分 Web
Simple_PHP
1.代码审计
?php
ini_set(open_basedir, /var/www/html/); //这行代码使用 ini_set 函数设置 PHP 的 open_basedir 配置项。open_basedir 是一个安全相关的配置项用于限制 PHP 可以访问的目录范围。这里将其设置为 /var/www/html/意味着 PHP 只能在这个目录及其子目录中执行文件操作。
error_reporting(0);if(isset($_POST[cmd])){$cmd escapeshellcmd($_POST[cmd]); //代码检查是否有名为 cmd 的 POST 参数。如果有则使用 escapeshellcmd 函数处理该参数该函数会尝试转义 shell 命令中的特殊字符使其更加安全。if(!preg_match(/ls|dir|nl|nc|cat|tail|more|flag|sh|cut|awk|strings|od|curl|ping|\*|sort|ch|zip|mod|sl|find|sed|cp|mv|ty|grep|fd|df|sudo|more|cc|tac|less|head|\.|{|}|tar|zip|gcc|uniq|vi|vim|file|xxd|base64|date|bash|env|\?|wget|\|\|id|whoami/i, $cmd)) {system($cmd); //这段代码首先使用正则表达式来检查 $cmd 是否包含任何可能危险或敏感的命令。如果 $cmd 不包含这些命令那么代码将使用 system 函数执行这个命令。system 函数用于执行外部程序并输出其标准输出。
}
}show_source(__FILE__);
?
绕过知识点
open_basedir函数的绕过
open_basedir对命令执行没有限制
假如没有进行过滤 那我们就可以通过system函数直接执行
资料绕过 open_basedir_glob 绕过basedir-CSDN博客 escapeshellcmd()函数
escapeshellcmd() 对字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。
资料escapeshellarg参数绕过和注入的问题_escapeshellcmd-CSDN博客
编码绕过
如果命令注入的网站过滤了某些分割符可以将分隔符编码后url编码base64十六进制编码等绕过
资料如何实现CTF中命令执行绕过方法 - 网络管理 - 亿速云
方法一
无参数数据库连接查询
1.使用php -r phpinfo();命令查看相关信息phpinfo是一个服务器的运行指令可以显示php服务器的配置信息。观察代码并没有发现禁用php尝试用php -r 去执行php命令
php -r:执行一段php代码如 php -r echo hello world;
2.因为linux好多指令被禁用了考虑16进制转2进制同样eval函数也没有被禁止那么既能够不被转义又能不被匹配还是命令执行的所以想到使用十六进制编码进行绕过
知识点1
hex2bin()函数是PHP中的内置函数。 hex2bin()函数用于解码十六进制编码的二进制字符串。也就是说它将以十六进制表示编码的二进制字符串解码回二进制表示。
hex2bin() 函数把十六进制值的字符串转换为 ASCII 字符。
注意此函数的目的不是将十六进制数转换为二进制数为此我们可以使用PHP中的 base_convert()函数。此函数仅用于解码十六进制编码的二进制字符串。
知识点2
在十六进制中只存在数字和字母不会被转义还能进制转换后绕过正则
3.按照正常逻辑查看index.php文件发现什么都没有再查看根目录发现根目录下没有flag
4.想到读取/etc/passwd文件发现有mysql用户其中/root表示用户目录/bin/bash表示该用户登录linux时用的shell。 /etc/passwd 是linux系统对用户进行识别的一个文件系统中的所有用户都要在这里登记.当用户登录到linux系统时,linux会读取这个文件来确认用户的身份./etc/passwd文件中的每一行都表示一个用户信息一行有7个段位每个段位用:号分割
5.想到flag在数据库里面进行查找 相关命令echo mysql -u root -proot -e use PHP_CMS;show databases;; 这个命令是在命令行中执行的它的作用是使用mysql命令连接到MySQL数据库并执行查询语句来显示PHP_CMS数据库中的所有数据库使用反引号来引用命令的输出。 6.使用echo mysql -u root -proot -e use PHP_CMS;show tables;;来查表
7.使用来查字段 echo mysql -u root -proot -e use PHP_CMS;select * from F1ag_Se3Re7;; 得到flag