包含标签 互联网 的文章

burpsuite抓包https

最近工作需要,需要burpsuite抓下https的包 burpsuite抓包https的时候,如果是https协议,火狐会不信任证书   这个时候点击我已充分了解可能的风险,然后添加例外,弹出图中的对话框 点击查看,进入证书管理企业免,选择图中的PortSwigger CA根证书,选择导出,保存一下这个证书 然后打开火狐的选项,进入高级->证书->查看证书->证书机构->导入,选择刚才的证书 ,最后,记住选中信任此CA证书标识的网站,ok 现在再抓包,可以看到https也抓到了。  ……

阅读全文

[藏]深入理解Java内存模型

深入理解java内存模型(一)——基础 深入理解java内存模型(二)——重排序 深入理解java内存模型(三)——顺序一致性 深入理解java内存模型(四)——volatile 深入理解java内存模型(五)——锁 深入理解java内存模型(六)——final 深入理解java内存模型(七)——总结 ……

阅读全文

[藏]隐藏在PNG图像元数据中的新iFrame注入攻击

这个攻击方式很旧了,但手法相当不错,来自乐嵌网 我们一直在努力保持领先的最新趋势,今天我们发现了一个非常有趣的事,这或者是我们之前没有发现,或者是刚发生的。 我们只能说这是新发现的。  我们都了解的iFrame注入攻击,对吧?  了解一个iFrame注入 今天的iFrame 是非常标准的HTML标记,它是在自己网页中嵌入其他网站内容的简单方式。 被几乎所有的浏览器支持和百万计的网站使用,使用AdSense吗? 那么你的网站中就有一个iFrame。 我知道这东西很好,然而总是福祸相惜。 今天的攻击,特别是当我们谈论路过式下载,首选是利用IFRAME标记。 它简单方便,只需简单的属性修改,攻击者可以稳妥的从另一个站点嵌入代码,并通过客户的浏览器不知不觉的加载。  像这样:  攻击者通常从其他网站嵌入的恶意文件,通常是一个PHP文件或类似的形式。 当然,这并不是唯一的方法,但是是最普遍的。 从检测和修复的角度来看,这往往很容易修复。  新的iFrame注入法 然而今天,我们发现一个有趣的iFrame注入类型。 它的特殊之处不是在iframe标签中嵌入的内容,而是它分发恶意软件的方式。 你会看到,攻击者将威胁隐藏在PNG文件中。 我几乎可以听到很多你的窃笑,PFF .. 这不是新的…. 但问题是在细节上我的朋友。  如下,iFrame加载了一个有效的文件,没有什么恶意,一个叫jquery.js的JavaScript文件。这一切看上去都很好。你要细细的找: 起初,很多人会说我们傻。 这些代码很好,没看见什么问题,对不对? 然后,我们注意到了这个小函数,loadFile()。 函数本身并不奇怪,但事实上,它是装载一个PNG-var strFile = ‘./dron.png。 你会被它惊讶良久,它才是一个真正的黑手。  自然,下一步就是好奇的打开dron.png文件。 会有什么可怕的事情发生吗?  噢,什么都没有,太无聊了,这纯粹是浪费时间。 但是,请等一下,我发现这里有个有趣的小循环。 嗯,这是确实挺奇怪的,这是一个解码循环。 为什么要一个循环的解码PNG文件呢?  作为一个优秀的研究人员,采取最简单的方式,我可以将它加载到简单的测试页上 并提取图像内容。搞定!  测试页上加载它之后这,我们获得了strData变量:  看到它在干嘛了吗? 它做了个iFrame注入,并把它嵌入到PNG的元数据中,像一个新的分配机制。  有两点需要特别注意了,它使用createElement做了一个iFrame标签**,**然后设置**elm.style.position.left 和 elm.style.position.top **属性的值为-1000px,把iframe放到可视区域之外。这些值都是负值,在浏览器中根本看不到。但是你知道谁能看到吗?只有浏览器和Google能看到。这就是下载驱动和搜索引擎感染(SEP)攻击的小伎俩。  最后我们在elm.src元素中发现了真正的威胁**。**  做的这么独特到底有什么用呢? 它尽力隐藏真正的威胁的水平是独特的。现在的杀毒软件不会解码图像元数据,直到JavaScript文件加载完毕就停止扫描。不会追踪cookie文件,对于攻击者来说,这太好了,使它们很难被发现。  记住一点,尽管我们这里谈论的是PNG文件,这些方法和概念也可以应用到其他类型图像中。重要的一点是:留意你的web 服务状态,了解哪些修改和未修改的文件并确保漏洞未被利用。  通常情况下,一些新的侦查和排障需要一定的时间。 现在我们的 网站恶意软件扫描器能发现它吗 ? 绝对可以!  不要笑了,朋友们! 原文:new-iframe-injections-leverage-png-image-metadata by Peter Gramantik……

