CTFSHOW-WEB详解
一、WEB13–文件上传
开始的界面就是文件上传,确定方向为文件上传漏洞分析,尝试上传文件,我上传的第一个文件是一个文本文件很小只有9个字节,就上传成功了直接,还以为会按往常一样出现绝对路径又或者提示只能上传别的格式文件,然后我们通过绕过,接着使用蚁剑连接直接看文件拿到flag。
然而。。。。。。
简单的信息泄露例子,看完绝对不亏
.
事情没有我们想的那么简单,我上传一个webshell的时候,发现内容超过了大小,又试了几次发现还是不行,寻思着看个源码呗,
源码也没有
,这题目不会一点提示都不给吧!思来想去,可能是文件泄露,试了一下upload.php.bak,果然代码放在里面。
总结一下文件内容,文件大小不能超过24,文件名不能超过9,后缀名不能超过3且不能为php(防止挂马)。没有php且不能超过3,把我们常规的绕过基本封死,既然如此我们就要我们就试试.hataccess和user.ini文件。
1.创建一个1.txt
echo "<?php eval($_GET[b]);" > 1.txt
2.创建一个.user.ini文件
vi .user.ini
3.在文件里面里写入auto_ prepend_ file=1.txt
auto_ prepend_ file
意味这是在php脚本执行前会执行这个参数设置的脚本
,然后这个参数的脚本所在目录受include_ path限制。此时任意一个页面都会将该文件中的内容包含进去。这样在该目录下的所有文件都会包含1.txt的内容。
4.开始文件上传
以上的文件都符合所有的要求,都是可以上传的,我们这里先上传.user.ini,再上传1.txt文件。
本来想着直接上antSword,但是按照各位博主也是无法查看文件,那就只能利用网页直接读取文件。
5.用glob()和print_r()打印出文件名,当前文件的目录的文件名。
/?b=print_r(glob("*"));
附加.glob()和highlight_file()讲解
[好像也可以使用
show_source
]
6.直接读取文件,拿到flag。
/?b=highlight_file("9*.php ");
二、WEB-红包题第二弹
这道题开始是真的看不懂为什么要这样后面各种查找资料才懂了一点。
下面就给大家讲讲知识点。Content-type和Content-Disposition不是特别懂。
題目:
一般我们的文件上传都会放到
/temp/php??????
,一般后面的6个字符是随机生成的有大小写,
?可以代表1个任意字符,也算是一种通配符,而*能代表很多个
,当然glob通配符还有很多很多,读了绝对不亏之
通配符
.上传完毕后然后再决定删不删除之类的操作,所以我们就需要通过这一步骤,上传文件并且执行sh脚本语句,来查看该目录是否用有重要的内容。
1.开始抓包,然后构造Poc命令
为什么这里为什么是用
/?cmd=?><?=`.+/??p/p?p???’
呢?我们来看RCE中命令的执行方式:
system(‘ls’);
echo(‘ls’);
有这两种,但是这里题目都进行看过滤所以我们得尝试绕过过滤,进行突破,构造
?>
是为了闭合之前的语句;
<?=
就是echo的意思。
.
即source的意思,表示命令的执行,Linux中C程序运行不就是用的这个吗?;
+
表示过滤空格等于%20;执行完毕。
2.构造文件上传的报文包
具体该包含哪些我也不是很懂,我就讲讲为什么是
#!bin/sh
,首先#!是启动bin文件中的命令的意思,bin(binary)主要存放着系统常用的命令,比如 cat more ls less 等等,可以执行这些命令后我们就可以在一下行,直接远程命令执行。
#!bin/sh
ls
执行ls,返包就可以看到一个flag文件,然后cat /flag.txt返包即可拿到flag。
读了绝对不亏之
无字母数字webshell之提高篇
.