使用Java程序自动发博客的尝试-带附件

【边尝试边写博客】入侵学校服务器 现在是凌晨1点,2016年2月16 无聊中看了一下学校主页,就想试着入侵一下学校网站。 其实对入侵并没有什么研究,毕竟这行见不得光。 但是~对计算机的基础还是有的,于是前期设想如下: 1.找到管理员后台登入地址 2.弱密码不断尝试一直到正确登入 3.登入管理员后台,注入小马大马提权 4.提权后获取教务处数据库or上传木马到服务器获取服务器权限 我本身并没有任何黑客工具,木马 阅读详情
 这个文章主要是熟悉Upload数据时的数据格式,许多的upload组件看上去很神秘,其实内部并不复杂。

一、我们先来看看当表单

类型为multipart/form-data
<form action="/admin/blogs" enctype="multipart/form-data" id="blog_form" method="post"> 
// 标题
<input class="text required min-length-3 bad-words" id="blog_title" maxlength="50"
name
="blog[title]" size="45" style="width:400px;" type="text" />
// 内容
<textarea class="validate-richeditor bad-words min-length-5" cols="40" id="editor_body"
name="blog[body]" rows="20" style="width: 510px; height: 350px;"></textarea>
</form>

二、拿到的一个数据
  1. ...
  2. Content-Type: multipart/form-data; boundary=---------------------------29510474520649
  3. Content-Length: 4281
  4. -----------------------------29510474520649
  5. Content-Disposition: form-data; name="blog[blog_type]"
  6. 1
  7. -----------------------------29510474520649
  8. Content-Disposition: form-data; name="blog[title]"
  9. 测试博客标题
  10. -----------------------------29510474520649
  11. Content-Disposition: form-data; name="blog[category_id]"
  12. -----------------------------29510474520649
  13. Content-Disposition: form-data; name="blog[user_tags]"
  14. -----------------------------29510474520649
  15. Content-Disposition: form-data; name="auto_save_id"
  16. -----------------------------29510474520649
  17. Content-Disposition: form-data; name="blog[bbcode]"
  18. true
  19. -----------------------------29510474520649
  20. Content-Disposition: form-data; name="blog[body]"
  21. 测试博客的内容,
  22. 附件为java2000.net的LOGO
  23. -----------------------------29510474520649
  24. Content-Disposition: form-data; name="blog[diggable]"
  25. 0
  26. -----------------------------29510474520649
  27. Content-Disposition: form-data; name="blog[forum_id]"
  28. -----------------------------29510474520649
  29. Content-Disposition: form-data; name=""; filename=""
  30. Content-Type: application/octet-stream
  31. -----------------------------29510474520649
  32. Content-Disposition: form-data; name="attachments[][remark]"
  33. java2000.net的LOGO
  34. -----------------------------29510474520649
  35. Content-Disposition: form-data; name="attachments[][uploaded_data]"; filename="www.java2000.net.gif"
  36. Content-Type: image/gif
  37. GIF89a。。。。。
  38. -----------------------------29510474520649
  39. Content-Disposition: form-data; name="commit"
  40. 提交
  41. -----------------------------29510474520649--

解释一下,其中的
Content-Type: multipart/form-data; boundary=---------------------------29510474520649
是关键,前面代表提交数据的类型,后面是分割边界的标志boundary
后面的数据,使用 -- 加上 boundary 作为分割标志
最后一行数据,使用 -- 加上boundary 再加上 -- 作为结尾标志


