2015-04-29 21:25:45

[转]Wordpress < 4.1.2 存储型XSS分析与稳定POC

原文:http://www.leavesongs.com/HTML/wordpress-4-1-stored-xss.html Wordpress这个XSS实际上是很好用的,匿名用户即可发表并触发,这里给出简单的分析与稳定的好触发的POC。 其实漏洞的作者已经在文章(https://cedricvb.be/post/wordpress-stored-xss-vulnerability-4-1-2/)里说明了,但文章给的Payload不知道为何在我的测试wp中不能触发。 这个漏洞的原理很有意思,由MYSQL的一个特性导致,当我们将一个4字节的UTF8字符插入mysql时,mysql将会视之为utf8mb4编码,当将utf8mb4编码的字符插入到UTF8编码的列中,在非strict mode下就会造成一个截断。 截断的话,就能绕过很多富文本过滤器了。比如,插入两个评论“<img src=1”,和“onerror=alert(1)// ”,这二者都不会触发某些富文本过滤器(因为前者并不含有白名单外的属性,后者并不是一个标签),但两个评论如果存在于同一个页面,就会拼接成一个完整的HTML标签,触发onerror事件。 虽然wordpress并不是适用上述的方法,但研究者很快找到了新方法。在截断后,wordpress会将单引号转换成&#8220;,于是如果我们提交的评论是这样的

2015-04-29 13:46:22

[Zone-lijiejie]GitHack -- 一个git泄露利用脚本

原文:http://zone.wooyun.org/content/20082 当前大量开发人员使用git进行版本控制,对站点自动部署。  如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。 GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,还原重建工程源代码。 渗透测试人员、攻击者,可以进一步审计代码,挖掘:文件上传,SQL注射等安全漏洞。 脚本的工作原理 1. 解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 ) 2. 去.git/objects/ 文件夹下下载对应的文件 3. 使用zlib解压文件,按原始的目录结构写入源代码 它的优点 1. 速度快,默认20个工作线程 2. 尽量还原所有的源代码,缺失一部分文件不影响脚本工作 3. 脚本不需要执行额外的git命令,有python就够了 可能的改进 存在文件被gc打包到git\objects\pack的情况,稍后可测试下看能否直接获取并解压这个文件,还原源代码 用法示例: GitHack.py http://www.hoolai.com/.git/ 执行中截图: 执行结果: 获取代码:https://github.com/lijiejie/GitHack 参考资料: Git Index Formart 非常感谢 sbp 的 gin - a

2015-03-29 14:24:34

[转]Java开发者常犯的十个错误

这篇文章转自:http://www.cnblogs.com/liushaobo/p/4375493.html 翻译自:Top 10 Mistakes Java Developers Make 文章列出了Java开发者最常犯的是个错误。 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList,但这个ArrayList是Arrays的私有静态类,不是java.util.ArrayList。java.util.Arrays.ArrayList有set(), get(), contains()方法,但没有任何能增加元素的方法,所以它的大小是确定的。 为了创建一个真正的ArrayList,应该这样做: ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr)); ArrayList的构造函数能够接收一个Collection类型,而它也是java.util.Arrays.ArrayList的一个祖先类。 2.检查一个数组是否包含某个值 开发者经常这样做: Set<String> set =

2015-02-10 21:20:12

[zone]mysql 语法绕过一些WAF

转:mysql syntax bypass some WAF 一个小tips,twitter上看见的: 一句话: select{x table_name}from{x information_schema.tables} 测试: mysql> select{x table_name}from{x information_schema.tables}; +----------------------------------------------------+ | table_name | +----------------------------------------------------+ | CHARACTER_SETS | | COLLATIONS | | COLLATION_CHARACTER_SET_APPLICABILITY | | COLUMNS | | COLUMN_PRIVILEGES

2015-01-24 22:41:33

[zone]MySQL 在 LIMIT 条件后注入

FROM:http://zone.wooyun.org/content/18220 from:https://rateip.com/blog/sql-injections-in-mysql-limit-clause/ 此方法适用于MySQL 5.x中,在limit语句后面的注入 例如: SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT injection_point 上面的语句包含了ORDER BY,MySQL当中UNION语句不能在ORDER BY的后面,否则利用UNION很容易就可以读取数据了,看看在MySQL 5中的SELECT语法: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [WHERE where_c

2015-01-12 12:22:21