阅读全文

[笔记]写代码遇到的一些问题汇总下

本篇是用来填上一篇 挖下的坑的。 1.java调用webservice 有一些已有的webservice服务,由xfire生成发布,有些有参数,有些无参数,无参数的直接我直接使用org.codehaus.xfire这个包里的Client来动态生成客户端。然后调用就可以了。非常简单 但对于有参的,且是服务器自定义的类作为参数的时候,实在是搞不定。。不管是把自定义的类放到本地,包名一致,在invoke的时候生成这个对象还是其他什么方法。都无法完成。 最终换了直接发送soap报文来完成。dirty hack啊。如果你有一些好的方法希望不吝赐教。 解决方案来源自stackoverflow,因为stackoverflow现在国内好像有时候打不开。因此把代码贴过来。有疑问的话留言讨论。 2.Access restriction on class due to restriction on required library rt.jar? 报错 总么都感觉是环境问题,系统bug。解决如下: 进入project properties的 Build Path 设置里. 移除 JRE System Library 再添加回来,方法是: 选择 “Add Library” ,然后选择 JRE System Library. 3.SSHManager类报错:com.jcraft.jsch.JSchException: UnknownHostKey 我使用的一个SSHManager类如下: 报这个错是因为 连接这段代码里少了config.put(“StrictHostKeyChecking”, “no”);这段设置,这个是去掉了严格的安全检查,一般只用于测试目的。 4.navicat连接oracle数据库 之前使用PL/SQL操作Oracle数据库,使用Heidisql操作mysql数据库。。切换麻烦。而且PL/SQL搜索的时候中文有问题。于是打算使用navicat统一管理 方法是: 1.首先下载Instant Client 的32位版本和Navicat Premium 2.然后解压Instant Client,配置navicat 选择oci文件即可 然后新建oracle配置,选择basic模式,其他的根据你的数据库信息自己填写即可。  5.HttpClient的logger日志实在太多了 大人,实在太多了。看不过来啊。附赠一篇log4j配置文件详解 在log4j.properties文件中添加如下配置信息 log4j.logger.httpclient.wire.header=INFO log4j.logger.httpclient.wire.content=INFO log4j.logger.org.apache.commons.httpclient = INFO 最后附赠一些实用的工具 http://www.freeformatter.com/ 程序员必备。各类转换,包括转义工具,格式校验工具。效果很好。 流体力学理论与F1赛车的空气动力学1,2,3 什么雷诺数,伯努利方程,文丘里效应,当年木有好好学啊。这么高大上的东西果然还是有压力。……

阅读全文

[笔记]写代码遇到的一些问题汇总上

今天大雪,天冷,不能出去玩了。把保存在pocket里的一些记录总结一下,太懒了。。下篇等我去了上海用我电脑写吧 1.java模拟https登陆 首先我要登陆,然后保存cookie,然后利用cookie来访问后续的网页,发包,处理包这样,然后,为了方便,我选择了 org.apache.http 这个库,典型的一个登陆场景应该是这样的,以后遇到问题一定先要去看官方的例子,别人给出的例子一般要么是不能用,要么是用的方法都是一些过时的,虽然能用,但看到警告还是不舒服。 但是,这个过程报了如下的错 google之,发现时访问https的原因。需要先安装对应站点的证书。这里要用到一个通用的java类,我贴下链接 编译这个工具类,然后执行java InstallCert <host>[:port] 会生成一个证书文件 然后在项目里通过 设置即可,你可以吧证书文件放到资源目录,就更好了。 2.java正则替换反斜线 我在某个地方需要把字符串里的所有反斜线替换成两个,我就写了 结果发现我还是too young,实际上, java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠 例如 要想替换成 必须这样替换: 原因如下: String 的 replaceAll() 方法,实际是采用正则表达式的规则去匹配的, \\ ,java解析为\交给正则表达式, 正则表达式再经过一次转换,把\转换成为\ 也就是java里面要用正则来表示一个. 必须写成4个\ 如果要表示\,那就要写8个\ 所以如果写成: str1 = str1.replaceAll("\", “\\"); 就会报正则表达式的错误。 3.httpClient如何模拟表单上传文件 这个还是要去看官方例子,网上没找到,需要添加 org.apache.http.entity包 其他都和普通的post请求没啥区别了 4.json-lib的一个问题 在maven里添加了json-lib的依赖后,启动报错 missing net.sf.json-lib,但实际上这个我的确是加载进来了。去了SO,才知道,还需要知道classifier 依赖,把jdk的版本添加上就行。这个应该是我当时添加的时候没有去maven中央库填写造成的 然后在工程目录执行 就会在target目录生成jar包啦……

