0x01 背景 PHP程序员在开发过程中难免会使用一些字符替换函数(str_replace).反转义函数(stripslashes),但这些函数使用位置不当就会绕过全局的防护造成SQL注入漏洞. 0x03 漏洞分析 str_replace函数的错误使用 第一种情况是写程序时会使用str_replace函数将参数中的单引号.括号等字符替换为空,这样在一些双条件查询的情况就会引发注入问题.缺陷代码如下: <?phprequire_once('common.php');$conn = mysql_co…
0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.同上一篇,我们需要找一些编码解码的函数来绕过全局防护,本篇介绍base64decode()的情况.漏洞来源于乌云:http://www.wooyun.org/bugs/wooyun-2014-050338 0x02 环境搭建 看背景我们使用了低版本的easytalk程序,版本为X2.4①源码我打包了一份:htt…
0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.遇到这种情况我们就需要找一些编码解码的函数来绕过全局防护,这篇文章讲urldecode()的情况,同样大牛请自觉绕道~漏洞来源于乌云:http://www.wooyun.org/bugs/wooyun-2014-050338 0x02 环境搭建 看背景我们使用了低版本的easytalk程序,版本为X2.4①源码…
0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.二次注入也是一种比较常见的注入,它涉及到入库和出库.因为有全局转义所以入库的时候: Insert into table (username) values (‘hack\’’); 这样入库后转义符就会消失变成了hack’,这样如果hack’出库被带入查询的话就会成功的引入了单引号导致注入.漏洞来源于乌云:htt…
0x01 背景 首先我们了解下宽字节注入,宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而导致的注入漏洞.具体原理如下:1.正常情况下当GPC开启或使用addslashes函数过滤GET或POST提交的参数时,黑客使用的单引号 ‘ 就会被转义为: \’:2.但如果存在宽字节注入,我们输入%df%27时首先经过上面提到的单引号转义变成了%df%5c%27(%5c是反斜杠\),之后在数据库查询前由于使用了GBK多…
0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启,然后使用addlashes函数对单引号等特殊字符进行转义.但仅仅使用这样的防护是存在很多盲点的,接上篇http://www.cnbraid.com/2016/05/10/sql6/,这里介绍另外两种情况.盲点如下:①FILES注入,全局只转义掉GET.POST等传来的参数,遗漏了FILES:②变量覆盖,危险函数:extract().parse_str().$$. 0x02 漏洞分析 FILES注入 FILES注入一般情…
0x01 背景 现在的WEB应用对SQL注入的防护基本都是判断GPC是否开启,然后使用addlashes函数对单引号等特殊字符进行转义.但仅仅使用这样的防护是存在很多盲点的,比如最经典的整型参数传递,也即被带入数据库查询的参数是整型.数组中的key没过滤被带入了查询以及全局过滤了GET.POST但没过滤SERVER或COOKIE引发的注入.所以看似有全局防护,实则隐藏了很多“后门”-盲点如下:①注入点类似id=1这种整型的参数就会完全无视GPC的过滤:②注入点包含键值对的,那么这里只检测了val…
0x01 背景 首先恭喜Seay法师的力作<代码审计:企业级web代码安全架构>,读了两天后深有感触.想了想自己也做审计有2年了,决定写个PHP代码审计实例教程的系列,希望能够帮助到新人更好的了解这一领域,同时也作为自己的一种沉淀.大牛请自觉绕道~ 0x02 环境搭建 PHP+MySql的集成环境特别多,像PhpStudy.Wamp和Lamp等下一步下一步点下去就成功安装了,网上搜索一下很多就不赘述.这里提的环境是SQLol,它是一个可配置的SQL注入测试平台,包含了简单的SQL注入测试环境,…
0x01 背景 首先恭喜Seay法师的力作<代码审计:企业级web代码安全架构>,读了两天后深有感触.想了想自己也做审计有2年了,决定写个PHP代码审计实例教程的系列,希望能够帮助到新人更好的了解这一领域,同时也作为自己的一种沉淀.大牛请自觉绕道~ 0x02 环境搭建 PHP+MySql的集成环境特别多,像PhpStudy.Wamp和Lamp等下一步下一步点下去就成功安装了,网上搜索一下很多就不赘述.这里提的环境是SQLol,它是一个可配置的SQL注入测试平台,包含了简单的SQL注入测试环境,…
ASP注入漏洞 一.SQL注入的原因 按照参数形式:数字型/字符型/搜索型 1.数字型sql查询 sql注入原因: ID=49 这类注入的参数是数字型,SQL语句原貌大致如下: id=request.querystring("id") sql="select * from 表名l where 字段= "&id sql注入产生,sql闭合 注入的参数为 ID=49 And [查询条件],即是生成语句: sql="Select * from 表名 wh…
什么是SQL注入攻击? 它是在执行SQL查询的时候,由于接收了用户的非法参数从而导致,所执行的SQL语义与业务逻辑原本所要查询的语义不相符,从而实现的攻击. 例如我们经常使用的用户登录,通常会出现这样的表单: 用户名:________________ 密   码:________________ 登录 正常情况下,我们需要让用户填写他们自己的用户名和密码之后,程序会接收用户输入的参数 执行查询操作,然后根据查询结果,判断用户是否能够登录. 但是,如果程序员在编写SQL查询操作时候,没有注意SQL…
一.什么是sql注入: 简单来说,当我们从前端的用户表单数据往后台数据库传输时,可能用户表单数据中的某些数据,会跟我们的后台发生“有机”反应,从而导致发生一些数据库的异常操作. 举个例子吧,以简单的用户登录注册来说.前端传递过来的字符串是.$usename=$_POST['usename],$password=$_POST['password']. 当我们构造sql语句时,我们采用的语句时.$sql="select * from tb_use where usename='$usename' a…
substring_index(USER(),"@",l)-- #是将查询出来的结果进行切分,以@符号的方式切分 ’ union select table_name,table_schema from information_schema.tables-- + #查询数据库中所有的库表 查询所有数据库,数据表: http://192.168.100.129/dvwa/vulnerabilities/sqli/ ?id='+union+select+table_name,table_sc…
SQL注入漏洞 SQL注入经常出现在登陆页面.和获取HTTP头(user-agent/client-ip等).订单处理等地方,因为这几个地方是业务相对复杂的,登陆页面的注入现在来说大多数是发生在HTTP头里面的client-ip和x-forward-for. 1.普通注入 普通注入是指最容易利用的SQL注入漏洞,比如直接通过注入union查询就可以查询数据库,一般的SQL注入工具也能够非常好地利用.普通注入有int型和string型 测试环境搭建: 数据库名为test  数据库表名userinf…
0x01 背景          最近在学习PHP代码审计,这里做一个SQL注入总结,是对自己学习知识的总结,也是为自己学习的笔记,方便自己反复翻阅. 0x02 PHP代码审计-SQL注入 挖掘SQL注入漏洞的时候,最简单也最容易被发现的就是什么都没过滤的情况. 代码示例 <?php                                                                                                           …
0x00 背景 SQL注入是一种常见Web漏洞,所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.本文以代码审计的形式研究SQL注入原理.挖掘形式.防御方案及缺陷. 0x01 SQL注入产生原理 SQL注入与其他常见Web漏洞一样,均是由外部可控的参数引起的.由于程序没有经过任何过滤就将外部可控的参数拼接进入SQL语句,直接放入数据库执行,达到了欺骗服务器执行黑客恶意SQL命令的目的.在这里我们采用DVWA中low级…
挖掘经验:sql注入经常出现在登录界面.获取HTTP请求头.订单处理等地方.而登录界面的注入现在来说大多是发生在HTTP头里面的client-ip和x-forward-for,一般用来记录登录的ip地址.   普通注入: 这里说的普通注入是指最容易利用的sql注入漏洞,比如通过注入union查询就可以查询数据库.源码如下: <?php $con=mysqli_connect("localhost","root","123456","…
0x00概况说明 0x01报错注入及利用 环境说明 kali LAMP 0x0a 核心代码 现在注入的主要原因是程序员在写sql语句的时候还是通过最原始的语句拼接来完成,另外SQL语句有Select.Insert.Update和Delete四种类型,注入也是对这四种基本操作的拼接产生的.接下来笔者将以Select为例引导新手初步了解SQL注入.Select是数据库的查询操作,所以常常出现在像文章查看和搜索这些地方,缺陷代码如下: <?php $conn = mysql_connect('loca…
做个笔记吧,某SQL注入点的绕过,有阿里云waf的. 首先遇到是个搜索框的注入点: 演示下: 针对搜索框,我们的sql语句一般是怎么写的? 本地演示:select * from product where pname like '%华为%' 我们如何进行注入判断? select * from product where pname like '%华为%' and 1=1 and '%%'='%%' select * from product where pname like '%华为%' and…
注入攻击的本质:web应用程序没有过滤用户输入或过滤不严谨,直接把用户输入的恶意数据当做代码执行 两个条件: 1.用户能够控制输入 2.原本程序要执行的代码,拼接了用户输入的数据 注入类型 SQL注入 把SQL命令插入到web表单的输入域或页面请求的查询字符串,欺骗数据库服务器执行恶意的SQL命令 命令注入 后端未过滤掉恶意数据,代码当做系统命令执行 代码注入 文件包含 反序列化漏洞 LDAP注入 XML注入 XXE:引用外部实体时,构造恶意内容,导致读取任意文件,执行系统命令,探测内网端口,攻…
SQL注入是当前针对数据库安全进行外部攻击的一种常见手段.现有主流应用大多基于B/S架构开发,SQL注入的攻击方式正是利用web层和通讯层的缺陷对数据库进行外部恶意攻击.将SQL命令巧妙的插入通讯的交互过程中,如:Web表单的递交.域名输入.页面请求等.通过硬性植入的查询语句攻击数据库,以期利用服务器自身缺陷执行恶意的SQL命令,从而入侵数据库.因此通过SQL注入攻击方式产生的安全事件也在增多,对系统的危害性极大. 通过SQL注入可以远程获取并利用应用里的数据,并且获取未经hashed加密的用户…
不过是java开发还是C#开发或者PHP的开发中,都需要关注SQL注入攻击的安全性问题,为了保证客户端提交过来的数据不会产生SQL注入的风险,我们需要对接收的数据进行危险字符过滤来防范SQL注入攻击的危险,以下是C#防止SQL注入攻击的一个危险字符过滤函数,过滤掉相应的数据库关键字. 主要过滤两类字符:(1)一些SQL中的标点符号,如@,*以及单引号等等:(2)过滤数据库关键字select.insert.delete from.drop table.truncate.mid.delete.upd…
作者:Arizona 原文来自:https://bbs.ichunqiu.com/thread-43169-1-1.html 0×00 ~ 介绍 SQL注入毫无疑问是最危险的Web漏洞之一,因为我们将所有信息都存储在数据库中.其解决方案之一,有许多公司实施Web应用程序防火墙和入侵检测/预防系统来试图保护自己.但不幸的是,这些对策往往是不充分的,并且很容易被绕过. 尽管不能依赖防火墙来防止所有SQL注入,但一些防火墙在作为监视工具时也会很有效.由于目标存在防火墙,在攻击过程中会检测到攻击者并阻止…
程序简介 超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入. 超级SQL注入工具目前支持Bool型盲注.错误显示注入.Union注入,支持Access.MySQL5以上版本.SQLServer.Oracle等数据库. 超级SQL注入工具采用C#开发,底层采用Socket发包进行HTTP交互,极大的提升了发包效率,相比C#自带的HttpWebRequest速度提…
docker下载dvwa镜像,报错型注入dvwa,low级 一,安装并配置docker 1,更新源,apt-get update && apt-get upgrade && apt-get clean 2,安装docker,apt-get install docker.io 3, 配置docker加速器,vim /etc/docker/daemon.json { "registry-mirrors": [ "https://dockerhub.…
结果   填坑失败,并没有看懂是如何检测sql攻击的. 只能说的是: 建议都使用参数化传递sql语句参数.(所以,用hibernate.mybatis等框架的真不用太担心sql攻击问题.) 前言 本文主要是为了填坑:[spring]jdbcTemplate之sql参数注入 在上文中的demo是: 正确sql: select c.child_id childId,c.child_name,c.child_age childAge,c.parent_id parentId from child c…
代码审计教学计划: 审计项目漏洞Demo->审计思路->完整源码框架->验证并利用漏洞 代码审计教学内容: PHP,JAVA网站应用,引入框架类开发源码,相关审计工具及插件使用 代码审计必备知识点: 环境安装搭建使用,相关工具插件安装使用,掌握前期各种漏洞原理及利用 代码审计开始前准备: 审计目标的程序名,版本,当前环境(系统,中间件,脚本语言等信息),各种插件等 代码审计挖掘漏洞根本: 可控变量及特定函数,不存在过滤或过滤不严谨存在绕过导致的安全漏洞 定点挖掘功能点: 挖掘文件上传,会…
sql注入是web安全中最常见,也是平常中危害最大的漏洞. 最近在学习代码审计,拿自己审核的一段代码做个笔记. 1.sql语句拼接可能引起sql注入 很多偷懒的程序员对于没有过滤的参数,直接将其拼接到sql语句中,可能导致命令执行. 如:$sql = "select count(*) as qty from t_user where f_uid='"+$userAccount+"' and f_password='"+$password+"'";…
Preface 这是一篇纪录关于BlueCMSv1.6 sp1两个SQL注入的审计过程,原文来自代码审计之SQL注入:BlueCMSv1.6 sp1 ,主要纪录一下个人在参考博文复现这两个漏洞经过. 参看视频:BlueCMS 1.6 SQL 注入漏洞 工具及环境 bluecms v2.1 sp1 链接:http://pan.baidu.com/s/1dFKLanR 密码:8v1c seay审计系统 链接:http://pan.baidu.com/s/1dENS4KT 密码:rszt 环境 PHP…
近期有很多小伙伴在后台留言想看关于代码审计的文章,其实有关审计的文章网上资源是比较多的,但是从代码审计开始到结束的这类文章却少之甚少. 今天要讲解的ZZZPHP1.61这套审计漏洞比较多,SQL注入漏洞.任意文件删除漏洞.任意文件读取漏洞.远程执行漏洞,当中也借助了漏扫工具,内容涵盖全面,分析透彻,学完定会受益匪浅! 注:文章还是原来的方式,先复现后分析,阅读用时约7分钟. SQL注入漏洞(获取管理员密码) 漏洞复现 payload: GET /search/ HTTP/1.1 Host: 12…