2021 ISCC re和签到pwn wp
2021 ISCC逆向wp和签到pwn前言:五一来打的这个比赛,上题是分批次的,后面要军训了,难受。这个比赛好像是说原题很多,也不知道了,反正没做过。不得不说,这个比赛py有点多,哈哈哈。
Garden签到题,pyc用uncompyle6反编译一下,得到py文件,分析一波就是一个异或。写出脚本
l='2(88\x006\x1a\x10\x10\x1aIKIJ+\x1a\x10\x10\x1a\x06'
for i in l:
print(chr(ord(i)^123),end='')
//ISCC{Makka2021Pakka}
Mobile Easy安卓逆向,比较坑的是有一个字符代换,交了半天都不对,模拟器里面又是right。
先主函数分析一波然后分析secondStr,发现是aes的ECB模式没找到好的脚本,自己写的那个好像不行,哈哈哈,还是线上解吧https://the-x.cn/cryptography/Aes.aspx然后thirdStr,解就行了算出来是:Gg9hwlTP
然后就是replace了
s='+ ...
mrctf
mrctf的wp后面来做的题。做了2道半,后面就是看wp学习了,复现了5道,学到了很多新知识,其他人wp写的很详细,就不贴图片了,太懒了。
其他人的wp
官方
usher
wjh
bxb0
real_signIn变表base
import base64
import string
str1 = "tvjdvez7D0vSyZbnzv90mf9nuKnurL8YBZiXiseHFq=="
string1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/"
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
print (base64.b64decode(str1.translate(str.maketrans(string1,string2))))
# MRCTF{wElc0Me_t0_MRCTF_2o21!!!}
d ...
虎符ctf的wp&红明谷杯的wp
虎符ctf的wp&红明谷杯的wp大型比赛的题确实有难度,赛后看wp学习了一下,不得不说自己做的时候真的很懵逼。吐槽一下go语言题太多了。。。
gocrypt输入的flag要满足go语言的regexp_MustCompileregexp___Regexp__FindStringSubmatch规定的格式,然后两轮xtea加密。
动调来看看整个过程。
cherk函数,go语言相关知识点https://ask.csdn.net/questions/1032787,https://blog.csdn.net/weiyuefei/article/details/78589764所以说flag要满足类似的形式flag{aaaaaaaa-aaaa-aaaa-1111-111111111111},继续往下看然后回到主函数,继续调几步就是变了delat的xtea加密函数进入函数,会很明显的知道这是个xtea加密,所以只需要找到key和delat和加密后的数据存放的位置就可以了在后面下一个断点,看看加密数据存放的位置后面又有一组xtea加密,就直接跳过了,加密后的数据也是在那个位置。就直接看比较函 ...
win32编程学习笔记
win32 API编程学习笔记win32的变量类型https://www.cnblogs.com/happycat1988/archive/2013/04/14/3020820.html
win32中的宽字符视频主要讲了MessageBox()这个API函数吧
#include<stdio.h>
#include<windows.h>
int main()
{
/* int MessageBox(
HWND hWND, //handle to owner window 句柄
LPCSTR IpText, //text in message box 内容
LPCSTR IpCption, //message box title 窗口的标题
UINT uType //message box style 窗口的格式
)
*/
// CHAR message[]="hellow world"; ...
nepctf&dasctf的wp
前言:最近打了这两个比赛,赛后就把一些题复现了一下,还是学到很多吧。
nepctfhardcsharp文件是用C#写的,用aes解密,网上解密即可dnSpy打开
先获得key
#include<stdio.h>
#include<windows.h>
//badbadwomen!!!!!!!!!!!!!!!!!!!!!
int main()
{
int a[32]={81,82,87,81,82,87,68,92,94,86,93,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18};
int i;
for(i=0;i<32;i++)
{
printf("%x",a[i]^51);
}
}
//key=626164626164776f6d656e212121212121212121212121212121212121212121
然后网上解密就行 ...
DLL注入技术
逆向工程核心原理DLL注入前言:学这一部分知识最好先学一部分win32API编程的知识,分析源代码就会容易一些。
DLL注入概念
DLL注入指的是向运行中的其他进程强制插入特定的DLL文件。从技术细节来说,DLL注入命令其他进程自行调用LoadLibrary()API,加载用户指定的DLL文件。DLL注入与其他一般的DLL加载在于,加载的目标进程是其自身或其他进程。
DLL注入技术的作用
DLL注入技术可以被正常软件用来添加/扩展其他程序,调试或逆向工程的功能性;该技术也常被恶意软件以多种方式利用。
三种DLL注入的方法:
创建远端线程(CreateRemoteThread()API)
使用注册表(AppInit_DLLs值)
消息钩取(SetWindowsHookEx()API)
通过修改pe文件来加载DLL文件
创建远端线程(CreateRemoteThread()API)大概原理就是通过CreateRemoteThread()API来使目标进程调用LoadLibrary()API,加载我们写好的DLL。
InjectDll.exe这个程序用来像目标进程注入我们的DLL,源代码 ...
hgame2021的wp
hgamere方向的,太菜了,很多题都做不来。
week1helloReida打开,通过动调找到加密位置,也不能完全动调样,会出一些问题。脚本如下
#include<stdio.h>
int main(void)
{
int code[23]={ 0x97, 0x99, 0x9C, 0x91, 0x9E, 0x81, 0x91, 0x9D, 0x9B, 0x9A,
0x9A, 0xAB, 0x81, 0x97, 0xAE, 0x80, 0x83, 0x8F, 0x94, 0x89, 0x99, 0x97};
int key[23]={0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,
0xf0,0xef,0xee,0xed,0xec,0xeb,0xea};
int i;
for(i=0;i<22;i++)
{
pr ...
《逆向工程核心原理》20章内嵌补丁练习
内嵌补丁练习参考资料:《逆向工程核心原理》20章。
样本:找了很久,网上基本没人发到网上,发了的都是要钱的(难受),只不过还是在吾爱破解注册了个号下载下来了(花了19块,QAQ)。所以这里给一个我的百度网盘连接给所有爱学习的人https://pan.baidu.com/s/1GlrUwfRX1aMBDLr54B1iLQ 提取码yeah
目的:通过内嵌补丁来修改样本中的两个字符串。
什么叫内嵌补丁先给一张图大概意思就是,有些时候我们不能直接改代码,可能是因为代码被加密了,或者有其他一些检查,于是我们就需要通过插入补丁代码,让程序运行同时,也运行我们的补丁,然后这个补丁就可以来修改代码(这个样本就是通过修改解密后的代码达到修改字符串的目的)。
分析样本先打开文件,会跳出这两个窗口,我们就是要改变这两个窗口的字符串
然后放入x32dbg分析,先f9来到EP处然后跟进call unpackmecrc.4010E9这个函数,进去后再跟进call unpackmecrc.40109B这个函数,也就来到了解密函数。可以先看看经过两次解密后004010F5–00401249大概是什么内容,可以看到窗 ...
一些常用的壳
一些常用的壳前言:最近做到了一道题,然后因找不到工具来脱壳,然后就学了手动脱壳。关于手动脱壳的一些知识点吧,而且这还是syc三面的一个任务,当时做的懵懵懂懂的。主要就在于找到OEP,然后dump,然后修复ITA表,然后也看了一些资料。
查找的资料:《逆向工程核心原理》第二部分,esp定理(感觉就像堆栈平衡差不多)。
参考文章:https://www.cnblogs.com/hongren/p/12633232.html,https://blog.csdn.net/qq_42967398/article/details/94761189然后两篇文章主要不同点还是在dump程序和,修复ITA的工具不同吧。个人推荐xdbg自带的那个,因为方便。
nspack又称北斗壳,话不多说直接开始。样本是xctf高阶的crackme,然后是快速找OEP。
载入后按f9,然后两下f8。然后f9,就可以看到popfd然后找到了OEP现在开始修复ITA。到这里,壳就脱完了。
UPX以xctf-Windows_Reverse1为例,是upx壳。
方法1这里先用快速查找OEP的方法。
同样,先下硬件断点然后f9就 ...
xctf的wp
Challenge area1.elrond32文件下载下来,放到ida里面看,找到关键代码。
大致分析,先求key,再找v2,再异或。写出脚本
#include<stdio.h>
int main(void)
{
int key[9]={105,115,101,110,103,97,114,100};
int v2[33]={ 0xf,0x1f,0x4,0x9,0x1c,0x12,0x42,0x9,0xc,0x44,
0xd,0x7,0x9,0x6,0x2d,0x37,0x59,0x1e,0,0x59,0xf,0x8
,0x1c,0x23,0x36,0x7,0x55,0x2,0xc,0x8,0x41,0xa,0x14,};
int i;
for(i=0;i<33;i++)
{
printf("%c",key[i%8]^v2[i]);
}
}
得到flag{s0me7hing_S0me7 ...