今天白嫖了一个脚本不知道哪里有问题望大佬指点一下
1 | # -*- coding:utf-8 -*- |
1 | # -*- coding:utf-8 -*- |
1.打开附件看到
1 | ys~xdg/m@]mjkz@vl@z~lf>b |
2.根据题目意思
想想异或
可以想到异或运算(a^b=c,b^c=a,a^c=b)
一般的flag结尾都是},先让b和}异或
1 | #include <stdio.h> |
得到31
3.再用31依次和字符串异或
1 | #include <stdio.h> |
1 | flag{x0r_Brute_is_easy!} |
1.发现是一个百层压缩
2.解了几次发现都有密码上脚本
1 | import zipfile |
3.发现问题改进下脚本
1 | import zipfile |
完成解压
3.打开最后一个文件
4.可以看到密码加密码和png可以想到把base64都拼在一起可能会得到一个png的图片,拼接后:
5.得到一个二维码:
1 | flag{_PASSWORDs_is_fl@g!_} |
1.有题目已知前三位是188,而且是11位
用脚本爆破:
1 | import hashlib |
1 | flag{18876011645} |
1.先下载IDA
2.用IDA打开exe
3.用shift+F12,查看字符串(不了解IDA快捷的可以先了解一下IDA的快捷键)
4.可以看到如下:
1 | flag{this_Is_a_EaSyRe} |
1.用IDA打开exe
2.用shift+F12,查看字符串
3.双击进入
4.用x键查看字符串所在的函数
5.双击击进去
6.用快捷键F5将其反编译代码的形式
7.我们现在对代码进行分析(鼠标右键点击Edit comment可以添加注释,R键转换成字符串,H键转换成10 进制)
8.我们双击str2,进入汇编见面
1 | flag{hell0_w0rld} |
1.用IDA打开exe
2.用shift+F12,查看字符串
可以看到flag的后半部分,双击right flag进入汇编界面,依旧re1的操作进入到反编译的界面(或者你可以直接找main函数,一般关键信息都在main函数里)
3.进行分析
很明显就是把flag中的i和r换成了1;
4.先双击flag
其实初始的flag已经出来了,替换一下
1 | flag{hack1ng_fo1_fun} |
1.先运行一下exe
再enter后就退出了
2.用IDA 打开
3.shift+F12,查找字符串
1 | flag{49d3c93df25caad81232130f3d2ebfad} |
1.先运行exe
输入任何东西都会闪退
2.用IDA分析(在这里说明一下IDA有32和64 位,可以用ExeinfoPe查看,不过ExeinfoPe的主要功能是查看壳)
可以看到upx的壳
3.用ExeinfoPe查壳
可以看到32位用,有upx,用upx工具脱壳
4.用upx工具脱壳
1 | upx -d + 文件地址 |
5.再将脱壳后的exe放入IDA
恢复正常
6.还是先shift+F12,找关键字符串
看到关键字符串‘this is true flag!’,双击进入,按同样的步骤找到反编译后的代码
进行分析
1 | flag{HappyNewYear!} |
1.先用IDA打开
2.找到关键词,按相同步骤找到函数并进行分析
3.先双击global进入汇编界面
4.在双击划红线的部分,找到加密后的密文
在密文上使用shift+E提取密文,再将其转到16进制的形式(既选择hex)
5.最后编写代码解密
1 | #include<stdio.h> |
1 | flag{QianQiuWanDai_YiTongJiangHu} |
1.先运行一下exe
还是输入enter就退出了
猜测肯定与base64 加密有关,双击right flag,进入汇编界面,同样步骤进入反编译后的界面,进行分析。
1先进入sub_4110BE
2整体分析完毕
2.双击str2,进入汇编界面查找str2的字符串
3.先用脚本偏移回来
1 | #include<stdio.h> |
4.再用在线base64解码
1 | flag{i_l0ve_you} |
1.下载文件发现是apk文件(一般apk都是用jadx 打开)
2.先用jadx打开(注:一般主要的内容都在MainActivity中)
3.进入MainActivity可以看到:
1 | flag{7631a988259a00816deda84afb29430a} |
1.先运行exe,看到:
2.由上下左右的信息,可以猜测是个迷宫题
3.再用IDA打开
这里补充一点经验,一般迷宫都是方形的。
4.3.按原步骤找到主函数,并进行分析
5.构造迷宫:
1 | * 1 1 1 1 |
明显是:下下下右右上上右右下下下(222441144222)
1 | flag{222441144222} |
1.打开IDA
2.按原步骤找到主函数,并分析:
可以找到关键函数
3.解题脚本:
1 | #include<stdio.h> |
1 | flag{KLDQCUDFZO} |
1.先用虚拟机运行一下:
没什么线索。
2.再用IDA打开,shift+F12:
3.按原步骤找到反编译的原函数,并进行分析
进入如关键函数
进入get_flag
双击f1进入,汇编界面
得到flag的第一部分
编代码得到第二部分
1 | #include <stdio.h> |
运行后得到
1 | hate_me? |
拼接一下
1 | flag{do_not_hate_me?} |
1.java一般是先xxx.java文件,经过javac.exe编译后的到xxx.class文件,java的反编译可以用jd-gui(纯反编译java)后jadx(因为apk大多数都是用java写的)打开
2.下载附件看到xxx.class,可以知道要用java反编译的工具,以上两种都可以。
3.思路很明显了,将key先和32异或再-@。
1 | #include <stdio.h> |
1 | flag{This_is_the_flag_!} |
1.先运行exe
2.猜测可能是点击很多次次才能出来,这里我没有试,但是我在这里附上一个鼠标自动点击脚本
1 | import pyautogui |
3.我是直接用IDA打开
shift+F12查找字符串
可以找到flag
1 | flag{%d%d2069a45792d233ac} |
1.先运行一下exe
我试了一下发现刮不动
2.用IDA打开
猜测跟base加解密有关
分析完毕,这里是纯手算的。这里给一个模拟排序函数的脚本
1 | #include <stdio.h> |
1 | flag{UJWP1jMp} |
1.直接放入IDA发现有壳与新年快乐同理去脱壳
2.脱壳后安原步骤找到main函数,并分析
3.现在只要编脚本得到v5就可以了
1 | #include <stdio.h> |
1 | flag{U9X_1S_W6@T?} |
1.发现是apk文件用jadx打开
2.还是找到 MainActivity和在IDA中找到main一个意思
3.
4.编个脚本模拟它
1 | #include <stdio.h> |
1 | flag{59acc538825054c7dk4b26440c0999dd} |
1.pyc文件可以用在线pyc的反编译软件py反编译
1 | # Visit https://www.lddgo.net/string/pyc-compile-decompile for more information |
反编译后的结果(加注释后)
2.用脚本进行解密
1 | #include <stdio.h> |
1 | flag{Just_Re_1s_Ha66y!} |
1.apk文件,跟前面的apk题一样找到主要函数
1 | package com.example.findit; |
2.模拟一下
1 | #include <stdio.h> |
1 | flag{c164675262033b4c49bdf7f9cda28a75} |
1.就是测试一下你的nc
1 | nc +靶机地址 (在linxs中ip与端口间没有冒号) |
2.pwn题一般都是动态地址,所以每次的flag都是不一样的
1.先进行一波常规操作
2.再用IDA打开shift+F12直接可以查看后门
找到后门的地址
3.找到main函数
4.我们要考栈溢出一直覆盖到后门(shell),看看要覆盖多少;
5.在查看system函数的地址
6.构造exp
1 | from pwn import* |
本地成功换成远程
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
1 | $ hexo new "My New Post" |
More info: Writing
1 | $ hexo server |
More info: Server
1 | $ hexo generate |
More info: Generating
1 | $ hexo deploy |
More info: Deployment