buuctf刷题记录(5)

这篇博客记录了作者在buuctf平台上的刷题经历,涉及Youngter-drive、WUSTCTF2020的level2和GWCTF 2019的xxor三个挑战。通过逆向分析,作者揭示了如何处理UPX壳、分析多线程逻辑以及解决解密过程中的问题,最终获取到各个挑战的flag。
摘要由CSDN通过智能技术生成

Youngter-drive

exe文件,查壳:
在这里插入图片描述
发现是UPX壳,然后脱壳:
在这里插入图片描述
拖入IDA:
在这里插入图片描述
跟进,跳转到交叉引用列表:
在这里插入图片描述
确定,然后F5查看伪代码:
在这里插入图片描述
分析,多线程,第一个线程h0bject会执行StartAddress函数,第二个线程v2执行sub_41119f函数,然后挨个分析打开StartAddress函数
在这里插入图片描述
在这里插入图片描述
原因就是堆栈不平衡利用ida调堆栈就好:
在这里插入图片描述
在红色部分用alt+p,打开:
在这里插入图片描述
(需要打开堆栈指针)
在这里插入图片描述
更改以后,就可以正常打开函数;
在这里插入图片描述
逻辑就出现了,然后有坑的地方出现了,它是两个线程同时工作的,所以要交替处理数据,看另一个线程,发现没有处理任何数据
在这里插入图片描述
然后写脚本:

dec = "TOiZiZtOrYaToUwPnToBsOaOapsyS"
flag = ''
result = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"
for i in range(len(dec)):
    if i % 2 == 0:
        flag += dec[i]
        continue
    if(dec[i].isupper()):
        flag += chr(result.find(dec[i]) + 96)
    else:
        flag += chr(result.find(dec[i]) + 38)
print ('flag{'+flag+'}')

运行得到:
在这里插入图片描述
得到flag{ThisisthreadofwindowshahaIsES},不过我们输入的是30个字符,这里flag里面只有29个字符,最后一个字符应该都可以,不过正确答案是E,大不了一个个试就行。

flag{ThisisthreadofwindowshahaIsESE}

[WUSTCTF2020]level2

查壳:
在这里插入图片描述
32位,但是有UPX壳,脱壳:
在这里插入图片描述
脱壳之后,拖入IDA:
在这里插入图片描述
查看main函数:
在这里插入图片描述
这里我们得到flag:wctf2020{Just_upx_-d}
但是如果提交就会发现是不正确的,但是题目介绍上说,裹上flag提交,然后得到

flag{Just_upx_-d}

[GWCTF 2019]xxor

查壳:
在这里插入图片描述
无壳,64位,拖入IDA:
在这里插入图片描述
然后再函数窗口搜索main函数:
在这里插入图片描述
在查看伪代码:
在这里插入图片描述
在查看关键函数:
在这里插入图片描述
在这里插入图片描述
还有一个关键点:
在这里插入图片描述
查看sub_400686函数:
在这里插入图片描述
可以得到:

xorm[0] = 3746099070;
xorm[1] = 550153460;
xorm[2] = 3774025685;
xorm[3] = 1548802262;
xorm[4] = 2652626477;
xorm[5] = 2230518816;

然后脚本:

#include <stdio.h>
int main()
{
	unsigned int xorm[6];
	xorm[0] = 3746099070;
	xorm[1] = 550153460;
	xorm[2] = 3774025685;
	xorm[3] = 1548802262;
	xorm[4] = 2652626477;
	xorm[5] = 2230518816;
	int i = 0,j=0,sum;
	unsigned int temp[2] = {0};
	unsigned int data[4] = { 2,2,3,4 };
	for (i = 0; i < 5; i += 2)
	{
		temp[0] = xorm[i];
		temp[1] = xorm[i + 1];

		sum = 0x458BCD42 * 64;
		for (j = 0; j < 64; j++)
		{
			temp[1] -= (temp[0] + sum + 20) ^ ((temp[0] << 6) + 3) ^ ((temp[0] >> 9) + 4) ^ 0x10;
			temp[0] -= (temp[1] + sum + 11) ^ ((temp[1] << 6) + 2) ^ ((temp[1] >> 9) + 2) ^ 0x20;
			sum -= 0x458BCD42;
		}
		xorm[i] = temp[0];
		xorm[i + 1] = temp[1];
	}
	for (i = 0; i < 6; i++)
	printf("%x",xorm[i]);

}

运行得到:
在这里插入图片描述
再转化为字符串:
在这里插入图片描述
最后得到:

flag{re_is_great!}

1、GUI新手之——教你读懂GUI的M文件 10 2、GUI程序中改变current directory引起的问题 15 3、GUI中h0bject和handles 的区别 16 4、handles结构中句柄和对象的关联问题 17 5、Matlab利用定时器连续显示图片的问题 19 5-1、GUI中实现在图片任意位置上标注text 22 5-2、使用edit的另外一种callback 22 6、MATLAB 如何实现图像的任意裁减? 22 7、坐标轴标注刻度、网格、文字方向 23 8、Matlab中对uitable的操作:调节各列宽度,设定某列是可编辑的 24 9、将在Matlab下编写的GUI转成独立于Matlab平台的应用程序 25 10、要将用Matlab语言编写的函数文件编译成可独立执行的*.exe文件 28 11、matlab GUI程序转换成exe可执行文件 31 12、gui生成独立的应用程序的发布问题 33 13、GUI控制simulink模块及参数的综合实例! 34 13-1、在axes显示图像后,在图像上单击鼠标时,回调函数的定义规则和使用方法 35 14、如何在循环中加入waitbar,并在waitbar上添加‘取消’按钮 36 15、在matlab中对信号进行FFT变换 38 16、动态显示figure中曲线的x-y坐标值的一个函数 40 17、在GUI界面的打开按钮中,如何对文件进行操作 42 18、Matlab不同控件之间的数据传递问题 45 19、在edit box里输入相关数据后,直接按回车键,不用鼠标点击pushbutton 就可以直接执行 46 19-1 GUI使用editbox输入数据后如何自动清除数据 46 20、在GUI中,计算结果怎么用excel来保存到指定的文件夹中 47 21、如何得到popupmenu选项中最后一个字符串的VALUE值 49 22、回调函数互相调用的问题 49 22-2string和number相互转换的问题 50 等等问题的解决办法
回答:根据引用和引用的内容,buuctf web应该是指buuctf比赛中的一个web题目。其中可能涉及到Tornado作为非阻塞式服务器的使用,以及render函数的使用。而根据引用的内容,buuctf web题目可能存在一些漏洞,比如SSRF(Server Side Request Forgery)漏洞,可以通过对内网web应用实施攻击获取webshell。因此,在buuctf web题目中,可能需要掌握SSRF漏洞的利用和对web应用的渲染函数(render函数)进行利用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【CTF】buuctf web 详解(持续更新)](https://blog.csdn.net/m0_52923241/article/details/119641325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【BUUCTF刷题】Web解题方法总结(一)](https://blog.csdn.net/qq_45834505/article/details/114276572)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [BUUCTF的Web真题学习整理(一)](https://blog.csdn.net/qq_41429081/article/details/98042205)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值