闲来无事,最近在做CTF题,感觉再不练练手我就废了。
1.本地文件包含+文件上传拿flag
-
地址题目:http://ctf.xjnu.edu.cn:666/
题目分析:
看到题目,有两种思路:1).利用文件上传拿
webshell
,然后找到flag
; 2).利用文件包含拿webshell
,然后找到flag
。 目标很明确,思路也有,然后实践操作,结果发现文件上传走不通,然后想利用文件包含漏洞可以读文件,经证实的确可以读取到文件,但是要找flag
就比较难了,因为我不知道flag
在哪啊!于是就有另一种想法,利用远程文件包含拿webshell
,后来经读upload.php
源码发现,应该是不能远程文件包含的。那么最后就剩本地文件包含了,正好呢此处可以上传文件,因此先上传一个图片,不过图片内容改为一句话木马,然后包含这个图片,此时图片里面的一句话木马就会被解析执行,这样我们就拿到了webshell
.
具体操作如下,正好回顾下基础知识
- 利用文件包含读本地文件
/etc/passwd
- 由于最后知道了
flag
文件名和路径,这里就顺便演示下,如下:
- 读取
upload.php
文件源码
读取格式
?file=php://filter/read=convert.base64-encode/resource=文件名
然后base64解码
此时看到
upload.php
源码,可知文件上传拿webshell是行不通的
- 同样读取
index.php
,如下:
然后base64解码
可以看出,此文件包含是对包含文件参数
file
是做了正则匹配过滤的。
解题
- 上传图片
zzqsmile.jpg
,然后抓包写一句话。
- 上传成功!
- 然后包含上传的图片
upload/zzqsmile.jpg
,如下:
- ok!下面就可以用菜刀尝试连接了。
nice! 没毛病!
- 最后就简单了,找
flag
。
flag: flag{pHp_Lfi_t0_Be_Shell!} 之前读文件读的就是这个文件。
2.SQL注入拿flag
- 题目分析: 很明显根据提示信息,此题是道SQL注入的题目,可以看下源码,或者直接可以尝试
index.php?id=1
。
可以发现,此处可能就是注入点,经确认的确存在注入。
- 下面就是sql注入流程一顿操作,最后得到
flag
。
解题完毕!