谈谈CVE-2012-0053

0x00 前言

看编号就知道是个比较老的洞了,最近测东西的时候又碰到,找了点资料大致看了下形成原因,然后再分享下POC。

0x01 漏洞描述

Apache HTTP Server 2.2.x多个版本没有正确严格限制HTTP请求头信息,HTTP请求头信息超过LimitRequestFieldSize长度时服务器返回400(Bad Request)错误,并在返回信息中将出错请求头内容爆出,攻击者可以利用该漏洞获取httponly cookies。

受影响软件版本:
Apache Http Server:
Affected: 2.2.21, 2.2.20, 2.2.19, 2.2.18, 2.2.17, 2.2.16, 2.2.15, 2.2.14, 2.2.13, 2.2.12, 2.2.11, 2.2.10, 2.2.9, 2.2.8, 2.2.6, 2.2.5, 2.2.4, 2.2.3, 2.2.2, 2.2.0

细节:

1、当HTTP请求头长度大于apache配置LimitRequestFieldSize长度时,服务器返回400错误页面中会携带LimitRequestFieldSize长度的错误请求头内容,如Cookies,User-agent等。

2、HTTP请求头长度不包含HTTP请求头名称与“:”。

3、Cookies请求头不包含多个cookies之间的空格,为实际多个cookies的长度总和。

4、Apache默认配置LimitRequestFieldSize长度为8196,浏览器正常访问默认截取请求头长度最大为4k

5、任意请求头(不限制于Cookie)超过LimitRequestFieldSize长度,服务器都会返回400错误并显示原始错误请求头信息。

 


0x02 漏洞分析

在ap_get_mime_headers_core中,该函数对于两种错误http请求的检查返回的信息出现了问题。

1.缺陷代码如下,在检测http_header超长后会返回Bad Request并将错误的部分返回给浏览器

2.如果检查HTTP请求头中的某个域不包含冒号,则也返回错误的部分

阅读剩余部分 –

nmap from python

0x01 About


 

大家都比较熟悉nmap,nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。

今天分享一下python-nmap,是python的一个模块库,使用这个模块可以让python很方便的操作nmap扫描器来工作,它可以帮助管理员完成自动扫描任务和生成报告的工具,它还支持nmap的脚步输出。

python-nmap只提供了nmap中的端口扫描,但输出方式会让人便于信息整理。

前提:使用python-nmap你得先装有nmap该软件

Install from PIP

2345截图20160127212007

阅读剩余部分 –

Tangscan插件之phpcms V9 /swfupload.swf XSS

最近看到WooYun-2014-69833报告中对swfupload.swf、uploadify.swf造成的flash xss 分析,由于涉及范围广(国内各大cms厂商,包括但不限于dedecms、phpcms、cmseasy、espcms、phpyun、thinksns、骑士人才系统、phpdisk、国微php168、phpok、kesioncms、pageadmin、xheditor、sdcms、emlog、dtcms等)命中率应该还可以,便给Tangscan提交了几个此类型插件,这里也分享一下代码。

先看下漏洞成因

代码可见,从参数(root.loaderInfo.parameters.movieName)中获得movieName后直接赋值到一些callback响应函数中,这些函数是js中执行的内容。我们只需闭合前面的”],再闭合try..catch中大括号},即可执行自己的javascript代码,造成反射型XSS。

因为是flash xss,而且没有过多关键字,所以无视浏览器filter和大部分WAF(因为在前端运行),所以影响较大,轻则越权操作、产生XSS、csrf蠕虫,重则直接getshell(结合某些cms的后台getshell技巧)。

 

分享下phpcms V9 /swfupload.swf XSS POC

  • TangScan-ID:TS-2014-17843

 

 

 

浅谈结构体

0x00 前言/概述

什么是结构体?为了便于引用数据,有时需要用不同的数据组合成一个有机的整体,而这样的整体中则是互相影响,相互联系。比如一个人的基本资料:编号,姓名,性别,地址(如下)。c语言中把这样自己指定的组合项称为结构体(structure)。

