目录 分析 总结 分析 首先看一下控制器,功能是根据用户传来的id,修改对应用户的密码. 13行把用户传来的id参数送入where()作为SQL语句中的WHERE语句,将pwd参数送入save()作为UPDATE语句. 这里我们假设请求id参数为array("bind","aaa"),pwd参数为bbb. 其中11行12行的意思是获取id.pwd参数,并通过I函数进行过滤.我们跟进一下I() 可以看到,这里首先对参数进行htmlspecialchars过滤,然后在最…
分析 与上一个漏洞类似,这个也是前端可以传入一个数组变量,如['exp','123','123'],后端根据array[0]来将array[1]和array[2]直接拼接到SQL语句中. 由于TP只是框架,为了保证应用业务正常运行,不能为主应用做过多的安全防御(如转义.去除危险字符等). 上一个漏洞点存在于处理where语句的parseWhere()处,而这个点则在处理insert和set的data的parseData()处. 本文以insert为例,首先payload如下: http://12…
0x00 前言 这个洞,早在9月29号的时候我提交给先知,那时候tp还是5.1.25的版本,天还很蓝,我也还很年轻.时至今日这个洞依旧没有审核,而tp在这期间都已经更新到了5.1.29.在最近我去跟踪的时候,发现这个洞在5.1.26版本被修复了.好吧,既然修复了,那就公开吧,我博客也好久没有漏洞类文章了.所以说做人还是不能太向钱,有漏洞为什么不直接提给厂商呢?为什么不公开呢?是贪婪让我变得面目全非XD. 事先说明,这个洞其实很鸡肋. 0x01 漏洞详情 版本:5.1.25 影响方法:insert…
作者: 阮一峰 日期: 2011年6月30日 前几篇文章,我经常说Javascript的设计不够严谨,有很多失误. 今天的这一篇,前半部分就谈为什么会这样,后半部分将列举Javascript的10个设计缺陷. 我参考的文献主要是Douglas Crockford的专著<Javascript语言精粹>(JavaScript: The Good Parts)和Fredrik Holmström的文章<我对Javascript的抱怨>(My gripes with Javascript)…
1. 设计阶段过于仓促 Javascript的设计,其实只用了十天.而且,设计师是为了向公司交差,本人并不愿意这样设计(参见<Javascript诞生记>). 另一方面,这种语言的设计初衷,是为了解决一些简单的网页互动(比如,检查"用户名"是否填写),并没有考虑复杂应用的需要.设计者做梦也想不到,Javascript将来可以写出像Gmail这种极其庞大复杂的网页. 2. 没有先例 Javascript同时结合了函数式编程和面向对象编程的特点,这很可能是历史上的第一例.而且直…
前言: 昨天爆出了ThinkPHP5框架缺陷导致远程命令执行,大佬们都赶上潮流挖洞,小白还是默默学习一下这个漏洞 漏洞影响范围: Thinkphp 5.1.0 - 5.1.31 Thinkphp 5.0.5 - 5.0.23 漏洞产生原因: Thinkphp5.x版本(5.0.20)中没有对路由中的控制器进行严格过滤,在存在 admin,index 模块.没有开启强制路由的条件下(默认不开启),导致可以注入恶意代码利用反射类调用命名空间其他任意内置类,完成远程代码执行. 漏洞分析: 既然是没有正…
原文:thinkphp学习笔记5-模块化设计 1.模块结构 完整的ThinkPHP用用围绕模块/控制器/操作设计,并支持多个入口文件盒多级控制.ThinkPHP默认PATHINFO模式,如下: http://serverName/index.php(或者其他应用入口文件)/模块/控制器/操作/[参数名/参数值...] 应用:由同一个入口文件访问的项目称为一个应用,在完整版的代码中就是Application 模块:一个应用下面可以包含多个模块,每个模块对应独立的目录,在完整版的代码中有Admin,…
SSLv3存在严重设计缺陷漏洞(CVE-2014-3566) 1.引发问题的原因 SSLv3漏洞(CVE-2014-3566),该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均使用SSL3.0),便可以成功获取到传输数据(例如cookies).针对此漏洞,需要服务器端和客户端均停用SSLv3协议. 2.解决方法 临时解决办法:修改apache配置文件,使其不支持SSLv3协议:/etc/apache2/vhosts.d/00_defa…
很多经验告诉我们,在不大幅加电压超频的情况下,CPU很少会用坏.多数情况下电脑退役都是主板或其他部件故障,或是性能严重落后而不得不淘汰.但是如果CPU在制造阶段就存有缺陷的话,情况就不是这样了. 英特尔刚刚通过产品变更通知(PCN117143-00)承认Apollo Lake架构的低功耗处理器存在LPC.RTC及SD等信号的耐用性问题,在使用“数年”时间之后可能导致故障.LPC故障会导致电脑无法开机,SD信号故障将令读卡器无法工作. 英特尔将用F1步进的奔腾N3450.赛扬N3350.赛扬J34…
最近几天有点忙,所以我们今天来一篇短的,简单地介绍一下数据库设计中的一种模式——Soft Delete. 可以说,该模式毁誉参半,甚至有非常多的人认为该模式是一个Anti-Pattern.因此在本篇文章中,我们不仅仅会对该模式进行介绍,同时也会列出该模式可能导致的一系列问题,以帮助大家正确地决定是否使用该模式. Soft Delete简介 首先先来想一个需求,那就是对用户操作的回滚支持.例如我现在正在用Word编写这篇文章.当我执行了一个错误操作的时候,我仅仅需要键入Ctrl + Z就可以进行回…
title: alias导致virtualenv异常的分析和解法 toc: true comments: true date: 2016-06-27 23:40:56 tags: [OS X, ZSH, alias, virtualenv] category: OS X --- virtualenv 可以虚拟出一个独立的Python环境,在这个环境中安装的第三方库不会对系统中的Python产生影响.作为一个系统洁癖,我的系统中的Python环境只安装最主要的第三方库,我在开发Python项目的时…
类似以下提示: XXX.php中,对输入参数id未进行正确类型转义,导致整型注入的发生 解决办法: 找到对应文件:$id = $_GET['id']; 增加以下标红过滤: $id = $_GET['id']; $id = stripslashes($id); $id = mysql_real_escape_string($id); 更新代码后,在阿里云后台这条漏洞后面点“验证一下”,即可看到这条漏洞补上就没有了 处理方式是首先通过 stripslashes 函数删除变量中的反斜杠 \,再使用函数…
在CSDN中发现这篇文章,讲解的比较详细,所以在这里备份一个.原文链接:http://blog.csdn.net/breaksoftware/article/details/8167641 DllMain的相关特性 首先列出<DllMain中不当操作导致死锁问题的分析--进程对DllMain函数的调用规律的研究和分析>中论证的11个特性:  Dll的加载不会导致之前创建的线程调用其DllMain函数. 线程创建后会调用已经加载了的DLL的DllMain,且调用原因是DLL_THREAD_ATT…
由于物化视图定义为on commit导致update更新基表慢的解决方案 以下是模拟和解决测试过程: (模拟update慢的过程) 1.首先基于基表创建物化视图日志: create materialized view log on scott.emp with rowid; 2.首先基于scott用户下emp创建物化视图: create materialized view mv_emp REFRESH FAST on commit as select * from scott.emp; 3.通过…
一.mysql表结构中存在如下设计时 表结构中updated_time设计为ON UPDATE CURRENT_TIMESTAMP时,如下 `updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'; 二.使用过程的一个坑即存在的问题: 当update整个dao实体对象时,又没有将该对象中的updateTime字段设置为null或new date();…
用NHibernate,总感觉怪事多罗罗. 比如说,明明我们是在查询,却报错,刨根问底找到出错原因,竟然是因为执行了一些Update甚至Insert!老天,我们明明只是查询而已,什么时候有更新过数据?NHibernate,你是不是傻的? 但事实就是事实,它就是发生了,它就是报错了. 前几天,我再次遇到这个问题:查询导致Update. 我留意了一下代码,发现这个实体类有个对象首先从数据库中获取出来,这时候一切正常. 然后,对这个实体对象进行了一系列的赋值操作. 接着,代码又从数据库中获取一个该实体…
使用Django.core.cache操作Memcached导致性能不稳定的分析过程 最近测试一项目,用到了Nginx缓存服务,那可真是快啊!2Gb带宽都轻易耗尽. 不过Api接口无法简单使用Nginx缓存,使用Memcached作二级缓存.但发现性能非常之不稳定,最终发现问题出在Memcached上.大压力时Memcached无法连接,即使使用Telnet也连接超时/连接被拒绝. 与开发沟通后发现用的django.core.cache操作Memcached,于是要求使用其它库取代,选中pyth…
下面随笔将对Hi3559AV100外接UVC/MJPEG相机实现实时采图设计的关键点-VDEC_Send_Stream线程进行分析,一两个星期前我写了有三篇系列随笔,已经实现了项目功能,大家可以参考下面随笔: Hi3559AV100外接UVC/MJPEG相机实时采图设计(一):Linux USB摄像头驱动分析: https://www.cnblogs.com/iFrank/p/14399421.html Hi3559AV100外接UVC/MJPEG相机实时采图设计(二):V4L2接口的实现(以Y…
ref:https://www.seebug.org/vuldb/ssvid-96217 简要描述: 为准备乌云深圳沙龙,准备几个0day做案例. 官方承认这个问题,说明会发布补丁,但不愿承认这是个『漏洞』……不过也无所谓,反正是不是都没美刀~ 详细说明: CI在加载模板的时候,会调用 $this->load->view('template_name', $data); 内核中,查看view函数源码: /system/core/Loader.php public function view($…
目录 环境搭建 分析 参考 环境搭建 $ composer create-project topthink/think thinkphp-5.1.7 修改composer.json 5.1.* => 5.1.7 $ composer update 分析 这个注入点与5.0.15的注入点位置都在parseData里,都是在解析set-data时直接将用户完全控制的data拼接到SQL语句中. 下面来看漏洞点,首先根据Github的commit记录进行定位 可以看到这里直接删除了default语句块…
测试url: http://127.0.0.1/thinkphp/thinkphp_5.1.24/public/index.php/index/index/sqli2?id=2 控制器是获取id参数作为进行聚合查询的字段名,如下图所示 看一下存在漏洞的parseKey方法 可以看到,这里直接在$key的前后加上反引号就直接返回了.根据前面几个漏洞的分析我们可以知道parseKey是用来解析字段名的.对于insert和update之类的数据,程序一般是字段名固定,数据和where语句的等于号之后的…
我想成为Android卓越发展project联赛,不知道Android它如何设计规则,Android4.0谷歌公司的问世后Android一系列的设计原则,程序猿规范,不要盲目模仿IOS它的设计,由于Android 那是,Android ,不一样的烟火. 大多数开发者想要公布他们的应用程序在多个平台上. 可是请记住,不同的平台遵守不同的规则和约定.乔布斯仅仅有一个,而Android不是那一个. 完美设计决策将使用户感受到在Android平台上的非凡感官感受.差别于其它平台. 而"设计一次,到处通吃…
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79386769 wx_fmt=jpeg&wxfrom=5&wx_lazy=1" alt="640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1" />我们知道有问题.可是并不知道问题的具体情况.-- Peter Bright实用的原文链接请訪问文末的" 篇…
早期系统有个缺陷,调用js时少提交一个参数,导致该参数一直是undefined,但是不会引起bug. 对系统进行优化后,这个参数变成了必要的,然后代码一直会走else,undefined值明显不是一个合法值,却仍然走else,导致了奇怪的错误!…
首先纠正下,文章标题里的 “变量提升” 名词是随大流叫法,“变量提升” 改为 “标识符提升” 更准确.因为变量一般指使用 var 声明的标识符,JS 里使用 function 声明的标识符也存在提升(Hoisting). JS 存在变量提升,这个的设计其实是低劣的,或者是语言实现时的一个副作用.它允许变量不声明就可以访问,或声明在后使用在前.新手对于此则很迷惑,甚至许多使用JS多年老手也比较迷惑.但在 ES6 加入 let/const 后,变量Hoisting 就不存在了. 一. 变量未声明,直…
Unicode字符编码规范   http://www.aoxiang.org 2006-4-2 10:48:02Unicode是一种字符编码规范 . 先从ASCII说起.ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits) 因此,ASCII编码可以表示的最大字符数是256,其实英文字符并没有那么多,一般只用前128个(最高位为0),其中包括了控制字符.数字.大小写字母和其他一些符号 . 而最高位为1的另128个字符被成为“扩展ASCII”,一般用来存放英文的制…
当今使用easyUI的datagrid组件的时候,碰到了一些问题,记录下来以便下次高速解决. 需求是在一张表单里会关联有一个列表,能够增删查改 曾经没用easyUI的时候,这个增和改的页面我通常是用一个dialog来做.保存之后再ajax传到列表里通过hidden来进行提交. 当然如今我也能够这么做,可是我想换种方式,由于easyUI的datagrid提供了直接在datagrid上编辑的功能(Row Editing in DataGrid). 照着官网上的demo试了一下.也就是editor的应…
关于模型:跟上篇文章thinkphp的目录结构设计经验总结写控制器一个道理:为了尽量避免改动到框架: 首先我们是要有一个BaseModel.class.php作为我们的基础model: 我会在BaseModel中定义增删改的方法如下: <?php namespace Common\Model; use Think\Model; /** * 基础model */ class BaseModel extends Model{ /** * 添加数据 * @param array $data 数据 *…
#1对代码的完善的 出现打印代码处缺陷截图: 图片上可以看到,定义的request根本没有定义它就有了.这个是未定义的,会报错的,这本书印刷问题,这个就是个坑,我也是才发现.花了点时间脱坑. 现在发完整的代码: #coding:utf-8 #字典示例 people={ 'Jack':{ ', 'addr':'jiangsu' }, 'Lisa':{ ', 'addr':'nanjing' }, 'Lin':{ ', 'addr':'beijing' } } labels={ 'phone':'p…
这个类和方法,让人乍一读是读不明白的.不能通过方法名称明白其含义.所以它的方法名称设计是欠考虑. 应该类似于这样: public static class MyAutoResetEvent { public static AutoResetEvent StartBusy() { return new AutoResetEvent(false); } public static AutoResetEvent StartCompleted() { return new AutoResetEvent(…