Web安全渗透学习-过滤方法小白菜总结

小白菜过滤总结

  • SQL注入-绕过过滤
    • 总结
  • XSS攻击-绕过过滤
    • 总结

一名刚入门的小白,通过这些日子的学习和实践操作,发现在SQL注入或者XSS中会遇到许多的过滤情况,然后在这里就大致整理一下有关字符串过滤后的一些处理方法,肯定不是很准确的和完整的。并且很多是通过自己在互联网上查询并搜集然后进行实验的。绕WAF啥的我还一脸懵的。

SQL注入-绕过过滤

  • 1.过滤如and,or,union如果是被过滤为空了,可以考虑双写或者转换大小写尝试;如And、anandd等方式。其他字符串亦是如此。

    • and --> null
    • And --> and
    • anand --> and
  • 2.如果转换大小写和双写字符串也不能绕过过滤,可以尝试一下类似a%00nd是否能够绕过过滤。

    • And --> null
    • anand --> null
    • a%00nd --> and
  • 3.在注入过程中 (手工注入)如果到数据无法Dump的情况,可以尝试16进制或者ASCII码来对数据库名或者表名进行编译后再次尝试。

    • select * from table where user='admin'-->Error(错误)
    • select * from 7461626c65 where user=61646d696e-->Success(成功)
  • 4.空格过滤绕过的情况,可以使用特殊方法来测试是否能够绕过过滤。

    • /**/
      • select/**/user_name/**/from/**/user/**/where
    • 回车键(%0a)
      • select%0auser_name%0afrom%0auser%0awhere
    • 使用tab键
    • 两个空格
  • 5.等于符号(=)被过滤的情况,可以尝试如下方法进行测试。

    • <>:该符号在sql中是表示不等于的意思,所以双重否定表肯定,再加个!美滋滋
    • like:
      • id=1 --> id like 1
  • 6.引号(’’)被过滤

    • 使用十六进制绕过,因为使用16进制就不用输入引号(’’)
      • select table_name from information_schema.tables where table_schema='user'
        转换为16进制后如下
      • select table_name from information_schema.tables where table_name=75736572
    • 宽字节,中途有用到引号(’’)的情况就可是尝试使用以下字符进行替换测试。
      • %bf%27
      • %df%27
      • %aa%27

总结

  • 过滤特殊关键字可以考虑双写或者大小写尝试是否能够绕过。
  • 也可以使用一些特殊编码来进行绕过,如%00。通过特殊字符串与%00组合来实现或达到绕过的效果。
  • 有时候可以使用16进制来进行绕过,目前还不怎么明白,继续学习。
  • 使用宽字节绕过。

XSS攻击-绕过过滤

关于绕过XSS过滤的一些总结我是通过XSS练习靶场来总结的,从第一关到后面的关卡,涉及到的过滤或者方法基本也不一致,所以在这里大致记录一下,也理一下自己的思路。当然,方法肯定有多种,每个人思路不一样,对于我这种菜鸟,能写出来都不错了。还有就是这里面应该加图片的,可是,不能直接复制粘贴很难受,算了大致记录一下吧……
使用Burp抓包工具进行了抓包分析。

附练习靶场:http://xss.tesla-space.com/level1.php

  • 1.第一关:没有进行任何过滤,直接输入payload(使用google浏览器没有做出来)

    • 原始语句:level1.php?name=test
    • payload:
    • 替换之后:level1.php?name=
    • 解决思路:直接莽
  • 2.第二关:过滤了<>号并被编码,所以不能使用脚本,通过抓包转发payload。

    • 原始语句:
    • payload:"%20onclick="alert(1) %20表示空格
    • 替换之后:
    • 解决思路:不使用带有<>的payload。
  • 3.第三关:也是过滤了<>号并编码,和第二关一致,只是双引号换成了单引号,所以替换即可。

    • 原始语句:
    • payload:'%20onclick='alert(1)
    • 替换之后:
    • 解决思路:根据抓包情况来判断使用什么类型的payload,过滤了就不要使用那个类型的payload。
  • 4.第四关:<>被过滤为了空,额,通关方法和第二关一致。

    • 原始语句:
    • payload:"%20onclick="alert(1)
    • 替换之后:
    • 解决思路:还是根据过滤情况而定。
  • 5.第五关:过滤了特殊字符串,把script过滤成了scr_ipt,使用伪协议绕过.

    • 原始语句:
    • 正常情况:输入敏感关键字会被过滤为这个亚子。
    • payload:">

你可能感兴趣的:(学习)