170506 解密-ssctf签到wp 汇编-数据标号

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
汇编语言

你可能感兴趣的:(汇编,CTF)