SWPU CTF writeup

0x00 概括

这是我第一次参加CTF比赛。逆向小白,隐写小白,但是做出了所有的隐写题。最擅长Web方向(和编程),而Web题做得不多。Web方向的知识还是不牢固,技巧不够熟练,实践经验不足。

我按照顺序题目分类写写writeup吧。

more >>

uri提取正则表达式

uri的格式多种多样,经常需要校验uri或者分析uri提取各部分,下面提供一个自己写的正则表达式来提取uri,我用它来分析扫描器中输入的或者爬取到的uri,优先提取,由于水平有限,未能完全校验uri是否合法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import re
url_parse_re = r"^(\w*):\/\/(?:([^:]*)?(?::(.*))?@)?([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$"
"""
^(\w*):\/\/
(?: ([^:]*)?(?::(.*))? @)?
([0-9.\-A-Za-z]+)
(?::(\d+))?
(?:\/([^?#]*))?
(?:\?([^#]*))?
(?:#(.*))?$
"""
testcase = "protocol://username:password@www.sample.com:80/path.php?id=1#hash"
r = re.compile(url_parse_re)
str = re.match(r, testcase)
if str != None:
for x in range(9):
print x, str.group(x)

more >>

RFID杂谈

0x00 前言

这篇文章各个部分没有逻辑联系,每个部分一个主题。

对RFID的了解并不深刻,如果有疏漏或者错误,可以发邮件给我或者直接评论。

0x01 读卡的过程

了解一个系统最好先了解这个系统的各个模块与各个层次,知道每个模块,每个层次的作用,当遇到关于这个系统的知识时,知道它说的是这个系统的哪一部分。

more >>

从一个简单的RFID安全事件说起

0x01 know it

学校新增了一个微信洗衣系统,用起来相当简单,首先,在系统的微信公众号上注册一个账户,账户是使用openid作为cookie,openid是微信生成的,只有在关注了公众号的时候才会产生。openid由几个因素决定,一个是公众号的appid,另一个是关注者的微信id。openid的作用就是让微信公众号的开发者唯一标识一个关注者。然后,将账户与任一一张卡绑定起来(我们学校有水卡和一卡通两张卡)。洗衣系统的充值使用微信支付,余额跟着微信走。

more >>

CRLF注入

0x01 简介

在HTTP协议中,HTTP请求与响应的各个字段之间的分隔符为\r\n,即CRLF。如果我们能在HTTP响应部分注入CRLF,并且加入自己的一部分代码,浏览器就会接受并且解析HTTP响应,完成我们想要的功能。

more >>

宽字节注入问题

0x00 宽字节

在代码注入攻击中,宽字节问题已经是老生常谈。注意,这里的代码注入是指宽泛的代码注入:所有突破数据与代码边界,使数据注入代码段,变成可执行代码的攻击手法都可以叫代码注入,包括SQL注入和XSS。啥是宽字节呢?其实就是用多个字节表示一个字符。

more >>

Python装饰器

0x00 语法糖

装饰器是Python一个语法糖,装饰器就是在不改变原函数的基础上,在原函数前后执行一些代码,就好像在原函数上增加了一些装饰品一样。这个语法能非常方便给一个函数增加一些功能,例如权限控制,校验一个函数的输入等。

more >>

一个简单的爬虫

0x01 初衷

最近准备开始写一些通用的自动化工具,以前也写过一些自动化的东西,不过都是用胶水把一些现成的工具粘连起来而已。自己开始写工具并不只是造轮子,我希望把尽自己最大的努力,每一个模块都做到最细致,规则做到最好,所以这个project会持续很长的时间,而且有可能会重构很多次。

more >>

生产者消费者问题的Python实现

0x00 背景知识

生产者和消费者是一个常见的问题,它的模型是多个生产者在生产产品,同时多个消费者消费产品,但是仓库容量是有限的,所以当仓库满了生产者需要休眠,而当仓库空了消费者需要唤醒生产者。这里面涉及的问题有互斥和同步。

0x01 一种解决方法

可以使用锁来负责互斥,使用threading.Condition来做同步。threading的完整用法见官方文档,Condition的完整用法见Condition的描述。简单来说,Condition内置了锁,当调用acquire()方法时,自动上锁,release()释放锁。wait()方法会释放锁后阻塞程序,直到被notify()方法唤醒。Talk is cheap, this is the code.

more >>