[网鼎杯 2018]Comment
Posted wanghaoran-s1mple
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[网鼎杯 2018]Comment相关的知识,希望对你有一定的参考价值。
[网鼎杯 2018]Comment ----solved by s1mple
不经一番寒彻骨,怎得梅花扑鼻香。
若教眼底无离恨,不信人间有白头。
今天记录一个网鼎杯的一道题,这道题学到的还是挺多的;
知识点:二次注入,git泄露,git还原;
先来打开界面,扫后台,扫到.git;发现是源码泄露,然后用王一航大佬的githacker来下载源码,下载完以后,发现源码不全,进行恢复;
得到源码如下
我们可以看到,我们write进去的各种以post表单提交的数据都没有经过严格的过滤,就只有一个简单的转义,而且第二次我们看评论的时候,服务器对我们输入的内容也没经过再次严格的过滤,所以我们就可以注入,然后再查看评论,最后得到sql注入的效果。
这里有一个问题,我们看到我们输入的各种内容,它是以换行的形式存在的,这里我们了解 # 只可以注释单行,那么这里我们可以使用/**/进行多行注释,这里理解是有两张表,我把他们叫做A B 我们现在A中写入数据,然后进去放问详情的时候加以评论,这时候我们的B表直接读取A表中的数据,也就是可以在B表中向A表写入的数据进行改变。和修改(增加)
爆破得到登陆账号密码位zhangwei zhangwei666
我们这里用load_file进行目录的遍历读取,我们构造payload:
在category下输入123‘,content=user(),/** 然后我们再次查看详情的时候有一个评论,我们在评论之中写入 */# 这样我们就进行了闭合,形成了/**/所以就达到了多行注释的效果,
首先读取一下passwd
123‘,content=(select load_file(‘/etc/passwd‘)),/* 评论中加入/*#,就可以起到闭合,进而读取文件;
我们读取目录看到最后一行,得到了www的用户目录,我们继续读取隐藏的文件,.bash_history
很明显,这个文档记录了bash命令的历史记录,我们从这里看到;
先在/tmp下解压html压缩包
? 删除html压缩包,
? 将html copy 到var/www/目录下,
? 进入/var/www/html目录之下,
? 删除.Ds_Store.
但是这里我们发现一个问题,他没有删除/tmp/html目录下的.Ds_Store文件,所以我们可以尝试i读取,(信息泄露)
123‘,content=(select load_file(‘/tmp/html/.Ds_Store‘)),/* 评论*/#
,这里看到无法全部读取 所以我们用hex(十六)进制进行输出;123‘,content=(select hex( load_file(‘/tmp/html/.Ds_Store‘))),/* 评论*/#
得到的十六进制随便转化就可以得到我们想要的,最后我们发现有一个flag_8946e1ff1ee3e40f.php 我们进行读取,
123‘,content=(select hex(load_file(‘/var/www/html/flag_8946e1ff1ee3e40f.php‘))),/* 评论*/#
得到的进行转化,就可以得到flag 美滋滋~~~~~
以上是关于[网鼎杯 2018]Comment的主要内容,如果未能解决你的问题,请参考以下文章