1. SQL盲注.SQL注入   风险:可能会查看.修改或删除数据库条目和表.   原因:未对用户输入正确执行危险字符清理.   固定值:查看危险字符注入的可能解决方案. 2. pom.xml添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <op…
SQL盲注 [SQL注入介绍] SQL盲注:不显示数据库内建的报错信息[内建的报错信息帮助开发人员发现和修复问题],但由于报错信息中提供了关于系统的大量有用信息.当程序员隐藏了数据库内建报错信息,替换为通用的错误提示,SQL注入将无法依据报错信息判断注入语句的执行结果,即为盲注. 思路:既然无法基于报错信息判断结果,基于逻辑真假的不同结果来判断 a.  1' and 1=1--+ b.  1' and 1=2--+    [输入前真后假,无返回,页面没被执行] ###a与b比较,表明存在SQL注…
前言 好长时间没有写过东西了,不是不想写,仅仅只是是一直静不下心来写点东西.当然,拖了这么长的时间,也总该写点什么的.近期刚刚上手安全方面的东西,作为一个菜鸟,也本着学习的目的,就谈谈近期接触到的安全方面的问题吧. 背景 既然提到了背景,那我们就简单的带一下,近期互联网上爆出了各种惊人的事件.各种门.各种照的,归根结底,都是网络安全出的问题,有的是网络被别人监控了,广大群众的生活工作都处在人家的眼皮底下,一举一动都逃不出人家的"法眼":还有的是一些商家的server被黑,usernam…
前面的文章都是基于目标会返回错误信息的情况进行判断是否存在SQL注入 我们可以轻易根据数据库报错信息来猜测SQL语句和注入方式 如果程序员做得比较好,不显示错误信息,这种情况下得SQL注入称为SQL盲注 猜测是否存在SQL注入: 1' and 1=1 -- 如果正确返回ID为1的信息,那么可以猜测存在SQL注入漏洞 再输入: 1' and 1=2 -- 如果什么都不返回,到这里就可以确定存在SQL注入了 猜测查询的字段数: 1' order by 5 -- 发现什么都没有返回,说明该查询的字段少…
一.SQL盲注: 看不到回显的,无法从返回直接读取到数据库内容的对数据的猜解,属于盲注. 二.第一种--基于布尔类型的盲注: 这种很简单,最典型的例子,就是挖SQL注入的时候常用的: ''' http://www.localhost.com/sqlinjection?id=1'%20and%20'1'='1 http://www.localhost.com/sqlinjection?id=1'%20and%20'1'='2 ''' 实战时.前面一个判断是永真的时候,拼接一个判断,例如[subst…
一.首先输入1和-1 查看输入正确和不正确两种情况 二.三种注入POC LOW等级 ... where user_id =$id 输入      真  and  假 = 假 (1)...where user_id = 1 and 1=2 (2)...where user_id = 1' and '1'='2 (3)...where user_id = 1" and "1"="2 如果结果显示为  MISSING 则说明 假的数据(1=2)被注入进去 结果单引号的为假…
1 简介     1.1 普通SQL注入技术概述     目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述[1]:     (1) 脚本注入式的攻击     (2) 恶意用户输入用来影响被执行的SQL脚本 根据Chris Anley的定义[2], 当一个攻击者通过在查询语句中插入一系列的SQL语句来将数据写入到应用程序中,这种方法就可以定义成SQL注入.Stephen Kost[3]给出了这种攻击形式的另一个特征,“从一个数据库获得未经授权的访问和直接检索”,SQL注入攻…
关于web安全测试,目前主要有以下几种攻击方法: 1.XSS 2.SQL注入 3.跨目录访问 4.缓冲区溢出 5.cookies修改 6.Htth方法篡改(包括隐藏字段修改和参数修改) 7.CSRF 8.CRLF 9.命令行注入 今天主要讲下SQL盲注. 一.SQL 盲注.发现数据库错误模式.跨站点脚本编制 严重性: 高 类型: 应用程序级别测试 WASC威胁分类: 命令执行类型:SQL 注入 CVE 引用: 不适用 安全风险: 1.      可能会查看.修改或删除数据库条目和表   ---S…
SQL盲注工具BBQSQL   SQL注入是将SQL命令插入到表单.域名或者页面请求的内容中.在进行注入的时候,渗透测试人员可以根据网站反馈的信息,判断注入操作的结果,以决定后续操作.如果网站不反馈具体的错误信息,只给出的一个模糊的反馈,如输入数据有误或者空白页面.这种情况下的注入就被称为SQL盲注.   在SQL盲注中,渗透人员需要反复进行大量注入操作,每次都需要重复设置配置项,构建新的SQL语句等.这些操作极其消耗时间.为了避免这些重复操作,Kali Linux提供了一个SQL盲注工具BBQ…
首先观察这个web应用的功能,可以任意留言,也可以搜索留言,当然我还用cansina扫描过网站,查看过源码,抓包查看过header等.没发现其他提示的情况下断定这就是个sql注入,可能存在的注入点呢,就是留言时产生 insert into 注入,或者搜索时产生的 like '%xx%' 注入.经过多次尝试,发现留言板不存在注入点,注入点就在搜索功能中. 有过网站开发经验的应该很清楚搜索功能一般是这样实现的 select * from users where name like '%tom%';…
转:http://hi.baidu.com/duwang1104/item/65a6603056aee780c3cf2968 1 简介     1.1 普通SQL注入技术概述     目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述[1]:     (1) 脚本注入式的攻击     (2) 恶意用户输入用来影响被执行的SQL脚本 根据Chris Anley的定义[2], 当一个攻击者通过在查询语句中插入一系列的SQL语句来将数据写入到应用程序中,这种方法就可以定义成SQL…
Natas15: 源码如下 /* CREATE TABLE `users` ( `username` varchar(64) DEFAULT NULL, `password` varchar(64) DEFAULT NULL ); */ if(array_key_exists("username", $_REQUEST)) { $link = mysql_connect('localhost', 'natas15', '<censored>'); mysql_select_…
0x01 此漏洞是由于未将decode解码后的数据过滤,而直接带入SQL语句中,从而导致SQL盲注漏洞. 0x02 漏洞分析:此处复现为metinfo6.1.3版本,漏洞最初产生为:/app/system/user/web/register.class.php 94~107行: 可以看到此函数将 GET,POST,COOKIE,过来的数据经过decode解码后直接赋值给$username变量,然后将此变量带入get_user_valid()函数,跟进: 可以看到有将此可控变量引入get_user…
[转载]sql 盲注之正则表达式攻击 -----------------------------------------MYSQL 5+----------------------------------------- 我们都已经知道,在MYSQL 5+中 information_schema库中存储了所有的 库名,表明以及字段名信息.故攻击方式如下: 判断第一个表名的第一个字符是否是a-z中的字符,其中blind_sqli是假设已知的库名. 注:正则表达式中 ^[a-z] 表示字符串中开始字符…
本次实验还是使用sqli-labs环境.在开始SQL盲注之前首先学习一下盲注需要用到的基础语法. 1.left()函数:left(str,lenth)它返回具有指定长度的字符串的左边部分. left(a,b) 从左边截取a的b位 我们在命令行使用sqli-labs数据库实验一下,首先使用security数据库,然后对数据库名第一个字符进行查询,找到了第一个字母s 判断数据库第一位是否为s,加入判断语句=‘s’,看到结果返回1,说明当去数据库第一个字母为s *没有使用数据库时结果返回为空 2.re…
作者:__LSA__ 0x00 概述 渗透的时候总会首先测试注入,sql注入可以说是web漏洞界的Boss了,稳居owasp第一位,普通的直接回显数据的注入现在几乎绝迹了,绝大多数都是盲注了,此文是盲注系列的第一篇,介绍盲注中的报错注入. 0×01 报错注入原理 其实报错注入有很多种,本文主要介绍几种常见的报错方法,有新姿势后续再更新. 1. Duplicate entry报错: 一句话概括就是多次查询插入重复键值导致count报错从而在报错信息中带入了敏感信息. 关键是查询时会建立临时表存储数…
题目提示是报错注入,于是就用盲注技巧来注入. 这里注入时发现floor,extractvalue,updatexml被吃掉了,用exp可以注入成功.(记住大小写绕过等技巧) 1.爆库 ' or exp(~(select * from(select database())a))# 这里最后面的a处可为别的字母,且必须要有 可以看到库名为web1. 2,爆表 ' or exp(~(select * from(select group_concat(table_name) from informati…
pydictor,强大的密码生成工具,可以合并密码字典,词频统计,去重,枚举数字字典生成字典python3 pydictor.py -base d --len 4 4 生成纯数字4位密码python3 pydictor.py -base L --len 1 4 -o name.txt 生成1-4位纯字母字典,长度为1-4位,输出名字文件为 name.txtpython3 pydictor.py -extend F:\工具\pydictor\ex.txt --level 3 --len 3 10…
上一篇文章谈及了 dvwa 中的SQL注入攻击,而这篇和上一篇内容很像,都是关于SQL注入攻击.和上一篇相比,上一篇的注入成功就马上得到所有用户的信息,这部分页面上不会返回一些很明显的信息供你调试,就连是否注入成功也要自己判断的,因此叫盲注.更值得留意的是盲注的思路 (盲注就让我想起了...许昕,中国乒乓球国手+人民艺术家.然而他400°近视,日常带眼镜,打球反而不带,球感远超常人, 人称大蟒.世界第一盲打) 要盲注的页面往往是这样的 没有很具体的错误提示,只会提示用户存在还是不存在 所以有时候…
如果数据库运行返回结果时只反馈对错不会返回数据库当中的信息 此时可以采用逻辑判断是否正确的盲注来获取信息 盲注是不能通过直接显示的途径来获取数据库数据的方法 1.布尔盲注 2.时间盲注 3.报错型盲注 布尔盲注 某些查询是不需要返回结果的,金判断查询语句是否正确执行,所以其返回可以看做一个布尔值,正常显示为true,报错或是其他不正常显示为false. SELECT userid FROM member WHERE u_name=$name AND u_pass=$pass; 注入语句 name…
写在前面: 这篇文章主要写了一些加快盲注速度的技巧和盲注中比较精巧的语句,虽然注入并不是什么新技术了.但是数据库注入漏洞依然困扰着每一个安全厂商,也鞭策着每一个安全从业者不断前进. 正文: 首先来简单介绍一下盲注,盲注是不能通过直接显示的途径来获取数据库数据的方法.在盲注中,攻击者根据其返回页面的不同来判断信息(可能是页面内容的不同,也可以是响应时间不同).一般情况下,盲注可分为三类. Booleanbase Timebase Errorbase 其中第一类Boolean就是我们最常接触到的普通…
题目地址:http://ctf5.shiyanbar.com/basic/inject/ 首先当然是拿admin/admin来试试啊,多次测试发现,有两种错误提示 1.数据库连接失败! 2.登录失败,错误的用户名和密码 用户名为admin时都是提示"登录失败,错误的用户名和密码",而为其他任何字符串时都提示"数据库连接失败!",可以知道用户名存在注入,且这里为布尔盲注. 于是直接构造注入语句(表和列的信息都存在mysql的一个叫 information_schema…
Natas17: 源码如下 /* CREATE TABLE `users` ( `username` varchar(64) DEFAULT NULL, `password` varchar(64) DEFAULT NULL ); */ if(array_key_exists("username", $_REQUEST)) { $link = mysql_connect('localhost', 'natas17', '<censored>'); mysql_select_…
背景:遇到一个sql注入,数字型布尔盲注+waf(直接超时那种),只要能出用户名,数据库名即可. 解决办法: 因为可以只要能出user(),database()即可,所以用不着SELECT,那么问题就简单很多了. 我这里用的是mysql,https://dev.mysql.com/doc/refman/5.7/en/string-functions.html 直接去字符串函数里面找一些平时网上的生僻函数即可. 找到个LOCATE函数: LOCATE(substr,str), LOCATE(sub…
一般有多种减轻威胁的技巧: [1] 策略:库或框架 使用不允许此弱点出现的经过审核的库或框架,或提供更容易避免此弱点的构造. [2] 策略:参数化 如果可用,使用自动实施数据和代码之间的分离的结构化机制.这些机制也许能够自动提供相关引用.编码和验证,而不是依赖于开发者在生成输出的每一处提供此能力. [3] 策略:环境固化 使用完成必要任务所需的最低特权来运行代码. [4] 策略:输出编码 如果在有风险的情况下仍需要使用动态生成的查询字符串或命令,请对参数正确地加引号并将这些参数中的任何特殊字符转…
 盲注是因为数据库查询的结果不会直接显示在页面.只能通过构造查询语句查看反馈的结果真&假状态来判断信息.   实际注入手法和回显注入区别不大 下面只记录相关思路   select length('test'); 查看字符串长度 二分法判断数据库名字的长度 mysql> select length(database())>10; +-----------------------+ | length(database())>10 | +-----------------------+…
我们都已经知道,在MYSQL 5+中 information_schema库中存储了所有的 库名,表明以及字段名信息.故攻击方式如下: 1. 判断第一个表名的第一个字符是否是a-z中的字符,其中blind_sqli是假设已知的库名. 注:正则表达式中 ^[a-z] 表示字符串中开始字符是在 a-z范围内 index.php?id=1 and 1=(SELECT 1 FROM information_schema.tables WHERE TABLE_SCHEMA="blind_sqli"…
-----------------------------------------MYSQL 5+----------------------------------------- 我们都已经知道,在MYSQL 5+中 information_schema库中存储了所有的 库名,表明以及字段名信息.故攻击方式如下: 1. 判断第一个表名的第一个字符是否是a-z中的字符,其中blind_sqli是假设已知的库名. 注:正则表达式中 ^[a-z] 表示字符串中开始字符是在 a-z范围内 index.…
本次对时间型盲注进行学习,还是的使用sqli-labs环境. 首先看一下时间型盲注需要用到的: 1.if()函数   if(a,b,c) 如果a为真则执行b,否则执行c.如图,由于1=1为真所以执行第二个参数2: 而当1=11是结果为假,所以执行了第三个参数3: 2.sleep()      sleep函数可以让此语句运行N秒钟 可以看到这句代码执行了5秒钟 接下来查询1=1如果为真的话执行1,为假则执行5秒: 由于1=1为真所以执行查询1,用时0秒,几乎感觉不到延迟:1=2时,则执行第三个字段…