第二题WP:mysql _filter

这边继续带来一道有关于sql注入的题目,这道题目的提示是存在两个过滤,一个点名了是select,另一个需要自己去发现,贴上原题目

看到这个直接点明是sql注入中的GET方法,要传入一个id的值

第一步:判断注入类型,运用and 1=1 和and 1=2来判断

回显都为id=1的值的数据,由此判断这个注入类型是字符型注入

第二步:判断payload的闭合字符

第一种方法:运用转义字符\来查看闭合字符,原理是当闭合字符遇到转义字符时,会被转义,那么没有闭合符的语句就不完整了,就会报错,通过报错信息我们就可以推断出闭合符 

这边可以看到\后有‘)',而我们所需要的就只有‘),因为最后一个’是这个服务器去添加的,用来跟前面的服务器语句去闭合用的,接着就需要在id=1后加上‘)进行闭合

第二种方法:继续通过注入id=1’和id=1‘’

(1)如果单引号报错,而双引号不报错

继续注入id=1' --+ 

无报错的话判断闭合符为:单引号闭合

报错的话判断闭合符可能为:单引号加括号

(2)如果单引号不报错,而双引号报错

继续注入id=1’‘ --+

无报错的话判断闭合符为:双引号闭合

报错的话判断闭合符可能为:双引号加括号

但是这道题目中经过多次尝试,应该是对--+和#进行了过滤,导致第二种方法不能够进行判断

不过也可以一个一个的去尝试,最终也能得出结果

例如:id=1’ or ‘1’=‘1  是判断单引号闭合                id=1’) or ('1')=('1  是判断单引号加括号闭合

其他的类型也可以进行类似的构造,这边不再一个一个举例了

第三步:查找注入点(这边的select运用的双写绕过过滤的方法)

由此得出111,222位置都是注入点,这道题目与第一道不同的是这个数据库的字段数已经给出来了,有三行的数据,所以就不用order by 函数去查找列数了

第四步:查找数据库名

由此得出库名是test

第五步:查找数据表名

得到两个表名,容易知道答案flag是在flag这个表中

第六步:获取flag

由此得到flag

拓展:

在写第一题的WP时将from语句放在了三个回显位的后面,所以导致在这道题目做的时候出现了一系列的原因,这边要注意这个from的语句要紧贴这个注入点的回显位,不然会导致出错

本道题目给我带来的启发还是比较大的,也是一个在成长的过程吧,希望各位大佬能够多多理解,有不严谨和错误的地方多多体谅,也欢迎指出来

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值