逆向练习#5

2020-10-09

[BUUCTF-Reverse3]

1.

根据之前的经验,我觉得放进exeinfo、然后扔进ida找关键函数再f5的操作可以省略不写了。(成长了?其实是懒狗)

2.

亲爱的伪代码在这里

image-20201009183056688

Read More

逆向练习#4

2020-10-08

[BUUCTF-xor]

前言:

认识了简单的伪代码之后,要开始看复杂的了。

1.

在exeinfo中确认信息后,放入ida,找到main函数,f5查看伪代码

image-20201008111053312

直接从网上扒来的图,因为我第一眼真的看不懂啊呜呜

逻辑具体是:首先判断我们的输入v6长度是否为33,不是就进入label_12,下面可以看到就是返回”Failed”。

然后i=1,v6[1]代表从输入的第二位开始,^=表示异或(即xor)。即把两个数据二进制化,对位相同则输出0,不同输出1,再以输出的二进制转换回来。

例子:5和3转为二进制分别为:0101 、0011,异或结果0110,转换为十进制的6,即5^3=6.

但是a^=b是什么操作?应该是把异或好的数据赋值给a。

之后,比较v6global,(33uLL我不明白什么意思,uLL应该是数据类型,unsiged Long Long,33应该就是长度吧,但不知道这里面为什么说的是前31位)

2.

跟进global,里面有一串存储数据aFKWOXZUPFVMDGH,再跟进

1
2
3
__cstring:0000000100000F6E aFKWOXZUPFVMDGH db 'f',0Ah              ; DATA XREF: __data:_global↓o
__cstring:0000000100000F6E db 'k',0Ch,'w&O.@',11h,'x',0Dh,'Z;U',11h,'p',19h,'F',1Fh,'v"M#D',0Eh,'g'
__cstring:0000000100000F6E db 6,'h',0Fh,'G2O',0

既然知道了求得global的原理是异或,那么就反着来求出flag。异或反运算就是再异或一次。

0Ah0ch这些其实是十六进制,其他为字符串。

于是写python脚本,第一位f是不变的,从第二位0Ah开始。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
str1 = ['f', 0x0A, 'k', 0x0C, 'w', '&', 'O', '.', '@', 0x11, 'x', 0x0D, 'Z', ';', 'U', 0x11, 'p', 0x19, 'F', 0x1F, 'v',
'"', 'M', '#', 'D', 0x0E, 'g', 6, 'h', 0x0F, 'G', '2', 'O']

x = 'f'

for i in range(1, len(str1)):
if (isinstance(str1[i], str)):
if (isinstance(str1[i - 1], str)):
x += chr(ord(str1[i]) ^ ord(str1[i - 1]))
else:
x += chr(ord(str1[i]) ^ str1[i - 1])
else:
x += chr(str1[i] ^ ord(str1[i - 1]))

print(x)

首先把我们的数据输入,把16进制的数据写成python能识别的。查看第i位是不是字符串类型,不是就让第二位和第一位异或,输出加在x后面。

ord表示把字符串转化为十进制数字,因为ord()内只能是字符串类型,所以要先isinstance判断。

这个脚本其实有bug,连续两个数字就出错了。改正也很简单,最下面的else内改为

1
2
3
4
if (isinstance(str1[i - 1], str)):
x += chr(str1[i] ^ ord(str1[i - 1]))
else:
x += chr(str1[i] ^ str1[i - 1])

3.

得出结果,flag{QianQiuWanDai_YiTongJiangHu},完事!

Read More

逆向练习#3

2020-10-07

1.

老样子放进exeinfo中查看信息

image-20201007194820045

这次是有UPX壳的哦。于是从网上找了一个万能破壳器,壳这方面的知识有所欠缺。不过现在先就把脱壳后的文件丢进IDA吧。如果不脱壳,程序里什么字都看不见?

image-20201007195519315

2.

进去之后主函数的关键信息马上就露出来了

image-20201007195928668

F5之后

image-20201007195947826

能看出最后是判断V5和V4是否相同,v5就是输入值。v4是 HappyNewYear

这是道简单题,题目也明显提示了。把v4套个flag格式填题目,正确!

思考:壳是什么?脱壳的原理?

