BJD3rd-WriteUp

Crypto

bbcrypto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# -*- coding:utf-8 -*-
import A,SALT
from itertools import *

def encrypt(m, a, si):
c=""
for i in range(len(m)):
c+=hex(((ord(m[i])) * a + ord(next(si))) % 128)[2:].zfill(2)
return c
if __name__ == "__main__":
m = 'flag{********************************}'
a = A
salt = SALT
assert(len(salt)==3)
assert(salt.isalpha())
si = cycle(salt.lower())
print("明文内容为:")
print(m)
print("加密后的密文为:")
c=encrypt(m, a, si)
print(c)
#加密后的密文为:
#177401504b0125272c122743171e2c250a602e3a7c206e014a012703273a3c0160173a73753d
阅读全文

CTFd平台搭建记录

最近搭建了一个CTFd平台,花了差不多一个星期叭(虽然最后发现在一个小问题上卡了好久),用CTFd-Whale实现了独立题目容器,记录一下安装过程,避免以后再踩坑。

部署用的是最简单的Docker+Docker Compose部署,系统环境Ubuntu 18.04。

官方项目地址:https://github.com/CTFd/CTFd

阅读全文

Ha1cyonCTF WriteUp

最近搞的西工大CTF,整体题目感觉挺难的,看了WP之后发现Web还有一些很新的CVE,Misc还有音频隐写,都是没接触过的东西。除了服务器不定时的尿崩之外(运维挨打),做出来了几个题,也是第一次接触CTF的Crypto吧,记录一下收获。

阅读全文

分组密码总结-DES,AES,SM4

简介

分组密码属于对称密码的一种,其特点是加解密都是对明文/密文进行分组后逐组进行加解密。通俗讲就是将明文分块,然后分块加密,解密同理。

分组密码的基本原理:

  1. 代换:明文分组到密文分组的可逆变换
  2. 扩散:将明文的统计特性散布到密文中去,使得明文的每一位影响密文中多位的值
  3. 混淆:使密文和密钥之间的统计关系变得尽可能复杂,使攻击者无法得到密钥,通常使用复杂的代换算法实现
阅读全文

汇编语言学习笔记

在读《汇编语言》这本书学习汇编语言的时候,在此对每一章的要点进行总结和记录,以便日后复习与查看。

练习环境:Windows 2000 Professional,与书中程序运行环境一致。

第一章 基础知识

汇编语言是一门直接在硬件之上工作的编程语言。由于早期人们使用机器语言(一串二进制数字)进行编程存在不易纠错、晦涩难懂的缺点,所以发明了汇编语言来帮助程序员更高效的编程。汇编语言经编译连接之后可以直接形成由机器指令构成的程序,可以直接被CPU执行。而不同型号的CPU拥有不同的指令集,所以汇编语句对应的机器码可能不尽相同。这本书的汇编语言是基于8086CPU的指令集来进行描述的。

汇编语言包括三个部分:

  1. 汇编指令(核心部分):机器码的助记符,有对应的机器码
  2. 伪指令:由编译器执行,没有对应的机器码,计算机本身并不执行
  3. 其他符号:如+-*/等,由编译器识别,没有对应机器码

汇编语言的指令和数据信息存放在存储器(内存)中。在内存中指令和数据并没有任何区别,本质上都是二进制信息。而决定一段二进制信息是指令还是数据,则由CPU工作时决定。存储器由若干个存储单元构成,单个存储单元的最小单位是字节(Byte,1Byte=8Bit)。

阅读全文

Git初探

昨天花了两个小时,把廖雪峰老师的Git教程看了一遍,然后再根据网上的一些资料,对Git的一些概念和常用命令做一个归纳。

Git是什么?

Git是一个开源的分布式版本管理系统,由Linux之父Linus开发。相比于其他集中式版本管理系统(如SVN、CVS)将整个项目的抓取和提交过程集中在一台中心服务器中,Git中对项目提交修改的每一个开发者都具有一套完整的项目版本库,中心服务器也不再是项目开发的必须项(为了方便提交,很多时候依然会为Git设置中心服务器),开发者在本地对项目进行修改和开发,并将修改提交给其他开发者,其他开发者也各自将自己做的修改提交给其他人,这样就实现了实时的版本管理和修改提交。

常见的应用了Git的网站有GithubGiteeGitlab等,它们为开源项目提供免费的Git存储,开发团队可以使用它们来实现版本管理和团队协作。

阅读全文

DVWA练习记录(三)

相关文章:DVWA练习记录(一)DVWA练习记录(二)

SQL Injection(Blind)(SQL盲注)

SQL盲注与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知,因此盲注的难度要比一般注入高。目前网络上现存的SQL注入漏洞大多是SQL盲注。

这篇文章总结了常见的SQL盲注场景:

  1. 提交一个导致SQL查询无效时,会返回一个通用错误页面,提交正确则会返回一个内容可被适度控制的页面。
  2. 提交一个导致SQL查询无效时,会返回一个通用错误页面,提交正确则会返回一个内容不可控的页面。
  3. 提交受损或不正确的SQL既不会产生错误页面,也不会以任何方式影响页面输出。
阅读全文

DVWA练习记录(二)

相关文章:DVWA练习记录(一)DVWA练习记录(三)

Brute Force(暴力破解)

暴力破解指的是黑客使用穷举法猜解出用户口令,是最为广泛使用的手法之一。在很多情况下,用户会使用不安全的、很容易被猜解的密码,使得这种攻击变得可能。为了提高猜解的成功率,黑客往往还会与社会工程学结合,从不同渠道获取用户的相关信息,如生日、姓名等可能用来作为密码的信息,再基于这些信息构建字典,将其任意组合对密码进行猜解。

理论上说,若网站对口令输入的尝试次数为无限的话,使用穷举法猜解密码总能够成功。所以需要网站进行一定的限制,如多次输入错误限制输入等。

阅读全文