buuctf re

基本汇编指令

mov  A B      **将B的值复制到A里面去**

push  A       **将A压栈**

pop  A        **将A从栈中弹出来**

call Funtion  **跳转到某函数**

ret  --> 相当于 pop ip **从栈中pop出一个值放到EIP里面**

je jz       **如果ZF(0标志位)=1,就跳转,否则跳过这条语句,执行下面的语句。

ida。。

a2IDA-数据显示窗口(反汇编窗口、函数窗口、十六进制窗口)_花熊的博客-CSDN博客

easyre

1.看到一个文件首先得知道它有没有壳,所谓加壳就是改变该程序的入口,使cs:ip指向另外一段代码,执行完额外的代码后再回到程序本来的入口,这样反编译软件就不能轻易进行反编译。因此我们用exeinfope来查看它是否有壳。buuctf re_第1张图片

 2.用64位ida打开,shift+F12查看关键字符串buuctf re_第2张图片

 reverse

1.ida打开buuctf re_第3张图片

 2.shift+f12buuctf re_第4张图片

发现 this is the right flag!

3. 双击sub_1400..跟进buuctf re_第5张图片

4.f5查看伪代码buuctf re_第6张图片

 

 对照ascii码,0对应48,o对应111.

就是把o都换成0了

flag为flag{hell0_w0rld}

reverse2

1.与上面一题一样,先f12+shiftbuuctf re_第7张图片

看到this is the right flag!然后f5查看伪协议

buuctf re_第8张图片

      if ( *(&flag + i) == 105 || *(&flag + i) == 114 )
        *(&flag + i) = 49; 

对照ASCII码,发现是把i和r替换为1

原先的flag应该是hacking_for_fun}buuctf re_第9张图片

 然后替换一下变成hack1ng_fo1_fun

内涵的软件

1.先运行了一下

buuctf re_第10张图片

2.查壳发现是32位buuctf re_第11张图片

 3.f12+shiftbuuctf re_第12张图片

buuctf re_第13张图片

 新年快乐

1. 查壳upx,32位buuctf re_第14张图片

2.脱壳,使用upxshellbuuctf re_第15张图片

3.shift +f12buuctf re_第16张图片

3.进this is true flag!

buuctf re_第17张图片 

 4.ctrl+x 定位查找buuctf re_第18张图片

 5.f5反编译buuctf re_第19张图片

 strcpy:把HappyNewYear!复制给str2,输入str1进行比较,相等即正确,即str1应该为HappyNewYear!---->flag{HappyNewYear!}

 

你可能感兴趣的:(学习)