换一个思路想,条件为真,页面不变,条件为假,页面无数据,如果我们进行这样的判断 .php?id=1 and [假设我们不知道这里的参数,但是a-e中的一个]=[a,b,c,d,e] ,结果必然是只有一次尝试页面是正常的,我们就可以判断出是哪个字母
为什么这里可以用sqlmap扫出来,而我遇到的不行,我们遇到的大部分查询都是类似这样的,select * from xxx where xxx=xxx and xxx=xxx , 其中的参数的and是不会自动添加的,sqlmap就会对参数进行一一的尝试,类似=1 and 1=1 , 的过程,但是上面的数据包格式中貌似是会自动添加参数的,而且还有一定的格式
我使用第一个举例子:
转换为sql语句: select * from xxx where test.test=test(字符串类型) and test.test_test=1(整数型)
如果添加payload为:test=1 and 1=1 一定会报错(我的理解就是系统会找&和=符号进行分割,遇到&添加and,遇到=认为前面为参数,后面参数值)
所以要添加,%40int=&q%40let%401=1 %40int=&q%40let%401=2
变形后就是test=1 and 1=1 test=1 and 1=2 到这里就可以是用盲注了;
至于添加or怎么添加:%40int=&q%40let%401%3d1%20or%201=1 -》 test=1 and 1=1 or 1=1