buuctf刷题 [SUCTF 2019]EasySQL

打开靶场发现是一个sql注入题,尝试注入1、0、1'、1' #看输入什么内容有正确的回显,最后发现只有在输入1的情况下有正常的回显,输入0或其他字符都没有回显

尝试将1和or一起输入,构造万能密码,即1 or 1=1

应该是过滤了一些东西,这时我们就需要检查哪些关键字被过滤掉了,来判断此时应该使用什么注入方式

通过测试大概有以下关键字被过滤了:

|flag|unhex|xml|drop|create|insert|like|regexp|outfile|readfile|where|from|union|update|delete|if|sleep|extractvalue|updatexml|or|and|&|

报错注入,union联合注入,盲注皆不可行,发现;没有被过滤,所以我们尝试进行堆叠注入

爆库:

1; show databases;

爆表:

1;show tables;

看到表Flag,我们基本可以确定,flag在表Flag中。我们首先想到利用from来查询Flag,可是from关键字被过滤掉了,得像其他方法:

根据前面的回显:输入1到9返回Array ( [0] => 1(此处的1可能代表Ture)),输入0或字符没有回显,仅有的两种回显,可以判断出,后端应该使用的是逻辑或,即条件为真进行回显或条件不满足返回空白

补充:|| 或or 运算符讲解:

select command1 || command2

情况一:若command1为非0数字,则结果为1。

情况二:若command1为0或字母,command2为非0数字,则结果为1。

情况三:command1和command2都不为非0数字,则结果为0

通过以上分析,我们可以判断后端代码中存在或运算符,同时题目中还有这样的一句提示的话,需要你将flag交给它,它告诉你flag是不是真的,也就是说名后端的内容很有可能是||拼接:1、从网页获取的内容。2、真正的flag的内容

根据判断后端代码可能是这样:

$sql="select post['query'] || flag from Flag";

若输入*,1。那么sql语句就变成了 select *, 1 || flag from Flag,1||flag是个短路算法,直接输出1了,select * from Flag 通过查看表Flag中的所有数据可以 get到flag

爆字段:

*,1

### 不同操作系统上的SVN(Subversion)客户端和服务器安装 #### Windows平台上SVN的安装 对于Windows用户来说,VisualSVN Server提供了一个易于使用的Subversion(SVN)服务端解决方案[^2]。此工具开箱即用,并适合小型企业和大型企业使用。它不仅包含了所有标准的Subversion特性,而且还提供了额外的功能如图形化的用户权限管理和无需单独部署Apache HTTP服务器就能实现的Web界面管理等功能。 至于客户端方面,在Windows环境下通常推荐使用TortoiseSVN这一集成于资源管理器中的插件来简化命令行操作[^3]。其安装过程相对简单直观,下载对应版本后按照提示完成设置即可开始工作。 #### Linux/Unix类系统上SVN的安装 在Linux或其它基于Unix的操作系统中,可以通过包管理系统轻松获取并配置官方发布的Subversion程序: ```bash sudo apt-get update && sudo apt-get install subversion libapache2-mod-svn apache2-utils -y #适用于Debian及其衍生发行版 ``` 上述命令将会自动处理依赖关系并将必要的组件一并安装好;而对于RedHat系则可以采用yum或者dnf来进行相同目的的操作: ```bash sudo yum install mod_dav_svn subversion # 对应CentOS/RHEL7及更早版本 sudo dnf install mod_dav_svn subversion # 针对Fedora以及较新的RHEL/CentOS8+ ``` 这之后还需要进一步调整HTTPD(Web服务器)的相关参数以确保能够正常访问仓库数据。 #### macOS环境中SVN的安装 苹果公司的macOS自带了部分基础版本控制工具的支持,但对于最新稳定版的Subversion而言,则建议通过Homebrew这个第三方软件源来获得最新的发布版本: ```bash brew install subversion ``` 执行以上指令后便可以在终端里直接调用`svn`命令进行各种日常任务了。 为了使这些说明更加具体化,下面给出一段Python脚本用于展示如何利用subprocess模块调用外部进程从而实现自动化创建一个新的本地SVN库: ```python import subprocess def create_local_repo(repo_path): try: result = subprocess.run(['svnadmin', 'create', repo_path], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) print(f"Repository created successfully at {repo_path}") except Exception as e: print("Failed to create repository:", str(e)) if __name__ == "__main__": path_to_new_repo = "/path/to/new/repo" create_local_repo(path_to_new_repo) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值