ctfshow 做题 web模块 web11~web14

Posted Goodric

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctfshow 做题 web模块 web11~web14相关的知识,希望对你有一定的参考价值。

ctfshow 做题 web模块 web11~web14

——

web11

打开环境,可输入密码登录。
并且给出了源码, 过滤了这些字符:

$regex = “/(select|from|where|join|sleep|and|\\s|union|,)/i”;

满足这个条件时,输出 flag :

if($password==$_SESSION['password'])
            echo $flag;

F12 在存储项把 phpsession 的值给去掉,变为空。

然后不输入密码进行登录,达到密码的值和 session 的值相等,得到 flag 。

——
——

web12

打开环境,界面上没有什么东西, F12 看源码有提示进行 get 传参 ?cmd=

测试 cmd 参数的效果:

?cmd=phpinfo();

看到有回显,说明可以在 cmd 的值上构造语句执行命令。

本来想用 system() 函数的命令:system(‘ls’) 来读取存在的文件名,但是这个语句页面无回显。

这里使用 scandir() 函数来查看目录中的文件。
构造语句:

?cmd=print_r(scandir(‘./’));

得到一个很长的文件名。

还有一个函数也能读取目录文件: glob() 函数。
如:

glob("*")  匹配任意文件;
glob("*.txt")  匹配以 txt 为后缀的文件。

所以也可以用语句:

?cmd=print_r(glob(“*”));

回显出前面的那个很长的文件名。

得到这个文件名,接下来就看这个文件里的内容了,本来想 “url/文件名” 直接查看,不过php 文件似乎看不了,如果是 .txt 文件应该可以直接看。
所以要用到 show_source() 函数: 对文件进行 PHP 语法高亮显示。
语句:

?cmd=show_source(“903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php”);

?cmd=highlight_file(“903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php”);

show_source函数是highlight_file()函数的别名
得到 flag 。

——
——

web13

打开环境,是文件上传的题型。

先简单尝试传 .php 一句话木马,回显: error file zise ,后端对文件后缀有限制。传了很多,都没有用。

这里有一个源码文件,upload.php.bak ,访问可进行下载。

源码要求,文件的大小要小于等于24,名字长度小于等于9,后缀长度小于等于3,并且上传文件的文件名和后缀名都不能含有 php 字眼。

这题的做法应该是要进行文件解析。

先把一句话木马写入 1.txt 文本里,

再上传**.user.ini** 文件
.user.ini 它是PHP 支持基于每个目录的 INI 文件配置,而且如果你的 PHP 以模块化运行在 Apache 里,则用 .htaccess 文件有同样效果。

内容为

auto_prepend_file=1.txt

auto_prepend_file 就是设置页眉和脚注,可以保证它们在每个页面的前后被载入。
使用这些指令包含的文件可以像使用include()语句包含的文件一样。
有了这条件命令后。我们就可以执行1.txt的内容了。
然后对这两个文件进行上传。

上传之后,先用 ?a=phpinfo(); 测试,看到可以成功访问。

现在就可以用参数 a 进行操作了。
查看目录下的所有文件:

?a=system(‘ls’);

a=print_r(glob(“*”));

看到所有文件之后,可以对指定的文件内容进行查看。

a=highlight_file(‘903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php’);

得到 flag 。

——
——

web14

打开环境,页面显示一串代码。

源码内容为进行 get 传参 c ,并且 c 的值会在 sleep() 函数内,即值是多少,页面就会休眠多少秒。
并且不同的值页面会回显不同的内容,有的是字符 ’@A@‘ ,有的是字符 '$url ’ ,正确的应该要让它回显变量 $url 。
传入 ?c=3 时,得到一个文件名。

访问这个文件,是一个查询页面,点击查询的内容会在 url 的参数 query 中显示。
所以断定要在参数 query 后进行 sql 注入。

F12 看到查询语句对很多字符进行了过滤,有 information_schema ,.tables, .columns, linestring ,空格,polygon/is 。
先尝试

执行语句,空格用 /**/ 代替,回显的内容都会以弹窗 javascript 方式出现。
这里用 burp 方便查看。
先尝试查看数据块版本:

?query=-1/**/union/**/select/**/version()

语句成功执行,得到版本号 10.2.26-MariaDB-log

用 load_file() 函数访问前面刚打开环境一串代码开头看到的文件 secret.php :

?query=-1/**/union/**/select/**/load_file('/var/www/html/secret.php')

secret.php 的内容显示,flag 在另一个文件 /real_flag_is_here 里。

同样访问 /real_flag_is_here 文件:

?query=-1/**/union/**/select/**/load_file('/real_flag_is_here')

得到 flag 。

以上是关于ctfshow 做题 web模块 web11~web14的主要内容,如果未能解决你的问题,请参考以下文章

ctfshow 信息搜集模块做题 web1~20

ctfshow 做题 萌新 模块

ctfshow 做题 萌新 模块

ctfshow 做题 web 方向 web1~web10

ctfshow 做题 MISC入门 模块 11-20

ctfshow web入门-sql注入