1625-5 王子昂 总结《2017年5月6日》 【连续第217天总结】
A. 汇编语言 十六章
ssctf签到 100%
B. 同学给我发了ssctf的签到题的题目,看了一眼是解密:
(Z2dRQGdRMWZxaDBvaHRqcHRfc3d7Z2ZoZ3MjfQ==)最后两个字符是=,这是base64编码的特征,遂进行解码,得到:
ggQ@gQ1fqh0ohtjpt_sw{gfhgs#}
两个{}已经出现,但是与flag格式ssctf{xxx}相比,{}距离太近,猜测是栅栏
数字符个数为28,则可能为4x7或14x2
后者有点太极端了,再加上源码中{}的距离真好为7个字符,则排列成4x7形式以后发现可以得到
ggqht{ggQht_gsQ10jsf#@fopwh} 与 ssctf{xxx}相比 开头gg的对应,估计是凯撒加密。 由于正好在外面,跟同学找了网吧,搜了一个在线python网站用代码进行12个字符的后偏移 注意:大小写不改变,即当大写字符超出Z时重新从A开始计数,而不是跨越到小写字符或符号 符号'_''@''#'和数字10以及标志{}不改变,只对字符操作 python中不把char类型和int类型视作相同,在C++中简单的直接加减反而在python中比较麻烦
python中使用ord()函数将字符转换为ASCII码的值,用chr()函数将数字转换为对应ASCII码的字符
而当ASCII码值超出最大128时,将会导致chr()函数的错误
在线python的报错信息不具体_(:з」∠)_就查了半天
凯撒解密后:
ssctf{ssCtf_seC10ver#@rabit} 提交,正确√ 第一个自己独立做出并提交的ctf题,写个比较详细的write up纪念一下=w=(虽然其实b64解密、栅栏、凯撒三个词就能说完 描述了单元长度的标号: 使用标号定义数据内存的时候,还可以在后面加上单位 eg: a db 0,0,0 这样声明标号可以直接定义其单位长度,在操作内存的时候不需要声明单位,而可以直接作为对应位寄存器使用 eg: mov ax,b == mov ax,cs:[8] eg: mov b,2 == mov word ptr cs:[8],2 这种标号标记了存储数据的单元的地址和长度,称为数据标号;之前使用的仅仅表示地址的标号称为地址标号 注意:带有':'的地址标号仅能在代码段使用,而数据标号可以在别的段使用 C. 明日计划 PYQT 汇编语言