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

举报
士别三日wyx 发表于 2021/12/23 01:44:08 2021/12/23
【摘要】 ctf.show WEB模块第14关是一个SQL注入漏洞, 绕过switch循环后可以拿到一个登录界面, 登录界面存在SQL注入, 脱库以后会提示flag在另一个文件中, 利用数据库的文件读写功能读取文件内容即可拿到flag   开局是一个switch循环, 需要传递参数 c, 参数对应的执行结果有四种: '...

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

 

 

文章来源: blog.csdn.net,作者:士别三日wyx,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/wangyuxiang946/article/details/120168557

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。