ctfshow-WEB-web14( 利用数据库读写功能读取网站敏感文件)

Posted 士别三日wyx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ctfshow-WEB-web14( 利用数据库读写功能读取网站敏感文件)相关的知识,希望对你有一定的参考价值。

ctf.show WEB模块第14关是一个SQL注入漏洞, 绕过switch循环后可以拿到一个登录界面, 登录界面存在SQL注入, 脱库以后会提示flag在另一个文件中, 利用数据库的文件读写功能读取文件内容即可拿到flag

 

开局是一个switch循环, 需要传递参数 c, 参数对应的执行结果有四种: '$url', '@A@', $url, "$url" ; 前两个是字符串, 没啥用, 作者的目的应该是想让我们输出后两个 $url 的其中一个, 但输出之前还有个sleep(), 选的不合适就会睡眠很长时间, 这里我们传递一个 3即可

首先科普一个php的特性: 单引号包裹的内容只能当做纯字符串, 而双引号包裹的内容, 可以识别变量, 所以源码中的 "$url" 可以当做 $url 变量被正常执行

switch循环有一个特点, 如果 case条件对应的代码体中没有 break或者其他循环控制的关键字, 则会继续执行下一个 case条件的代码, 这里我们传递 3, echo '@A@' 以后, 会继续执行 case 6000000 对应的 echo "$url"

?c=3

 返回了一个文件, 很明显线索就在这里, 接下来我们访问一下这个文件

 

是一个登录界面, 盲猜存在SQL注入漏洞, 先给个true, 使SQL恒成立, 页面正常显示

再给个false, 使SQL恒不成立, 页面空显示 

 由以上结果可以确定存在SQL注入漏洞, 注入点为数值型注入, 页面有回显, 推荐使用联合注入

获取当前使用的数据库

 获取表

-1/**/union/**/select/**/group_concat(table_name)from/**/information_schema.`tables`/**/where/**/table_schema=database()

 获取字段

-1/**/union/**/select/**/group_concat(column_name)from/**/information_schema.`columns`/**/where/**/table_name='content'

获取数据

-1/**/union/**/select/**/group_concat(username,password)from/**/content

 ??? 一个秘密??? 不讲武德, 提示秘密里面有一个秘密( secret), 结合开头 switch循环页面中引入了一个 secret.php, 线索应该就在 secret.php 里面

 

先访问一下 secret.php 文件, 可以正常访问, 没有报404, 说明这个文件确实存在, 而且就在根目录下, apache的默认网站根路径是 /var/www/html, 我们试一下读这个文件的内容

 利用数据库的文件读写功能读取文件内容

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

 页面并没有反应, 用代理工具( BrupSuite)抓包试试

 

可以看到文件的内容, 里面并没有flag, 而是提供了一个新的线索, 接下来我们根据提示读取 /real_flag_is_here

 

 成功获取flag

 

 

以上是关于ctfshow-WEB-web14( 利用数据库读写功能读取网站敏感文件)的主要内容,如果未能解决你的问题,请参考以下文章

ctfshow-WEB-web11( 利用session绕过登录验证)

ctfshow-WEB-web7

读Java实战(第二版)笔记14_CompletableFuture及反应式编程背后的概念

利用gdal读高光谱图像数据问题(按像素读)?

2020-12-14:mysql中,可重复读是怎么实现的?

Go+ 读文件方法教程(4.14)