XJNU-CTF 2018

闲来无事,最近在做CTF题,感觉再不练练手我就废了。

1.本地文件包含+文件上传拿flag

mark

  • 题目分析:

看到题目,有两种思路:1).利用文件上传拿webshell,然后找到flag; 2).利用文件包含拿webshell,然后找到flag。 目标很明确,思路也有,然后实践操作,结果发现文件上传走不通,然后想利用文件包含漏洞可以读文件,经证实的确可以读取到文件,但是要找flag就比较难了,因为我不知道flag在哪啊!于是就有另一种想法,利用远程文件包含拿webshell,后来经读upload.php源码发现,应该是不能远程文件包含的。那么最后就剩本地文件包含了,正好呢此处可以上传文件,因此先上传一个图片,不过图片内容改为一句话木马,然后包含这个图片,此时图片里面的一句话木马就会被解析执行,这样我们就拿到了webshell.

具体操作如下,正好回顾下基础知识

  • 利用文件包含读本地文件/etc/passwd

mark

  • 由于最后知道了flag文件名和路径,这里就顺便演示下,如下:

mark

  • 读取upload.php文件源码

读取格式

1
?file=php://filter/read=convert.base64-encode/resource=文件名

mark

然后base64解码

mark

此时看到upload.php源码,可知文件上传拿webshell是行不通的

  • 同样读取index.php,如下:

mark

然后base64解码

mark

可以看出,此文件包含是对包含文件参数file是做了正则匹配过滤的。

解题

  • 上传图片zzqsmile.jpg,然后抓包写一句话。

mark

  • 上传成功!

mark

  • 然后包含上传的图片upload/zzqsmile.jpg,如下:

mark

  • ok!下面就可以用菜刀尝试连接了。

mark

nice! 没毛病!

  • 最后就简单了,找flag

mark

flag: flag{pHp_Lfi_t0_Be_Shell!} 之前读文件读的就是这个文件。


2.SQL注入拿flag

mark

  • 题目分析: 很明显根据提示信息,此题是道SQL注入的题目,可以看下源码,或者直接可以尝试index.php?id=1

mark

mark

可以发现,此处可能就是注入点,经确认的确存在注入。

  • 下面就是sql注入流程一顿操作,最后得到flag

mark

解题完毕!