[转]推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置,所以维护起来相当困难。 Gradle:Gradle采用增量构建。Gradle通过Groovy编程而不是传统的XML声明进行配置。Gradle可以很好地配合Maven进行依赖管理,并且把Ant脚本当作头等公民。 字节码操作 编程操作Java字节码的函数库。 ASM:通用底层字节码操作及分析。 Javassist:尝试简化字节码编辑。 Byte Buddy:使用“流式API”进一步简化字节码生成。 代码分析 软件度量和质量评估工具。 Checkstyle:对编程规范和标准进行静态分析。 FindBugs:通过字节码静态分析找出潜在Bug。 PMD:对源代码中不良编程习惯进行分析。 SonarQube:通过插件集成其它分析组件,提供评估最终结果报告。 编译器 创建分析器、解释器和编译器的框架。 ANTLR:功能完备的自顶向下分析复杂框架。 JavaCC:相对ANTLR更具体,上手略为简单。支持语法语法超前预测(syntactic lookahead)。 持续集成 支持持续集成、测试和应用发布的工具。 Bamboo:Atlassian的持续集成(CI)解决方案,包含很多其它产品

2014-11-29 23:55:07

JTabbedPane 监听tab选中改变事件

利用的是javax.swing.event.ChangeListener,原文Listening for Selected Tab Changes。实现方式都是callback,不过在实际当中为了方便我选择了自己写callback。 import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JTabbedPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class TabSample { static void add(JTabbedPane tabbedPane, String label) { JButton button = new JButton(label); tabbedPane.addTab(label, button); } public static void main(String args[]) { JFrame frame = new JFrame("Tabbed Pane Sample"); frame.setDefaultCloseO

2014-11-24 11:21:14

[zone-phith0n]PHP 绕过Disable_functions执行命令

FROM:http://zone.wooyun.org/content/16631 先简单说一下php调用mail()函数的过程。 看到源码ext/mail.c 236行: char *sendmail_path = INI_STR("sendmail_path"); char *sendmail_cmd = NULL; 从INI中获得sendmail_path变量。我们看看php.ini里是怎么说明的: ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ;sendmail_path = 注释中可以看到,send_mail默认值为"sendmail -t -i". extra_cmd(用户传入的一些额外参数)存在的时候,调用spprintf将sendmail_path和extra_cmd组合成真正执行的命令行sendmail_cmd 。不存在则直接将sendmail_path赋值给sendmail_cmd 。 如下: if (!sendmail_path) { #if (defined PHP_WIN32 || defined NETWARE) /* handle old style win smt

2014-11-23 15:23:11

[转]Java的Unicode编码转化(多种情况处理方法)

转: [JDK自带了native2ascii,但是很多时候还是需要自己写程序去解析unicode编码问题,网上的decodeUnicode 这个方法实现有比较严重的解析问题实在是个大坑,转了作者的这篇文章希望大家不要再用decodeUnicode了, 还有就是使用别人代码之前毋必仔细尝试!] 原文:http://448230305.iteye.com/blog/2159336 Java的Unicode编码转化(多种情况处理方法) Java转unicode转中文的情况使用的场景很多,是一个很常见的需求,按理来说,这样的功能应该被java集成起来,不过很遗憾,java提供的方法很烂,很多时候我们需要自己去写。 好在这个需求的源代码网上很多,在查资料的过程中,我找到啦好几种,下面我将我找到的资料分享和我自己实现的方法提供给大家;希望大家能有个参考; 1、java中使用的是unicode编码,所以如果我们得到的本身就是一个unicode编码,那么我们可以直接print出来的就是中文: public static void main(String[] args){     String string= "\u9999\u714e\u9a6c\u9c9b\u9c7c\u7684\u535a\u5ba2";     System.out.println(string); }

2014-11-23 14:21:24

[iteye]每个Java开发者都应该知道的5个JDK工具

【编者按】JDK是Java语言的软件开发工具包,没有它就无法编译Java程序。目前,有许许多多的JDK工具呈现在大家面前,但最常用的莫过于java.exe、javac.exe、jar等。除了这几个,还有哪些呢?本文作者Joe拥有多年的Java开发经验,其在博客上分享了一篇文章:5 JDK Tools Every Java Developer Should Know,笔者对其进行了编译,以下为译文。 目前,有许多工具可以绑定到Java JDK上面,其中java.exe和javac.exe是每位Java工程师的必 备武器,与此同时,还有许多其它Java JDK工具呈现在大家眼前。大多数Java程序员都没有使用过这些工具,但如果使用,它们会让你的工作事半功倍。 在之前的教程中,我曾介绍过 这些工具。现在,我向大家介绍其中最重要的5个工具。 1.javap javap是一个Java类文件反汇编程序,可以查看Java编译器生成的字节码,是分析代码的一个好工具。让我们用javap来编译这段Hello World代码,再分解它。 public class HelloWorld { public static void main(String... args) { System.out.println("Hello World!");