今天白嫖了一个脚本不知道哪里有问题望大佬指点一下
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* |

本地成功换成远程