随笔分类 -  XCTF攻防世界

初级已完,正在每天一篇高级中
摘要:第一次用python3生成的pyc出现了很多关于版本的问题,所以第二次使用python2生成pyc 按照题上给出的数据,首先base64解密,然后解压生成out.pyc文件 uncompyle6反汇编生成的py文件是乱码,究其原因out.pyc文件缺少pyc的文件头,用十六进制工具添加文件头:03 阅读全文
posted @ 2020-02-05 14:23 黑冰Lisa 阅读(996) 评论(0) 推荐(0)
摘要:太无语了,不像逆向,像密码学的题 用010 Editor打开 图1 用16进制工具把行宽调为60也能得到 图2 所以这道题的16进制转ASCII码又是一堆16进制,那我们照葫芦画瓢把得到的16进制转ASCII 得到了很奇怪的输出,HH4$HH重复出现,这什么东西陷入了沉思...... 图3 回去看题 阅读全文
posted @ 2020-02-05 14:22 黑冰Lisa 阅读(474) 评论(0) 推荐(0)
摘要:逻辑很简单,如果sub_4006FD函数返回假则返回Nice! 图1 进入sub_4006FD函数,加密过程也很简单,这里值得注意的有两点 一、8*(i%3)是二维数组的第一个参数,这里是取v3的地址所以*8的是数组长度,不是选择8倍于它的数组。换成python里直接写用数组时,就可以把这个*8省略 阅读全文
posted @ 2020-02-05 14:21 黑冰Lisa 阅读(372) 评论(0) 推荐(0)
摘要:之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。 这道题无疑是入门题里最难的,程序运行内容和题目提示的‘迷宫’没有关系 图1 找到关键代码,发现v5有四种情况O o . 0,每种情况对应一个函数,执行完函数后goto_LABEL_14。 输入O,因为(*a1) 阅读全文
posted @ 2020-02-05 14:20 黑冰Lisa 阅读(1581) 评论(0) 推荐(0)
摘要:之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。 先将pyc弄回py pip install uncompyle uncompyle6 11.pyc > 11.py 图1 输入的字符串经过:异或32、加16、base64加密,最后和correct作比较,如果相 阅读全文
posted @ 2020-02-05 14:19 黑冰Lisa 阅读(385) 评论(0) 推荐(0)
摘要:之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。 打开看见了可疑的三串字符,s字符串的长度和flag内容的长度一样 图1 图2 找到关键代码页面,打开/tmp/flag.txt文件,将重新交换顺序的s字符串扔到flag文件里 图3 根据重新交换的方式写出解密代 阅读全文
posted @ 2020-02-05 14:17 黑冰Lisa 阅读(609) 评论(0) 推荐(0)
摘要:这道题要不要做.....?算了不做了,我们来一起看看writeup,分析writeup。 图1 如果检测是动态调试就break出调试,中断指令是int 3那么在od里将int 3指令nop掉,继续往下走到sub_401000函数,函数的参数ipMem在MessageBoxA里被调用了,那么很可能ip 阅读全文
posted @ 2020-02-05 14:16 黑冰Lisa 阅读(277) 评论(0) 推荐(0)
摘要:之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。 找到关键代码页,有一个加密函数decrypt,函数的参数&s和dword_8048A90写在了.rodata 如果输入的ws等于加密过后的s2那么输出success 图1 进入decrypt函数,查看加密过程。 阅读全文
posted @ 2020-02-05 14:15 黑冰Lisa 阅读(368) 评论(0) 推荐(0)
摘要:之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。 这道题什么鬼啊,也不用这么简单吧.. 阅读全文
posted @ 2020-02-05 14:12 黑冰Lisa 阅读(399) 评论(0) 推荐(0)
摘要:之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。 打开关键代码页面,要成功运行到success函数,需要避开方框内的雷,sub_4007C0是失败函数 图1 来看看我们输入的v3怎么才可以得到flag 一、长度等于v8,变量v8的长度是17 图2 二、s[i] 阅读全文
posted @ 2020-02-05 14:11 黑冰Lisa 阅读(917) 评论(1) 推荐(0)
摘要:之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。 题目说是加壳,那么拖进工具我们看看有什么信息。 好啦,upx壳,脱壳命令和工具下载网址也给我们了 图1 然后用ida打开便能看见flag了 图2 这里除了用工具脱壳外,我们还可以手工脱壳,因为upx是一种简单的 阅读全文
posted @ 2020-02-05 14:10 黑冰Lisa 阅读(474) 评论(0) 推荐(0)
摘要:之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。 添加stdlib.h头文件,运行程序输入三个参数,输入参数数量不等于3输出what?退出程序 满足三个要求的参数最后经过运算得到hash,hash边是我们要找的flag 图1 第一个和第三个参数已经给我们了分别 阅读全文
posted @ 2020-02-05 14:09 黑冰Lisa 阅读(607) 评论(0) 推荐(0)
摘要:之前文章讲过的技巧和知识,就不再详细描述了,如果有不明白的地方建议按照做题题目顺序查看。 找到关键代码页面。注意,scanf接收的是字符串,而strcmp比较的是字符串的十六进制。v13的值给了是437261636b4d654a757374466f7246756e,do函数里面是把v9的每一个字符串 阅读全文
posted @ 2020-02-05 14:08 黑冰Lisa 阅读(927) 评论(0) 推荐(0)
摘要:运行程序,第一感觉这玩意儿怎么像电路图开关,看下面的英文说什么,果然玩的是开关游戏,游戏的意思是从上到下有8条线路,如果选择n那么n-1、n、n+1线路的状态都会发生改变,直到8条线路的开关状态都是on时,游戏通过。 图1 就在我试玩游戏,单个输入1、2、3,同时输入1 2 3 ,迭代输入2 3 4 阅读全文
posted @ 2020-02-05 14:07 黑冰Lisa 阅读(1007) 评论(0) 推荐(0)
摘要:运行程序 32位ida打开,shift+f12查看运行时的中文,这里双击flag get字符串进入rdata段 双击后面的函数,进入text段,小的窗口视图里可以看见汇编代码调用函数的句子 右边的即是鼠标滑到函数上面出现的小窗口 tab键查看伪代码,v8是我们输入的,v4是需要相比较的,flag g 阅读全文
posted @ 2020-02-05 14:05 黑冰Lisa 阅读(1396) 评论(0) 推荐(0)