2026/8/24 15:09:37

CTF_week1

CTF_week1 其实之前都是一天一写现在变成一周一写难受ok先介绍一下[GXYCTF2019]Ping Ping Ping点进去后出现?ip对于这道题可以看出这是通过用Get来实现获取flag其实对于这道题目先用hacbar打开我尝试输入ls后显示的不是ls表现出来的是对于space的限制后面尝试用$IFS$9来实现替代space其实一开始是尝试用${IFS}来观看的可是出现报错{}被限制了后面有$IFS$9来实现代替空格现在这里解释一下IFSInternal Field Separator是 shell 内置变量默认值空格、Tab、换行可以用来充当参数分隔代替空格。对于程序后端可以实现限制空格但应该不能限制IFS所以用IFS来替代对$9而言它是是用来防止前面的IFS与后面的内容粘连在一起从而实现防止shell连接时错误之后我们尝试列出看见了有两个文件我尝试去cat flag.php,它出现了限制对于flag出现了排斥那我们先看看index.php现在出现了限制的源码看见排斥flagPHP 代码preg_match()是正则匹配函数。就是意味这只要这个字符串里面依次出现了flag就显示不通过所以我们换个思路先在前面创一个变量后面再用来实现绕过接着你查看源代码就能看见flag[极客大挑战 2019]Knife看到中间的eval表明是用php语言来实现用post来调控先用phpinfo来尝试一次这是否会出现限制但直接就访问了说明这里基本不会限制后面用scandir()和var_dump两者来实现scandir(string $目录路径)来实现扫描指定目录返回该目录下所有文件和文件夹名称返回数组var_dump(变量)打印变量完整信息数组对象都可以输出输出数组下标每个元素的值var_dump(scandir(/));这个组合相对来讲是扫描根目录得到文件数组后把这个数组交给var_dump然后把数组完整的打印输出到页面Sycvar_dump(scandir(/));输入后可以看到源代码看到有flag的stringfile_get_contents(文件名)是 PHP 文件读取函数把整个文件都读成一个字符串返回这样就和var_dump搭配来实现打印出要的内容查看源码后就能看见flag[极客大挑战 2019]Upload