num name sex addr
1 Ruilin M Shanxi

 

阅读剩余部分 –

2016

2015,对我来说是神奇的一年,完成了许多自己希望做到的事。当然也耽误了许多不该耽误的事。现在总该放一放那些所谓的不务正业了吧,加油最后一年半,总是这一句话,加油,2016!
image

阅读剩余部分 –

【NOIP2014】生活大爆炸版石头剪刀布

题目描述 Description

石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:

斯波克:《星际迷航》主角之一。 蜥蜴人:《星际迷航》中的反面角色。

这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

2345_image_file_copy_1

现在,小A和小B尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-„„”,而如果小B以“剪刀-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-……”

 

已知小A和小B一共进行N次猜拳。每一次赢的人得1分,输的得0分;平局两人都得0分。现请你统计N次猜拳结束之后两人的得分。

输入描述 Input Description

输入文件名为rps.in。

第一行包含三个整数:N,NA,NB,分 别 表 示 共 进 行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。数与数之间以一个空格分隔。

第二行包含NA个整数,表示小A出拳的规律,第三行包含NB个整数,表示小B出拳的规律。其中,0表示“剪刀”,1表示“石头”,2表示“布”,3表示“蜥蜴人”,  4表示“斯波克”。数与数之间以一个空格分隔。

输出描述 Output Description

输出文件名为rps.out。

输出一行,  包含两个整数,以一个空格分隔,分别表示小A、小B的得分。

样例输入 Sample Input

2345_image_file_copy_2

样例输出 Sample Output

2345_image_file_copy_3

数据范围及提示 Data Size & Hint

对于100%的数据,0 < N ≤  200,0 < NA  ≤  200,  0 < NB  ≤  200。


答案

 

阅读剩余部分 –

算法入门之开灯问题

开灯问题属于C语言中一维数组中较为基础典型的一道练习

问题:

有n盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号

样例输入:

7  3

样例输出:

1 5 6 7

【分析】

  1. 用a[1],a[2]…..a[n]来表示编号为1,2….n的灯
  2. 第二个人按下2的倍数,第三个人按下3的倍数可以通过第几盏灯除以第几个人取余数看是否为0
  3. 通过真假判断灯的亮灭

 

【代码】

 

部分解释:

memset(a,0,sizeof(a)); 用来表示把数组a清零,他在#include<string.h> 中定义

接下来

for(int i=1;i<=k;i++)
for(int j=1;j<=n;j++)
if(j%i==0) a[j]=!a[j];

依次用第几盏灯数除以当前第几个人取余数看是否为0,如果是则取反即1->0 ,0->1来表示灯的亮灭

接下来程序为了避免输出多余的空格,设置了一个标志变量first 开始时定义first=1即为真if(first) first=0;来管理当前输出变量是否为第一个,如果是则first为0即为假,后续每一个值前加一个空格

阅读剩余部分 –

RFID HACK 之学校饭卡任意金额修改

0x00前言

自从成功破解完学校饭卡后就一直想抽个时间记录一下,可能过段时间会很少碰电脑,所以今天在这里写下来,希望可以与各位分享自己的思路。

0x01基础知识

1.M1卡介绍

Mifare Classic card提供1k-4k的容量,我们经常见到的是Mifare Classic 1k(S50),也就是所谓的M1卡。M1卡有从0到15共16个扇区,并且每个扇区都有独立的密码,每个扇区配备了从0到3共4个段,每个段可以保存16字节的内容,反正从0开始数 就对了(和数组下标为0开始一样)。

每个扇区的第4段呢是用来保存KeyA,KeyB和控制位的,每张卡还有一个唯一标识的UID号。

阅读剩余部分 –

感恩

感谢生命中遇到的所有人
感谢每一个帮助过我的人
感谢自己的努力
感谢这个世界