三,根据数据我们配置了一个提交数据的模板

  1. {BOUNDARY}{BR}Content-Disposition: form-data; name="blog[blog_type]"{BR}{BR}1{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[title]"{BR}{BR}{TITLE}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[category_id]"{BR}{BR}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[user_tags]"{BR}{BR}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="auto_save_id"{BR}{BR}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[bbcode]"{BR}{BR}true{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[body]"{BR}{BR}{CONTENT}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[forum_id]"{BR}{BR}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="commit"{BR}{BR}{SUBMIT}{BR}{BOUNDARY}--{BR}
其中的
{BOUNDARY} 是分割标志,
{BR}是换行
{TITLE}是标题
{CONTENT}是内容
{SUBMIT}是提交的按钮标签

四、用程序提交数据
  对于cookie的操作和获取我就不多说了,请自行参考前一个文章。

1 这里只贴出来一个简单的配置结果
  1. host=zhaoxq-java2000-net.javaeye.com
  2. charset=UTF-8
  3. cookie=   
  4. post=http://zhaoxq-java2000-net.javaeye.com/admin/blogs/new
  5. action=http://zhaoxq-java2000-net.javaeye.com/admin/blogs
  6. message={BOUNDARY}{BR}Content-Disposition: form-data; name="blog[blog_type]"{BR}{BR}1{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[title]"{BR}{BR}{TITLE}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[category_id]"{BR}{BR}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[user_tags]"{BR}{BR}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="auto_save_id"{BR}{BR}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[bbcode]"{BR}{BR}true{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[body]"{BR}{BR}{CONTENT}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="blog[forum_id]"{BR}{BR}{BR}{BOUNDARY}{BR}Content-Disposition: form-data; name="commit"{BR}{BR}{SUBMIT}{BR}{BOUNDARY}--{BR}


2 发布的程序
  1. package net.java2000.blogsender.javaeye;
  2. import java.io.IOException;
  3. import java.util.Properties;
  4. import net.java2000.blogsender.Sender;
  5. import net.java2000.blogsender.baidu.BaiduSender;
  6. import net.java2000.blogsender.util.PostUtil;
  7. public class JavaEyeSender implements Sender {
  8.   private String host;
  9.   private String charset;
  10.   private String post;
  11.   private String action;
  12.   private String cookie;
  13.   private String message;
  14.   private String boundary;
  15.   public boolean send(String title, String content) {
  16.     return PostUtil.postMultiPart(host, charset, action, post, cookie, message, boundary, title, content);
  17.   }
  18.   public JavaEyeSender() {
  19.     Properties p = new Properties();
  20.     try {
  21.       p.load(BaiduSender.class.getResourceAsStream("javaeye.properties"));
  22.       host = p.getProperty("host");
  23.       charset = p.getProperty("charset");
  24.       post = p.getProperty("post");
  25.       action = p.getProperty("action");
  26.       cookie = p.getProperty("cookie");
  27.       message = p.getProperty("message");
  28.       boundary = "---------------------------" + System.currentTimeMillis();
  29.       String boundary1 = "--" + boundary;
  30.       message = message.replace("{BR}", "/r/n");
  31.       message = message.replace("{BOUNDARY}", boundary1);
  32.       message = message.replace("{SUBMIT}", "提交");
  33.     } catch (IOException e) {
  34.       e.printStackTrace();
  35.     }
  36.   }
  37.   public static void main(String[] args) {
  38.     Sender sender = new JavaEyeSender();
  39.     sender.send("测试测试", "测试[b]测试测[/b]试/r/n121212/r/n32324324/r/n65465465465/r/n");
  40.   }
  41. }

3 发布数据的辅助类

  1.   public static boolean postMultiPart(String host, String charset, String postURL, String referer, String cookies, String message, String boundary, String title, String content) {
  2.     try {
  3.       URL url = new URL(postURL);
  4.       HttpURLConnection con = (HttpURLConnection) url.openConnection();
  5.       con.setDoOutput(true); // POST方式
  6.       con.setDoInput(true);
  7.       con.setRequestMethod("POST");
  8.       con.addRequestProperty("Host", host);
  9.       con.addRequestProperty("Referer", referer);
  10.       con.addRequestProperty("Cookie", cookies.trim());
  11.       con.addRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
  12.       message = message.replace("{TITLE}", title);
  13.       message = message.replace("{CONTENT}", content);
  14.       con.addRequestProperty("Content-Length", Integer.toString(message.getBytes(charset).length));
  15.       OutputStream os = con.getOutputStream(); // 输出流,写数据
  16.       os.write(message.getBytes(charset));
  17.       os.flush();
  18.       BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), charset)); // 读取结果
  19.       String line;
  20.       while ((line = reader.readLine()) != null) {
  21.         System.out.println(line);
  22.         // break;
  23.       }
  24.       os.close();
  25.       reader.close();
  26.       return true;
  27.     } catch (Exception ex) {
  28.       ex.printStackTrace();
  29.       return false;
  30.     }
  31.   }



五、总结:
  我简单说明了提交upload数据的格式已经实现的一个简单方法。有兴趣的人可以自行看看html的协议内容,里面讲解的很清楚。你会对upload不在神秘。
  顺便说一句,对于二进制数据的提交,大部分会进行Base64或者QP的编码,这样整个数据里面将只有ASCII码,而不会出现怪字符。不过有些客户端,不会这么做。

这个数据格式与我们邮件的内部格式非常类似。


原文地址:http://www.java2000.net/p8849











<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
java socket客户端断线重连 java socket client 断线重连的简单实现 有什么意见可以提哦 立即下载

相关推荐

高等数学第五章---定积分(§5.3定积分的计算方法)

这篇博客详细讲解定积分的计算方法,包括直接法、凑微分法、变量代换法和分部积分法。通过典型例题演示如何运用这些技巧计算定积分,特别强调换元必换限的原则和奇偶函数的简化处理。内容涵盖代数变形、三角代换、分段函数积分等常见题型,并附有详细的解题步骤和常见错误分析。适合微积分学习者系统掌握定积分计算技巧,提升解题效率。文中还包含积分等式证明和变限积分函数求导等进阶内容,帮助读者深入理解定积分的应用。

2302_77045867的博客 4329

使用Java程序自动发博客的尝试

案例:我正在将我网站的资料搬到我在百度空间的博客哦:作为备份用。http://hi.baidu.com/java2000_net手里有好多的技术资料,不想一个一个的粘贴到那里,包括在优快云的一些代码,想复制一份到那里,留个备份。决定使用Java程序直接向博客里发数据。需要解决的几个问题1 认证2 发送数据3 解决发送太频繁的问题一 认证百度支持保存用户名和密码,也就是自动登录,所以其登录信息

老紫竹的专栏 3768

理解ADC:为什么需要抗混叠滤波器?

本文介绍 ADC 的混叠现象,引出抗混叠滤波器,并介绍一种开关电容滤波器,它具有很小的增益过渡带。

疯狂的运放 5935

Java实现邮件的自动发送

public static void sendTxtMail()       {          Properties props = new Properties();          props.put("mail.smtp.host", "smtp.163.com"); //smtp服务器地址             props.put("mail.smtp.auth", tr

sinat_38167943的博客 5858

Silvaco TCAD | 从PIN到APD:高性能光电探测器的仿真设计与优化

本文详细介绍了使用Silvaco TCAD进行光电探测器仿真设计与优化的全过程,从基础的PIN结构到高性能APD的实现。通过实战案例和代码示例,展示了如何优化器件参数、实现雪崩效应以及进行高级仿真分析,帮助工程师提升光电探测器的量子效率和响应速度。

weixin_29218509的博客 425

安检机图像处理避坑指南:从条纹校正到物质分类,那些论文里没写的工程细节

本文深入探讨了双能X射线安检机图像处理中的关键工程实践,从条纹校正到物质分类,揭示了论文中未提及的实用技巧。针对探测器校正、物质分类模糊、伪彩色系统设计等核心问题,提供了动态参数更新、空间上下文分析和自适应色彩映射等解决方案,助力提升安检系统的准确性和鲁棒性。

weixin_30325487的博客 887

JAVA微信开发:[20]如何实现主动发送微信消息

在微信开发中,利用微信的接口主动给微信关注用户发送消息。这个主要是利用微信的客服接口来实现该功能,具体的实现如下:     /**      * 微信公共账号发送给账号      * @param content 文本内容      * @param toUser 微信用户        * @return      */

Truong的专栏 1万+

数字IC面试核心:从MUX基础到Glitch-Free时钟切换电路深度剖析

本文深入剖析数字IC设计中的MUX基础原理及其在Glitch-Free时钟切换电路中的应用。从二选一MUX的门级实现到时钟切换中的毛刺问题,详细讲解了同步切换机制和工程优化技巧,帮助工程师掌握高速时钟电路设计的核心要点。

weixin_42629815的博客 323

java mail 多个收件人_JavaMail发送带多个附件的邮件,多个收件人,多个抄送人

/*** 方法描述:发送带附件的邮件** @throws UnsupportedEncodingException*/public static boolean sendEmailWithAttachment(Email email)throws UnsupportedEncodingException {Properties prop = new Properties();prop.put("m...

weixin_42518678的博客 372

[QMT量化交易小白入门]-九十五、多因子选股和趋势择时股票量化交易策略,年化收益率40.61%

本策略采用“双层过滤”机制:第一层基于多维度财务指标进行股票池筛选(多因子选股),第二层运用均线系统和MACD指标实施动态择时(趋势跟踪)。这种设计既保证了组合的质量下限,又能灵活应对市场波动。因子配置科学性:涵盖估值、成长、盈利、动量四大类因子风险控制精细化:设置动态止损与仓位管理机制信号验证严格性:多重条件交叉验证提升胜率。

木头大左的博客 798

在ABAQUS中使用VUMAT子程序实现Hashin失效准则的详细解析与实践:深入探讨复合材料模拟仿真的高级编程技巧

Hashin失效准则是由材料科学家Shlomo Hashin于1962年提出的一种基于能量方法的多向失效理论,主要用于预测复合材料的破坏行为。与传统的单向失效理论不同,Hashin准则考虑了材料内部的多种独立破坏机制,如基体断裂、界面脱粘、纤维断裂等,这些机制在不同应力状态下可能同时或分别发生。通过计算各个机制的能量释放率,Hashin失效准则能够更为准确地预测复合材料在复杂应力状态下的破坏行为。

qq_38334677的博客 1948

尝试发博客

先试试怎么发 我整个大标题试试 先整个计划 计划1 九月前浏览完计算机网络

qq_41890651的博客 112

ICC2: pin shape不在track上引起的drc如何解决?

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 433

java lotus 表格_使用Excel从Lotus Notes发送电子邮件并具有附件和HTML正文

我正在尝试通过Lotus笔记发送电子邮件表格excel电子表格,它有一个附件,并且正文需要是HTML格式 .我有一些代码,我已经读过的所有内容应该允许我这样做,但事实并非如此 . 如果没有附件将发送的HTML正文,当我发送电子邮件仍然发送的HTML正文但附件消失时,我已经尝试重新排列代码的顺序,删除可能不需要的所有内容,但所有内容都可以保留 .(您需要引用Lotus Domino Objects来...

weixin_29938067的博客 574

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

mac 电脑 java wifi密码尝试器

密码破解尝试器,只可以用于mac电脑 import java.io.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Scanner; public class App2 { public static File logFile = new File("/Users/fast/Deskto

每天码一点 1211

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

lotus designer 导入 java 类,如何使用Java从.nsf(莲花笔记)文件中获取所有附件

Steps followed :Took a back of my lotus notes as sample.nsfAnd then tried to read the attachments from the sample.nsfCode snippet :Database db = session.getDatabase("","C:\\Projects\\NotesToJava\\samp...

weixin_36098917的博客 298

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

实现带附件的邮箱发送和接收功能

使用JavaMailSender发送电子邮件。

qq_36325332的博客 248

Java程序员博客系统推荐!我调研了100来个 Java 开源博客系统,发现这 5 个最好用!

最近想倒腾一下博客,看了很多现成的比较成熟的开源博客系统,自己也简单从下面几个维度总结对比了一下: star数量 技术选型 社区生态 当然啦!好东西不能独享。下面简单分享一下我所做的笔记。 欢迎小伙伴们评论区补充完善。ღ( ´・ᴗ・` )比心 halo Github地址 :https://github.com/halo-dev/halo Star : 16.2k 简介 :✍ 一个优秀的开源博客发布应用。 技术 :Spring Boot+JPA+Hutool 推荐等级 :⭐⭐⭐⭐⭐ 评价 :这款博客生态

JavaGuide 6654

尝试自己写博客

尝试自己写博客为什么打算写博客目前是在对java的学习平日的学习内容最后结语 为什么打算写博客 我作为一个对计算机的热爱者,平日里喜欢在电脑里捣鼓捣鼓代码,把每一次测试完的代码保存在电脑里。前段时间的一次重装系统,一次失误性的操作,对存放数据的D盘进行了格式化,造成了我积累了一年来的数据毁于一旦,那心在滴血啊。当时我在点格式化按钮时已经意识到要完了,慌忙点了取消按钮,但还是没有挽回丢失的数据。我自...

小蜗牛764号的博客 344

【JAVA】TCP通信——发弹幕案例

Java实现TCP通信——发弹幕 TCP通信可以实现双方互相接收发送消息,初学TCP通信,从简入难,先实现一方可以接收多方消息(一方作为服务端,多方作为客户端),即类似于观看视屏的用户,发送多条弹幕,同时其他用户也可以发送多条弹幕,可视作客户端;屏幕展现的所有弹幕,可视作服务端。 发弹幕案例,主要包含IO流知识点、线程知识点、TCP通信知识点。接下来先总结一些网络编程、TCP协议、UDP协议。通过知识点,编写发弹幕案例,进行复习巩固。 实现网络编程关键的三要素 1. IP地址:设备在网络中的地址,是唯一的

qq_47156956的博客 1575

WebService(Axis)服务器端返回附件

在webservice的开发中难免会遇到传输附件的问题,如电信C网的彩信业务开发。通常的作法是client调用server端方法时携带附件,server端得到附件。但是server端返回消息时携带附件似乎用的比较少,而且网上关于这方面的资料也不多,经过几天的尝试,可以在server端返回附件,贴出来给大家分享一下。我是用axis开发的程序,所以针对axis做一些详解,希望用别的框架的大家多多交

小筑听风的专栏 2928
上一篇: 使用Java程序自动发博客的尝试
下一篇: Quartz Job Scheduling Framework中文版文档发布
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值