阅读全文

《软件测试》一点笔记

这两天在读《软件测试》,书不厚,也就300页,有些观念还是挺诧异的,比如软件功能超出产品说明书也算作软件缺陷…想想也能明白,只是猛然看到还是很惊异..简单记录一下读书过程中一些重要的笔记.留作备份. 软件缺陷:……

阅读全文

[已失效]Csdn免积分下载器

作者:bystander 转载请注明来源:http://leaver.me 原理很简单,目前好像还没有大规模传开,我就不透露了,大家低调使用.为了方便,我写了个客户端,下载地址在文章末尾  使用方法直接把你想下载的地址复制过去,点击下载就会调用ie来下载了.  文章太短了,发两个可乐的吧:……

阅读全文

详细讲解双查询注入

上一篇文章中,http://leaver.me/archives/2726.html 我说双查询很难讲清楚,这次就试着讲一下。读了一些原理性的东西。然后尽量通俗的给大家讲清楚。。 在此之前,我们理解一下子查询,查询的关键字是select,这个大家都知道。子查询可以简单的理解在一个select语句里还有一个select。里面的这个select语句就是子查询。 看一个简单的例子: 真正执行的时候,先从子查询进行。因此执行select database() 这个语句就会把当前的数据库查出来,然后把结果传入到concat函数。这个函数是用来连接的。比如 concat(‘a’,’b’)那结果就是ab了。 原理: 双注入查询需要理解四个函数/语句 1. Rand() //随机函数 2. Floor() //取整函数 3. Count() //汇总函数 4. Group by clause //分组语句 简单的一句话原理就是有研究人员发现,当在一个聚合函数,比如count函数后面如果使用分组语句就会把查询的一部分以错误的形式显示出来。 以本地一个名为Security的数据库为例 首先在bt5下的命令行下输入 就会连接上数据库了。 然后通过use security; 就可以切换到security数据库了。因为一个服务器上可能有多个数据库嘛。 然后我们执行一下前面那个简单的子查询的例子 就能显示security,也就是显示了当前数据库的名字了。 然后我们测试一下concat的用法。输入 显然结果就是string1string2了 然后我们测试一下rand()这个随机函数是干嘛的 我们多执行几次 可以看到,这个函数就是返回大于0,小于1之间的数 然后看看取整函数 这个函数就是返回小于等于你输入的数的整数。 然后我们看看双注入查询中的一个简单组合。大家从我的上一篇文章中应该也看到了有一个子查询是 我们从里向外看。rand() 返回大于0小于1的小数,乘以2之后就成了小于0小于2了。然后对结果进行取证。就只能是0或1了。也就是这个查询的结果不是1,就是0 我们稍微加大一点难度。看这个查询 不要怕。先看最里面的SELECT database() 这个就返回数据库名,这里就是security了。然后FLOOR(RAND()*2)这个上面说过了。不是0,就是1.然后把这两个的结果进行concat连接,那么结果不是security0就是security1了。 如果我们把这条语句后面加上from 一个表名。那么一般会返回security0或security1的一个集合。数目是由表本身有几条结果决定的。比如一个管理表里有5个管理员。这个就会返回五条记录,这里users表里有13个用户,所以返回了13条 如果是从information_schema.schemata里,这个表里包含了mysql的所有数据库名。这里本机有三个数据库。所以会返回三个结果 现在我们准备加上Group By 语句了。 我们使用information_schema.tables 或 information_schema.columns者两个表来查询。因为表里面一般数据很多。容易生成很多的随机值,不至于全部是security0,这样就不能查询出结果了。 这里我先解释一下。我们把concat((select database()), floor(rand()*2)) 这个结果取了一个别名 a ,然后使用他进行分组。这样相同的security0分到一组,security1分到一组。就剩下两个结果了。 注意。这里的database()可以替换成任何你想查的函数,比如version(), user(), datadir()或者其他的查询。比如查表啊。查列啊。原理都是一样的。 最后的亮点来了。。 我们输入这条:注意多了一个聚合函数count(*) 报错了 重复的键值 可以看到security就是我们的查询结果了 想要查询版本就这样: 看看替换了database()为version() 再看一个 报错 这里的~这个符号只是为了让结果更清晰。 这里还有一个比较复杂的。叫做派生表。需要使用 select 1 from (table name); 这样的语法来报错,具体就是 来报错。 大家可以对照我上一篇文章来看。相信讲的还算清楚。……

阅读全文

双查询注入

