记事本

第一次尝试forensic的题目

话说最近在做的ksnctf里面的题目种类还真是丰富啊,今天遇到一道forensic的题目,也是第一次做这类题。 题目给了一个img文件。我最开始是直接用mount挂载,发现有3个jpg文件,但分析不出来这些图片有没有隐写。 后来在网上搜了下,这道提不是stegano,而是forensic。按照推荐,我安装了autospy,它还需要Sleuth Kit。 安装玩autospy后,启动会得...

第一次尝试APK的题目

今天遇到一道APK逆向的题目,难度应该是入门级别的。由于之前见到这类题目直接就放弃了,这样还是不太好,于是试着从头开始,查资料把这道题解决了。 题目给的APK在这里。为了做这道题,我把apktool装好了,还翻墙把android sdk安上了。结果模拟器启动太慢了……以后有钱搞一台实机用好了。话说回来这次也基本没有用到模拟器,主要用了dex2jar和jd-gui。 将APK用unzip解...

Whitespace programming language

今天做题遇到了一道很奇怪的题目。他给了一个cpp文件 单看代码,似乎只是把普通的c++代码添加里很多tab,空格,并没有什么奇怪的地方。用g++编译后,执行得到说FROG_This_is_wrong_:(。看来是另有玄机。 后来搜里下,找到了一种奇葩的编程语言,whitespace。具体在这里有更详细的介绍。简单地说,它是只考虑空白字符,通过特定的组合对应特定的指令。 然后找这个语言的...

火车运煤问题

今天比赛有一道逻辑题,是这么说的(大意): 小明要穿越荒野,距离目的地有600公里。他身上最多可以携带300单位的补给,而且每走1公里会消耗1单位的补给。假设他可以在中途任意设置补给点存放补给。那么要走600公里,出发点至少要有多少单位的补给?如果出发点有3300单位的补给,他最远能走多远? 这类题目以前在网上看到过,不过当时是火车运煤。再次回顾整理了下,找到了思路。 首先,小...

shellshock

好吧,从这名字就知道是怎么回事儿了,前端时间爆出来的shellshock漏洞。我们需要执行cat flag就行。不过我开始试cat会说找不到文件,于是用/bin/cat了 $ env x='() { :;}; /bin/cat flag' ./shellshock

random

代码如下 #include <stdio.h> int main(){ unsigned int random; random = rand(); // random value! unsigned int key=0; scanf("%d", &key); if( (k...

passcode

代码如下 #include <stdio.h> #include <stdlib.h> void login(){ int passcode1; int passcode2; printf("enter passcode1 : "); scanf("%d", passcode1); ...

input

代码如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> int main(int argc, char* argv[], char* envp[]){ ...

flag

直接用IDA打开,居然连输出的字符串都找不到…于是通过strings发现文件是被UPX压缩了。下载UPX,用upx -d flag解压缩后,直接找到flag地址。或者再用strings

collision

代码如下 #include <stdio.h> #include <string.h> unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=...