SUSCTF re方向部分wp
2018-12-21 16:46
507 查看
SUSCTF re方向部分wp
1.Helloworld
拖进ida
方法很简单鸭直接上代码了,需要稍加注意小端序。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { int a[28]={0xF1, 0xE8, 0x81, 0xC8,0xD2, 0x81, 0xCF, 0xCE ,0xD5, 0x81, 0xC0, 0x81, 0xD3, 0xC0, 0xD5, 0xC8, 0xCE, 0xCF, 0xC0, 0xCD,0x81, 0xCF, 0xD4, 0xCC, 0xC3, 0xC4, 0xD3, 0x8F}; int i; printf("FLAG{"); for(i=0;i<28;i++) { a[i]^=0x12B9B0A1; printf("%c",a[i]); } printf("}"); return 0; }
simple-rev
这个。。。凯撒密码,可以写逆运算,当然直接百度在线解密一下也行
CTF在线工具
pyyy
反编译后用ue打开
代码很复杂。。。再加上我py不咋地,看着有点懵逼,但仔细看看,只要吧验证的那段全都删掉就可以了
然后百度在线py,跑一下就行了。
accumulator
拖进ida
首先可以看出v3就是flag的长度
中间有SHA512加密(不懂但是可以继续往下看)
发现其实关键代码在4008C0那
点进去
通过调试其实可以发现6013C0和6013B0都是从0开始
那么逻辑就很明显了,再结合一下题目标题的提示。
其实601080里各项放的就是flag与前面各项的和
减一下就能出flag了
上代码
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { int a[]={ 195, 255, 493, 584, 799, 929, 946, 1086, 1180, 1184, 1421, 1595, 1805, 1846, 2081, 2320, 2430, 2605, 2727, 2972, 3213, 3403, 3418, 3649, 3712, 3950, 3989, 4193, 4228, 4394, 4523, 4624, 4706, 4935, 4999, 5072, 5106, 5291, 5510, 5536, 5644, 5751, 5993, 6118, 6126, 6198, 6211, 6410, 6469, 6609, 6647, 6752, 6978, 7010, 7053, 7106, 7274, 7468, 7563, 7673, 7706, 7956, 8146, 8187, 8257, 8333, 8398, 8469, 8592, 8640, 8693, 8742, 8793, 8844, 8901, 8953, 9007, 9062, 9113, 9161, 9215, 9317, 9374, 9429, 9483, 9540, 9591, 9644, 9692, 9741, 9792, 9846, 9944, 9996, 10045, 10144, 10195, 10246, 10294, 10350, 10402, 10450, 10551, 10652, 10750, 10849, 10946, 11045, 11096, 11147, 11202, 11304, 11353, 11451, 11507, 11605, 11653, 11753, 11852, 11900, 11951, 12052, 12105, 12161, 12259, 12360, 12409, 12461, 12563, 12664, 12718, 12775, 12823, 12921, 12970, 13020, 13071, 13173, 13227, 13276, 13374, 13422, 13521, 13569, 13667, 13718, 13771, 13873, 13972, 14029, 14080, 14179, 14278, 14377, 14432, 14482, 14531, 14579, 14627, 14679, 14732, 14789, 14840, 14894, 14951, 15052, 15154, 15210, 15263, 15314, 15363, 15460, 15509, 15610, 15666, 15763, 15818, 15916, 15968, 16018, 16075, 16132, 16233, 16288, 16386, 16443, 16543, 16600, 16655, 16703, 16801, 16858, 16955, 17005, 17056, 17153, 17250, 17375 }; int b=sizeof(a)/sizeof(int); int i; for(i=b-1;i>0;i--) { a[i]-=a[i-1]; } for(i=64;i<b;i++) { printf("%c",a[i]); } return 0; }
运行一下就能看到里面的flag
gccc
发现是C#
直接换工具反编译
emmmmmmm
爆破吧
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> int main() { unsigned char a[32]={0xa4, 0x19, 4, 130, 0x7e, 0x9e, 0x5b, 0xc7, 0xad, 0xfc,0xef, 0x8f, 150, 0xfb, 0x7e, 0x27, 0x68, 0x68, 0x92, 0xd0, 0xf9, 9, 0xdb, 0xd0, 0x65, 0xb6, 0x3e, 0x5c, 6, 0x1b, 5, 0x2e}; unsigned char b[32]={0}; unsigned int num,num3,index=0,i; for(i=2147483648;;i++) { num=i; num3=0; index=0; while(num!=0) { b[index]=a[index]^(num&0xFF)^num3; num3^=a[index]; index++; num>>=1; } if(!strncmp("FLAG{DO YOU KNOW GRAY",b,21)) { printf("%s\n",b); } } return 0; }
一开始用strncmp是比较FLAG{然后跑出来第一个结果就是FLAG{DO YOU KNOW加上一堆乱码,然后逐步比较定下前面21个数。
不出一会跑出答案。
下面五题明天再说写wp
//最后俩题mov 和a maze 已经超出我的。。。能力范围了。。。
//还是太菜了
//2333
相关文章推荐
- SUSCTF re方向
- SKCTF的部分wp
- IceCTF 部分WP
- JARVIS OJ re方向部分题解
- SUSCTF|WP:CrakeMe 一道android逆向
- python 使用re.search()筛选后 选取部分结果的方法
- 西普部分CTF题目(web)(持续更新)
- 声明:关于该博客部分Java等方向知识参考来源的说明
- 0ctf 部分web writeup.md
- 红亚2015-3月杯季赛 CTF题部分writeup
- hgame-2018 CTFwp(杭电信安)week3
- 广东省强网杯CTF Web部分详解
- 第7部分 程序执行方向:程序控制结构
- 西普部分CTF题目(逆向)
- HCTF GAME RE-Windows礼包
- 声明:关于该博客部分Java等方向知识参考来源的说明
- WP学习笔记(5)MVVM入门 第二部分DependencyProperty
- 【CTF】RE Backdoor CTF 2015 TEAM 600
- hgame17_re 部分writeup(持续更新)
- 网络安全实验室CTF练习部分题目(持续更新)