[WUSTCTF2020]level11,[GUET-CTF2019]re1

2024-02-27 05:04

本文主要是介绍[WUSTCTF2020]level11,[GUET-CTF2019]re1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

没有壳,64位ida打开

主函数里有很明显的flag

for ( i = 1; i <= 19; ++i ){if ( i & 1 )printf("%ld\n", (unsigned int)(ptr[i] << i));elseprintf("%ld\n", (unsigned int)(i * ptr[i]));}return 0;
}

简单写一个脚本逆向

有一个if条件判断:if ((i+1) & 1):。这里使用了位与操作&来判断索引i+1是否为奇数。如果是奇数,执行条件语句的第一部分。

a = [198,232,816,200,1536,300,6144,984,51200,570,92160,1200,565248,756,1474560,800,6291456,1782,65536000]for i in range(19):if ((i+1) & 1):print(chr(a[i] >> (i+1)),end="")else:print (chr(a[i] // (i+1)),end="")

upx壳

 

关键加密函数

求出a1即可

可写出代码

第六个不知道0-9一个一个试试

flag=''
flag+=chr(166163712//1629056)
flag+= chr(731332800 // 6771600)
flag += chr(357245568 // 3682944)
flag += chr(1074393000 // 10431000)
flag += chr(489211344 // 3977328)
flag += chr(518971936 // 5138336)
flag+='?'
flag += chr(406741500 // 7532250)
flag += chr(294236496 // 5551632)
flag += chr(177305856 // 3409728)
flag += chr(650683500 // 13013670)
flag += chr(298351053 // 6088797)
flag += chr(386348487 // 7884663)
flag+= chr(438258597 // 8944053)
flag+= chr(249527520 // 5198490)
flag+= chr(445362764 // 4544518)
flag+= chr(981182160 // 10115280)
flag+= chr(174988800 // 3645600)
flag+= chr(493042704 // 9667504)
flag += chr(257493600 // 5364450)
flag+= chr(767478780 // 13464540)
flag+= chr(312840624 // 5488432)
flag += chr(1404511500 // 14479500)
flag+= chr(316139670 // 6451830)
flag+= chr(619005024 // 6252576)
flag+= chr(372641472 // 7763364)
flag+= chr(373693320 // 7327320)
flag+= chr(498266640 // 8741520)
flag+= chr(452465676 // 8871876)
flag+= chr(208422720 // 4086720)
flag+= chr(515592000 // 9374400)
flag+= chr(719890500 // 5759124)
print(flag)#flag{e?65421110ba03099a1c039337}

这篇关于[WUSTCTF2020]level11,[GUET-CTF2019]re1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/751304

相关文章

[WUSTCTF2020]level3

base64换表 但是这的表有一个引用 模拟执行 #DRKCTF{}a='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'flag=[ord(i) for i in a]for i in range(0,10):flag[i],flag[19-i]=flag[19-i],flag[i]

攻防世界-逆向re1

攻防世界-逆向re1 先脱壳,用exeinfope 程序是32位就用32位的IDA 2.用IDA 打开,进一步分析 搜索字符串,因为题目程序有:做一道逆向吧 3.找到之后想看伪代码,被提示说请将光标放在函数上,用跳转->交叉引用列表 4.跳转完成后得到这个 5.按F5生成伪代码 6.分析伪代码 strcmp函数是string compare(字符串比较)的缩写,用于比较两个字符串并根

WIFI万能钥匙CTF RE1——WannaLOL

发现自己似乎很久没有写过东西了,最近认识了很多大佬们,意识到差距真tm巨大,要补的东西还有很多,其实不写博客学习还是要继续的,不过为了潜意识里联系上某位大佬,还是写点东西了吧。 这是2017年的WIFI万能钥匙逆向题的一道,没有花没有反调试,(最近做题老喜欢爆破,所以就选这道题了)先看题目: 对的,没错,error了,也是一个很基础的调用messagebox的程序,找到输入内容的GetDlgI

CTF逆向 re1-e7e4ad1a.apk

在这里分析一下2016ctf的一道逆向题,apk包:re1-e7e4ad1a.apk。 首先使用adb将apk文件发送到真机模拟器中(模拟器根据自己,也可以使用电脑上的模拟器,这里我使用的是真机模拟器)。界面如下: 从这个APP的界面可以看到需要输入编号和密码,然后单击sign。在这里我们要做的就是寻找到这个编号和密码。 使用jeb打开re1-e7e4ad1a.apk文件,看一下整体的结

[BUUCTF]-PWN:wustctf2020_easyfast解析

又是堆题,查看保护 再看ida 大致就是alloc创建堆块,free释放堆块,fill填充堆块,以及一个getshell的函数,但要满足条件。 值得注意的是free函数没有清空堆块指针 所以可以用double free 有两种解法 解法一(double free): 完整exp: from pwn import*context(log_level='debug')p

攻防世界re1

shift F12后找到flag 双击 ctr x 获取当前代码地址,点击,出现以下, 点击查看 F5查看伪代码 可以发现v4与flag有关 查看xmword_413E34 R转换16进制数 A合并后出现

buuctf [WUSTCTF2020]dp_leaking_1s_very_d@angerous

文件下载下来,把后缀名改为txt,发现 是一个已知e,n,c,dp的rsa题 那就用python写一个来解 #已知e,n,dp,c#dp × e= x × (p−1)+1#dp < p−1#x < e #x ∈ ( 0 , e )#p-1=(e*dp-1)/ximport gmpy2e = 65537n = 15680834359857877495737569681518898

buuctf[GUET-CTF2019]zips

buuctf[GUET-CTF2019]zips 题目描述题目分析解题过程 题目描述 给了一个压缩文件其他的啥也没有 题目分析 尝试打开文件,发现需要密码,应该是一道压缩文件加密的题目。 解题过程 使用archpr工具爆破6位数字密码,成功解开了222.zip的压缩包 然后用winhex看了下,里面有一部分时伪加密,修改文件头 修改后成功解密 得到压缩文件和命令文件,其

BUUCTF misc 专题(84)[GUET-CTF2019]zips

下载附件,解压到后面是个加密的111.zip文件 爆破出密码 解压出两个文件   发现setup.sh是个伪加密,将9改为0   解压出文件,看sh文件 终端运行    看来这应该是以时间戳为密码,但我们并不知道当时的时间是什么时候,只能看一下压缩包中文件创建的时间,将系统时间改为创建时间,再在终端运行该命令 发现基本是以15580开头的,于是进行掩码爆破,小数

ctf题集【BUUCTF MISC】[GUET-CTF2019]zips1

下载文件后,得到一个222.zip文件,老规矩,查看属性并扔进010,未发现伪加密,随机扔进ARCHPR爆破一下 解压后,得到第二个解压缩文件111.zip,扔进010查看,应该是个伪加密,通过ZipCenOp看一下能否解析 成功破解,得到第两个文件 其中脚本意思是,flag.zip的密码是一个时间戳,把这个代码输出一下看看格式 爆破了一下,没成功。看了大佬的wp,这里