insert注入的技巧在于如何在一个字段值内构造闭合. insert 报错注入 演示案例所用的表: MariaDB [mysql]> desc test; +--------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+----------+------+-----+---------+-------+ | id | int(10) | Y…
1.sql注入之报错注入 正常传参,返回页面正常: 加入'  返回页面报错,出现"zhangsan"' 报错注入使用的函数 在这里我们使用 select updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='test' limit 0,1)),0); 直接爆出person表 在浏览器中使用:http://127.0.0.1/disizhang/4.1.8…
题目地址:http://ctf5.shiyanbar.com/web/baocuo/index.php 先查看页面源码得到提示知道了后台执行的sql语句,很常规的查询 测试了一个报错函数发现如下回显,可见屏蔽了报错信息,也有可能是监测到了updatexml这个报错函数,于是先用burp来fuzzing测试一波,看看哪些关键字 被屏蔽了 burp抓包并send to intruder 分别对username和password进行fuzzing测试,这里演示username的,设置完后点击start…
SQL注入之盲注 实战过程中,大多情况下很少会有回显,这个时候就要去使用盲注技术 盲注,Blind SQL Injection,听这名字就感觉整个过程就是一个盲目的过程 当注入时,没有任何提示的时候,就改用上盲注 常见函数 ascii(str) str是一个字符串参数,返回值为其最左侧字符的ascii码.通过它,我们才能确定特定的字符. substr(str,start,len) 这个函数是取str中从下标start开始的,长度为len的字符串.通常在盲注中用于取出单个字符,交给ascii函数来…
盲注查询 盲注其实就是没有回显,不能直观地得到结果来调整注入数据,只能通过其他方式来得到是否注入成功,主要是利用了一些数据库内置函数来达到的 布尔盲注 布尔很明显Ture跟Fales,也就是说它只会根据你的注入信息返回Ture跟Fales 其实登录处的注入就是布尔型的,万能密码就是构造一个永真的查询,比如下面的 select user from test where passwd=‘{injuct}’: #构造永真,即令where的条件用于为真 select user from test whe…
看大佬们的文章看得我虎躯一震,精神抖擞,于是心血来潮,整理一下MySQL报错注入常见的手段和方法,再举几个例子 <代码审计:企业级Web代码安全架构>一书中介绍过报错注入十大方法,依次是: 1.floor() 如:select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a…
http://127.0.0.1/mutillidae/index.php?page=register.php 1.注册一个用户试一试,发现页面只提示用户注册成功信息,并五其它可回显信息,果断尝试盲注和报错 尝试布尔型盲注,并没有效果,,,试试时间型盲注,username处输入1'='1' and if(mid(version(),1,1)='5',sleep(5),1) and '1'='1 页面响应延迟,证明存在时间型盲注,,不想用ascii码二分法去猜解啦,直接用sqlmap跑就行啦, 2…
本文章主要涉及group by报错注入的原理讲解,如有错误,望指出.(附有目录,如需查看请点右下角) 一.下图为本次文章所使用到 user表,该表所在的数据库为 test 二.首先介绍一下本文章所使用的到的语法:(第5.6条必须看,这涉及到之后的原理讲解) 1.group by语句:用于结合合计函数,根据一个或多个列对结果集进行分组. 如下图: 2.rand()函数:用于产生一个0-1之间的随机数: 如下图: 注意: 当以某个整数值作为参数来调用的时候,rand() 会将该值作为随机数发生器的种…
0x00 背景 SQL注入长期位于OWASP TOP10 榜首,对Web 安全有着很大的影响,黑客们往往在注入过程中根据错误回显进行判断,但是现在非常多的Web程序没有正常的错误回显,这样就需要我们利用报错注入的方式来进行SQL注入了.这篇文章会讲解一下报错注入的产生原理和利用案例. 0x01 十种报错注入 这十种方式在这里不多讲了,详情移步https://www.cnblogs.com/wocalieshenmegui/p/5917967.html.平时我们最常用到的三种报错注入方式分别是:f…
在这一关卡我学到了 1.万能密码的构造,大概的去揣测正常的SQL语句是如何的. 2. 3. 00x1 SQL万能密码的构造 在登录框当中可以添加了一个单引号.报错信息如下所示: 据此报错,我们大概的可以猜测其网站的正常是SQL语句如下: $sql="select username,password from 表明 where username='$username' and password='$password' limit 0,1" 即使如此,那么来尝试将其闭合. 账号密码同时尝试…
目录 双查询报错注入原理探索 part 1 场景复现 part 2 形成原因 part 3 报错原理 part 4 探索小结 双查询报错注入原理探索 上一篇讲了双查询报错查询注入,后又参考了一些博客,今天来探究其原理 实际上该报错是由于rand(),count(),group by 三个语句联合使用造成的,缺一不可. 上一篇的地址:https://www.cnblogs.com/laoxiajiadeyun/p/10278512.html part 1 场景复现 首先我们新建一个数据库,并创建一…
sql注入--双查询报错注入 背景:在sqli-labs第五关时,即使sql语句构造成功页面也没有回显出我们需要的信息,看到了有使用双查询操作造成报错的方式获得数据库信息,于是研究了一下双查询的报错原理,总结了探索的过程,整理出此文希望可以帮到感兴趣的人. sqli-labs闯关游戏下载地址:https://github.com/Audi-1/sqli-labs 双查询报错注入 需用到四个函数和一个group by语句: group by ... --->分组语句 //将查询的结果分类汇总 ra…
作者:__LSA__ 0x00 概述 渗透的时候总会首先测试注入,sql注入可以说是web漏洞界的Boss了,稳居owasp第一位,普通的直接回显数据的注入现在几乎绝迹了,绝大多数都是盲注了,此文是盲注系列的第一篇,介绍盲注中的报错注入. 0×01 报错注入原理 其实报错注入有很多种,本文主要介绍几种常见的报错方法,有新姿势后续再更新. 1. Duplicate entry报错: 一句话概括就是多次查询插入重复键值导致count报错从而在报错信息中带入了敏感信息. 关键是查询时会建立临时表存储数…
打开题目看到提示 "do you know Vulcan Logic Dumper?" ,再查看源码看到"<!-- index.php.txt ?>",访问后发现一堆看不懂的东西 这肯定就是所谓的Vulcan Logic Dumper了,先了解下相关概念 PHP内核-Zend引擎:http://www.php.cn/php-weizijiaocheng-355597.html PHP中的opcode:https://blog.csdn.net/weiyu…
首先什么是SQL注入: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入有什么危害? 危害:数据泄露.脱库.篡改网站.破坏数据库.植入后门.getshell(获取网站权限) 为什么会有SQL注入漏洞? 后端代码在执行的过程将用户输入的数据也当做代码来执行,违背一个原则:代码和数据相分离(本质问题) 前段传递的数据可以随意控制,参数可控:后端对前段传递过来的数据没有过滤或者过滤不严谨,最终导致SQL注入(…
--志向和热爱是伟大行为的双翼. 昨天偷懒了没学什么东西,先自我反省一下 - -. 今天认真的学习了一下Mysql报错注入利用方法及原理,好久之前就像认真的学一下这个了,是在上海市大学生网络安全大赛中遇到的web100.当时懵逼状态,被学长提醒了一下才知道是Mysql报错注入,因为之前一直都没接触过,所以当时只是知道怎么用然后拿了flag.其实根本不知道什么原理怎么回事,直到今天才把一些常见的报错注入方法原理搞懂,所以写篇博客来加深记忆以便后期会议. 首先,SQL有一下几种: 1.UNION q…
打开靶机 payload 1 Union select count(*),concat((查询语句),0x26,floor(rand(0)*2))x from information_schema.columns group by x; payload拆分讲解 1 count():count()函数返回匹配指定条件的行数.count(*)函数返回表中的记录数 2 floor():floor:函数是用来向下取整呢个的,相当于去掉小数部分 3 rand():rand()是随机取(0,1)中的一个数,…
LESSON 5: 典型的布尔盲注. 盲注:sql注入过程中,sql语句的执行结果不回显到前端,这个时候就只能用一些别的方法进行判断或者尝试,这个判断或者尝试就叫做盲注.盲注又分为:1.基于布尔SQL盲注.2.基于时间的盲注.3.基于报错的盲注. 布尔盲注:一般适用于页面没有回显字段(不支持联合查询,即union select),且web页面返回True或者False,在lesson 5里就相当于回显 You are in ......(true)或者报错(false),利用枚举思想或者二分法来…
报错注入:extractvalue.updatexml报错原理 MySQL 5.1.5版本中添加了对XML文档进行查询和修改的两个函数:extractvalue.updatexml 名称 描述 ExtractValue() 使用XPath表示法从XML字符串中提取值 UpdateXML() 返回替换的XML片段 通过这两个函数可以完成报错注入 一.extractvalue函数 ExtractValue(xml_frag, xpath_expr) ExtractValue()接受两个字符串参数,一…
0x00:前言 sqli-libs第11关的报错注入,之前没有具体学习了解过,所以单独学习一下. 0x01:例子 uname=1&passwd=1' union select count(*),concat(0x3a,0x3a,(select group_concat(schema_name) from information_schema.schemata),0x3a,0x3a,floor(rand(0)*2))a from information_schema.schemata group…
1.floor()函数 报错原因是 报错的原因是因为rand()函数在查询的时候会执行一次,插入的时候还会执行一次.这就是整个语句报错的关键 前面说过floor(rand(0)*2) 前六位是0110110 group by x先建立一个空表,用于分组.然后进行分组查询,第一次rand()执行,查询的结果是0,因为是空表所以插入这条,而插入的时候rand()又执行了一次,所以表中的结果就是 第一次执行完,接着执行rand()的值为1,因为表中存在,所以加1,表中结果成为 到了第三次执行rand(…
本文转自:http://bbs.blackbap.org/forum.php?mod=viewthread&tid=6483&highlight=mysql%2B报错注入 用SQL注入获取数据库数据,利用的方法可以大致分为联合查询.报错.布尔盲注以及延时注入,通常这些方法都是基于SELECT查询语句中的SQL注射 点来实现的.如果涉及非SELECT查询的注入,我们通常用到的就是mysql注入查询 创建一个test表 USE test; CREATE TABLE test(num )); I…
目录 sqli-labs 5.6双查询报错注入通关 0x01 获取目标库名 0x02 获取库中表的数量 0x03 获取库中表名 0x04 获取目标表中的列数 0x05 获取目标表的列名 0x06 从列中获取用户名 0x07 获取对应的用户密码 0x08 过关小结 本文以sqli-labs第五第六关为例,详细原理见我上一篇文章 sqli-labs资源在这:https://github.com/Audi-1/sqli-labs --- sqli-labs 5.6双查询报错注入通关 这篇为了代码行语法…
0x01 知识点 mysql_pconnect(server,user,pwd,clientflag) mysql_pconnect() 函数打开一个到 MySQL 服务器的持久连接. mysql_pconnect() 和 mysql_connect() 非常相似,但有两个主要区别: 当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接. 其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备…
例子:www.kfgtfcj.gov.cn/lzygg/Zixun_show.aspx?id=1[1]首先爆版本:http://www.kfgtfcj.gov.cn/lzygg/Zixun_show.aspx?id=1 and @@version>0 原因:@@version是mssql 的全局变量,如果我们把它写成这样 and @@version>0 那个后面的mssql就会强行把@@version 强行转换成数字,但是失败,所以就会将数据库信息暴露出来同样:通过@@SERVERNAME:爆…
SQL各种参数类型下的注入测试 数字型-sqlilabs less2 前面文章已演示过 字符型-sqlilabs less1 前面文章已演示过 搜索型-自写测试 如: www.test.com/index.php?id=1 www.test.com/index.php?id=abc (搜索型,一般产生在网站的搜索框)http://www.test.com/search.php?q=1 区分参数类型的原因: 当参数类型为数字时,sql语句拼接可以不用引号或其他符号进行概括,而参数类型为字符串时,s…
Mysql报错注入原理分析(count().rand().group by) 0x00 疑问 一直在用mysql数据库报错注入方法,但为何会报错? 百度谷歌知乎了一番,发现大家都是把官网的结论发一下截图,然后执行sql语句证明一下结论,但是没有人去深入研究为什么rand不能和order by一起使用,也没彻底说明三者同时使用报错的原理. 0x01 位置问题? select count(*),(floor(rand(0)*2))x from information_schema.tables gr…
知识点: SQL注入中用到的Concat函数详解    http://www.sohu.com/a/219966085_689961 http分割注入 直接根据提示,提交post请求的用户名和密码 结果显示 换成 username=1'&password=1 就说我有sql语法错误,说明这题是要考虑sql注入的,然后然后用burpsuite检测许多sql相关的词,看哪些词被过滤了 bp爆破测试教程可以参考这一篇https://blog.csdn.net/weixin_38948797/artic…
0x00 前言 在oracle注入时候出现了数据库报错信息,可以优先选择报错注入,使用报错的方式将查询数据的结果带出到错误页面中. 使用报错注入需要使用类似 1=[报错语句],1>[报错语句],使用比较运算符,这样的方式进行报错注入(MYSQL仅使用函数报错即可),类似mssql报错注入的方式. 判断注入 http://www.jsporcle.com/news.jsp?id=1 and (select count (*) from user_tables)>0 -- http://www.j…