作者:bystander 论坛:法客论坛 这个东西比较难解释。我就不多解释。尽量通过这篇文章大家能够照猫画虎手注即可。想要深入理解的可以去看看mysql数据库的一些知识 介绍一下双查询注入,有时候我们通过order by 语句获取到了确定的列数,可是当我们使用union select或union select all查询的时候, 却会出现一个错误提示,列数不一致。 而我们使用下面的语句: 执行之后就会显示mysql版本,用户名,服务器名, 以及数据目录… 获取数据库里 许多人会在上面的语句里使用:database()方法来获取数据库, 可是。这个方法只能获取一个数据库。如果你入侵的网站存在多个数据库。上面这个查询就不能用了因此使用下面这个方法更好些。。 不同点在于第二个查询语句在information_schema.schemata里查询 schema_name ,这样就能查到所有的数据库了。 注意语句中的Limit 0,1会显示地一个数据库,改成 Limit 1,1 会显示第二个 Limit 2,1 会显示第三个, Limit 3,1 会显示第四个。。以此类推。 补充个: 在普通的SQL注入中,使用如下的语句 会一次爆出所有的数据库 而使用下面的 只会显示当前站点使用的数据库。 获取表名 回正题,我们继续使用双查询来获取数据库的表: 注意语句中的table_schema=0xHEX 这里的hex用你要查询的数据库进行hex编码后替换即可。 同样的,这里可以要修改LIMIT后面的值来得到第二个第三个第四个表。 获取列名 然后我们来获取列名: 和上一句很像,注意这一句"And table_name=0xHEXEDTABLENAME” 还是一样的。后面的部分是要查询的表名的hex值,同时,通过增加后面的LIMIT值来获取更多的列名。下面是大家最感兴趣的地方。。从列里面取值。 获取列值 一些人使用: 也就是他们使用tablename.columnname 有个缺点就是一次只能获取一个列的值,要是该表有个1000多列啥的。。一个个就了。。为了更快一些。后来很多人开始使用这个: 这样一次就能获取多个列的值了,但是还有个bug,因为是直接从mysql的所有表里面找,并且没有指定数据库名,如果mysql有两个数据库有同样的一个表名。那么这样找出来的就不知道到底是哪个了。。就混乱了。。所以。现在我们用这个: 好处一个是可以一次获取多个列的值,同时使用 database.table, 可以明确我们要找的表了。不要忘了增加LIMIT来获取下一条记录啊 错误之处还请指正。……

阅读全文

recon-ng开源信息探测框架

作者:bystander 博客:http://leaver.me 微博:http://t.qq.com/lazystander 论坛:法客论坛 首发。转载什么的请注明出处。起码给我留个链接啥的嘛。 首先介绍一下。这个工具是国外刚刚发布的。主要用来渗透前的信息探测。使用类似Metasploit 主要有 Auxiliary: 这个模块查询主机信息泄漏页。进行hash反查,模糊名称精确,检查某个email是否密码泄漏,域名解析ip等 Contacts: 这个模块探测和某一公司有关的人员的信息,主要包括 LinkedIn 和Jigsaw 这两个模块。得到的信息可以被Auxiliary模块使用,如果和Social Engineer Toolkit(社会工程学工具集,这个工具已经发布了。是开源的。大家可以看看),一起。效果强大。 Hosts: 这个用来获取站点子域名。。包括使用baidu。Google bing等。。效果相当强大。 Output: 这个模块用来创建输出报表 Pwnedlist: 这个模块不是得shell的。他可通过 Pwnedlist.com 提供的api,如果这个网站被入侵过。那么可以直接获得其他黑客泄漏的帐号密码。。(需要去 Pwnedlist.com 注册) 安装方法: bt下直接 然后有可能提示输入密码,好象是随便输一个用来保护版本控制。。我输的是toor。。 然后就安装好了。输入 然后 首先查看有哪些模块。输入 图一 我以获取子域名为例,通过我前面的介绍你已经知道了hosts模块里的所有模块基本都是干这事的。我用里面的baidu模块来说明。你也可以使用bing等,, 输入命令 图二 刚开始你可能不清楚这个模块的说明。那么继续输入info即可查看模块的详细说明 要开始使用。我们输入 和Metasploit很像把。可以查看要使用需要的配置。 图三 看表,会发现有三行。第一行是标题,第二行是域名设置,第三行是输出。这个current value也就是当前值已经为true。所以不用设置。req的意思是是否必须设置。我们输入 baidu.com就是你的目标了。 就会从百度的结果里提取百度的子域名信息了。要开始。我们输入 图四 更多希望大家发掘吧。我抛砖。求引玉。……

阅读全文