目录
一、sql注入
1、sql注入漏洞原理?危害?修复?步骤?
原理:由于后端代码没有做好过滤,导致了用户可以去拼接一些想执行的语句,从而进行利用。说白了就是开发者没有在网页传参点做好过滤,导致恶意sql语句拼接到数据库进行执行了嘛。
危害:获取网站服务器中的数据、网页篡改等。
修复:1、使用参数化查询:参数化查询可以将参数化的查询字符串发送到数据库,从而避免直接将用户输入与SQL语句结合,就减少了SQL注入的风险。 2、过滤和验证输入:对所有用户输入进行过滤和验证,确保数据符合预期格式,比如数字、日期这些信息等等。3、禁止动态拼接SQL语句。
sql注入步骤:判断注入点-->判断类型-->构造闭合-->获取数据库信息-->获取表名-->获取列名-->获取数据库字段名。
2、sql注入的分类?
①报错注入:
原理:报错注入就是利用了数据库的某些机制,人为的制造错误的条件,使得查询的结果能够出现在错误的信息中。
常用的函数(payload):
updatexml(对xml文档更新的操作):updatexml(XML_document,Xpath_string,new_value)
extractvalue(对xml文档进行查询的操作):它与updatexml 注入的原理一样的,也是利用了函数中第二个参数xpath_string的报错进行注入,只不过它只有两个参数,updatexml有三个参数。
floor():floor报错注入是利用数据库表主键不能重复的原理,使用group_by分组,产生主键冲突,导致报错。要保证floor报错注入,那么必须保证查询的表必须大于三条数据,并且mysql版本需满足大于5.0 小于8.x的条件。
exp():返回值e(自然对数的底)的x次方。 当输入x的值大于709就会出现数据过大溢出报错。此函数的报错注入利用条件是5.5版本 。
②盲注:
盲注原理:页面不会像报错注入那样直接将错误信息回显到用户端,只显示页面的状态。因此针对这种情况我们在注入时需要根据页面的状态或者回显时间来判断注入语句是否正确。
布尔盲注
布尔盲注原理:页面不会像报错注入那样直接将错误信息回显到用户端,只显示页面的状态。攻击者需要根据页面的回显状态来确定自己的攻击语句,进而得出数据库的存储信息。