Read More

逆向练习#2

2020-10-07

[BUUCTF-Reverse2]

1.下载下来发现不是exe文件,放进Exeinfo PE中查看信息

image-20201006175641359

百度了一下elf文件是什么,不懂,先扔IDA里面试试。

2.放入IDA,发现有main函数,进去,flag一般都在main函数中。

image-20201006175920561

一眼就能看见关键信息,跟进F5。

Read More

逆向练习#1

2020-10-07

[BUUCTF-reverse1]

逆向复习

1.打开IDA导入文件(其实首先要放入Exeinfo PE中查看信息)

2.shift+f12搜索关键字符串 如

3.遇到问题 摸到字符串地址的时候 不能用f5查看伪代码 并且不能转换成框图 怀疑原因是ida没有识别出这些是函数

我曾经也遇到过这个问题。然而在百度的过程中,发现“Create Fun”方法并没有用。image-20201006171151959

实际上,跟进下面sub_1400118C0地址,就能找到函数所在。(已然是框图显示)

Read More

曾经的琐事(能留下来的,算是纪念)

2020-10-07

19.12.14

荒废

一看时间已经过了两个多月多一点了,现在才想起我这个博客来。两个月该说长还是短呢?高中的时候希望时间过得快,大学的时候希望时间过得慢,可世间的一切希望都不是如人所愿的。尽管我觉得浪费时间没什么不好的,但生活中的教训会把“原地踏步就是落后”的烙铁印在你的身体里面,你闲下一刻都会觉得不安,可你又仍然选择无所作为。慕强狗,我是个慕强狗,我也是个懒狗。说好听点是充满上进心,懂得忙里偷闲,但我不喜欢这样,因为我被他束缚住了。所以我选择去接纳我自己,在放弃自己“所谓为人”的尊严,懒狗也好,慕强狗也罢,实际上什么都没起作用,生活没有改变,我依然会困了想睡觉饿了想吃饭,满足了这些后依然感到全身幸福。

以上大概没什么意义,未来的我翻开这个博客大概看不出什么深意,因为我本就没有什么深意,但我知道我是个会过度解读的人,而过度解读的我会给自己强行安置上进心,这不坏。

最后想说的就是我不知道这些会给谁看到,我内心是隐隐希望有人能看到的,也是隐隐希望有人能看到这些字而欣赏我的,甚至来和我聊天、成为知音。这些是不会发生的,但这不影响它成为一个美好的希冀,纯属是因为自己小时候看太多漫画被营造的浪漫情结深深吸引从而无限神往。

还没到最后。我想做的其实是技术记录向博客,不过偶尔会扔些心得shit吧,虽然这比在微博开个小号产shit要麻烦得多。但是要随性一点对吧。

其实最尴尬的是以后我可能会给熟人分享自己的博客,这倒是个值得思考的问题,这些作话要是给熟人看到了,他是怎么想的?对,你看到了吧!这就是我,越是了解一个人,就会越看到这个人产出shit。这要怪我外有隐瞒内而充满倾诉欲望。有些时候我是满足的,其实只是我把欲望的洞口粉饰了下而已。并且我觉得,我现在做得很好,这大概就是我最大的错误,而却无法改正,因为我以此为生。

Read More

再次开始

2020-10-07

常见错误: 文章头添加,后面一定要带空格。

完全不懂网页的家伙做起了博客,要感谢前人与如今互联网。

(其实和别家的博客差不多吧?就是为了风格麻烦了点)

Read More

电脑重装后如何再搭建与备份hexo博客

2020-10-07

那时候就想着,这些东西应该丢不掉,然而再搭建还是有点麻烦。想着要不就用CSDN或者博客园吧,但果然还是写好直接上传更爽。

唉,痛快玩了几个月,总是试着挖掘出可有可无的答案。

实际上,我懂的东西不多,性格又懒散悲观,所以这一切结束后,还是得往前走。走啊,你妈的!

1.

下载Git 与 node配置环境 百度就可,一路next,也没什么需要特别注意的。傻瓜式一键配置。(不知道会不会出问题)

2.

配置name与email

1
2
git config --global user.name="你的名字"
git config --global user.email="你的邮箱"

Read More