web:[HNCTF 2022 Week1]Interesting_include
打开环境,叫我们尝试访问一下文件
尝试对应的路径,没有结果,代码审计,检查用户十分使用get的方式传参filter,后面使用一个正则判断传参的数据中是否包含flag,如果没有就报错,这边又涉及到include函数,如果文件名通过检查,脚本尝试使用include函数包含该文件,这个函数会包含并执行指定的文件。
那么我们尝试执行一下cat函数,也是报错
看这个感觉是层级的问题,尝试之后也是没什么结果。题目标题有php为协议,尝试一下,仔细阅读代码,发现层级确实是特定的是./flag.php,前面变量也不是像往常一样的file,而是规定的filter,尝试一下?filter=php://filter/convert.base64-encode/resource=./flag.php得到
这个是否可以理解成一种绕过,只不过如果按照代码来说绕过的办法是很多的,可是不论是字符替代,或者是大小写绕过都没有用,总之按照意思我们不是要传参一个指令给filter之后include函数会包含它然后自己执行吗,那为什么其他的绕过确实不行的。
pwn:攻防世界level0
查壳,ida
看一下主要函数
声明buf接受128个字节,后面确读取了512个字节给他,显然溢出,找后门函数
地址
尝试写代码,出不来,去找了一下别人怎么写的,发现只有那个填充量是错的,其他思路倒是没什么问题,这个填充量做到现在也没摸出个声明规律来,千奇百怪的
misc:polar靶场大礼包
文件是一个压缩包要密码,用010分析一下发现末尾处还有zip文件
foremost分离,没什么结果
尝试爆破,尝试很多成功
得到图片,010分析在末尾处找到类似base64加密的字符串
解密失败,尝试base32成功
再尝试base64成功
得到类似flag字样的字符串,应该是置换函数看样子尝试栅栏密码得到类似flag格式字符串
直接凯撒得到答案
crypto:polar靶场另寻出路
打开时两个文本文件
emoji加密之间见过一个base100加密的尝试一下,解密不出来
那肯定是其他的加密方式,搜索一下有一种叫ase的或者python里面的emoji库等等,这里是第一个,叫emoji-ase,这个是要密钥的,结合另一个文件,密钥应该是文本文件或者kuangrenriji,直接解密https://aghorler.github.io/emoji-aes/
reserve:攻防世界666
查壳,ida
看主函数,很显然是将我们输入的加密之后和正确的flag对比
看一下加密之后的字符串
看一下加密函数
可以知道是把a1进行一系列异或之后储存到a2,继续追踪一下key是12h,但是按照加密函数来看,这个应该是一个数字,直接转十进制得到是18,每次加密三个字符,前面有验证a1长度是否与key相等,那么a1应该就等于18
写脚本,发现也不是直接用enflag字符串,尝试多次之后发现要转十进制之后进行运算,这里也就解释了为什么是18
解密出来还是有问题,这我就搞不懂了
看一下别人的脚本
人家是直接用python数值化,然后它先是-6再+6,明明代码上面是我那个顺序啊,搞不懂了,还有他不是先加减再异或是反过来的,明明代码是先加减啊,修改一下
还是错的.............,为啥啊?我又看了很多wp,运行了他们的脚本的出来都是我这个答案,明明是一样的脚本为什么运行出来的结果和他们不一样