SQL注入进阶

绕过条件过滤

条件过滤,顾名思义就是黑名单机制,过滤掉符合条件的语句。因此我们要想办法绕过过滤,用其他方法来实现注入。

  • 过滤注释
    常见注释://, -- , /**/, #, --+, -- -, ;%00
    可以考虑尝试基于布尔方式注入
  • 过滤OR&AND-单引号
    无法使用布尔判断,此处可以使用代替的方法
    用&&替代and,||替代or
    ,尝试使用oorr去绕过
  • 过滤空格和注释--单引号
    sql语句中函数之间是要有空格的,如and union,但是函数和变量中可以去掉空格,如1 = 2 可以写成 1=2。
    代替空格

绕过UNION&SELECT过滤

union all select

绕过函数过滤

addslashes() 函数在指定的预定义字符前添加反斜杠。

  这些预定义字符是:单引号 (')、双引号 (")、反斜杠 (\)、NULL

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

  下列字符受影响:\x00、\n、\r、\、’、"、\x1a

浅析白盒审计中的字符编码及SQL注入
https://www.leavesongs.com/PENETRATION/mutibyte-sql-inject.html
遇到一个有趣的逻辑漏洞
https://www.leavesongs.com/PENETRATION/findpwd-funny-logic-vul.html


绕过伪静态

  伪静态:伪静态通俗点说就是假的静态页面,也就是通过各种技术手段,让动态页面的URL看上去和静态页面的一样。

  .htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。

  我们这里利用.htaccess文件,配置重写引擎,来实现伪静态的效果。

参考资料:
Htaccess:http://www.zzbaike.com/wiki/Htaccess
Apache/RewriteRule:http://www.zzbaike.com/wiki/Apache/RewriteRule


搜索型注入

搜索型注入,就是指注入点存在于搜索功能上,很多网站都有提供搜索功能,这里也可能存在注入的。

SELECT * FROM users WHERE id='$id'
SELECT * FROM users WHERE username like '%$uname%' order by id


is_numeric过滤

PHP常用的过滤类函数

  • 当php.ini配置文件开启了magic_quotes_runtime 和 magic_quotes_gpc时,PHP中的get_magic_quotes_gpc()和get_magic_quotes_runtime()函数就会自动的对指定范围内的数据进行转义。其中,magic_quotes_gpc主要作用于web客户端,简单的说主要是对_POST、$_COOKE中的数据进行过滤;magic_quotes_runtime主要是对文件中读取的数据或从数据库查询得到的数据进行过滤。
  • mysql_real_escape_string()、addslashes()可对数据中的 单引号、双引号进行转义,能够有效地防止大多数SQL注入攻击;mysql_real_escape_string()考虑了字符集,比addslashes()具有更高的安全性。当前的字符集是单字节的话,这两个函数作用相同,都可以起到转义过滤的作用,但是,随着UTF-8等字符集得到越来越广泛的使用,它们也逐渐不能满足要求了。
  • 此外,还用于过滤的还有字符串操作常用函数preg_match、strlen、strcmp、strtolower、bl2br(将换行符转换为HTML终止标记)、htmlentities、htmlspecialchars( 将特殊字符转换wieldHTML等价形式,且不解析格式)等,还有isset、is_numeric、empty等表单验证函数。
is_numeric()函数用于检测变量是否为数字或数字字符串
 如果将二进制或十六进制数据传递至is_numeric()函数,则也会返回为true,即被is_numeric()函数检测是数字

利用dns进行盲注

  • 直接cmd里ping某个域名进行测试

  • 在windows 下面,可以通过UNC 路径访问其他主机上的资源
    \servername\sharename


  • Mysql的load_file()函数同样可以像windows主机访问共享一样,来获取远程文件




参考文章

绕过WAF继续SQL注入常用方法 https://www.freebuf.com/articles/web/36683.html
tamper脚本编写:https://blog.csdn.net/qq_29277155/article/details/52266478
[MySQL数据库5.X版本基本手工注入总结] https://www.2cto.com/article/201208/151503.html?pavyra=d3nh03


部分汇总

你可能感兴趣的:(SQL注入进阶)