BUU刷题日记-我吃三明治
导语pillar的刷题日记
我吃三明治开局一张jpg,用010edito打开
发现unknownpadding,开到FF D8 和JFIF,可知是另一张图片,保存出来,发现是同一张图靠的近了一点
而unknownpadding中间还有一段,看起来是base32,也确实是。
flag{6f1797d4080b29b64da5897780463e30}
brute_force
导语DVWA(damn vulnerable web application)是学习web安全的非常简单愉快的入门手段,今天先总结一下暴破(Bruteforce)
low看看源码
<?phpif( isset( $_GET[ 'Login' ] ) ) { // Get username $user = $_GET[ 'username' ]; // Get password $pass = $_GET[ 'password' ]; $pass = md5( $pass ); // Check the database $query = "SELECT * FROM `users` WHERE user = '$user' AND password = '$pass';"; $result = mysqli_query($GLOBALS["___mysqli_ston"], $qu ...
BUU刷题日记_[ACTF新生赛2020]NTFS数据流1
导语pillar的刷题日记
[ACTF新生赛2020]NTFS数据流1知识点在于NTFS数据流,搜一下可以知道
https://www.qingsword.com/qing/812.html
于是用lads查看一下。
可以看到293.txt有NTFS数据流
于是开之。
ACTF{AAAds_nntfs_ffunn?}
BUU刷题日记_Mysterious
导语pillar的刷题日记(虽然但是,为什么他在misc的题里捏?)
Mysterious题目是一个exe,提示逆向,打开看看先。
看起来像是一个经典的猜词,用ida打开,用shift+F12查看字符
看到一个Buff3r_0v3rf|0w,但是提交发现并不是flag,于是追到welldone那里看看。
于是去sub_401090看看,F5反汇编。
可以看出,flag是 flag{source_Buff3r_0v3rf|0w),而source来自value,而value来自v4,而v4来自string,而string来自我们输入的内容。并且我们输入的内容要长度小于等于6,而且输入内容满足
即string的第3、4、5位应该分别为ascii为120、121、122的三个字符,即xyz。同时v4,v4也来源于我们的输入,是atoi(string)的结果,所以我们的前三个字符要为122,即我们要输入122xyz
flag{123_Buff3r_0v3rf|0w}
BUU刷题日记_荷兰宽带数据泄露
导语pillar的刷题日记
荷兰宽带数据泄露题目是一个.bin加上题目是宽带数据泄露,不禁让人想到是路由器信息数据。用RouterPassView查看
路由信息数据可能藏的也就username和password,挨个试,发现是username(为什么username不设个flag{}这样的捏?是因会加密咩?)
BUU刷题日记_刷新的图片
导语pillar的刷题日记
刷新过的图片题目是一张图片,结合题目,联想到F5隐写
F5隐写F5隐写采用了矩阵编码来提高隐写效率。具体可以看这篇论文
解使用F5-steganography工具即可。
打开output.txt,是16进制的,因此使用010editor看看,发现PK的文件头,改为zip,即得flag
flag{96efd0a2037d06f34199e921079778ee}
PE格式
导语如果你想学习PE病毒的编写,那么你首先得知道PE的格式和他的工作原理。
PE的百度百科PE(Protable Executable),即可移植的执行体。在Windows操作系统平台下,所有的可执行文件如EXE文件、DLL文件、SYS文件、OCX文件、COM文件等均使用PE结构。
PE文件的结构一张简简单单的图送给各位还有一个比较详细的pdf送给各位链接:https://pan.baidu.com/s/1SGU2AUQvzoHU9Foxx1-UYQ 提取码:ckdi
MS-DOS(DOS头)=MZ文件头+DOS StubDOS头的作用是定位文件PE头的开始位置,也可用于PE文件的合法性检查。而在DOS下运行时则会提示用户本文件不能在DOS下运行。在C语言的Windows.h中有预定义的数据结构IMAGE_DOS_HEADER如下
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header WORD e_magic; // Magic number WORD ...
BUU刷题日记_base64隐写
导语pillar的刷题日记
[ACTF新生赛2020]base64隐写1打开解压后是一个提示和一个ComeOn!.txt,其中全是base64加密的一行一行的内容,如果我们用base64解码,会发现是一个c的源文件。hint是一个微信公众号……不如直接去找
base64隐写假设你理解了base64的原理(应该都理解吧),如果我们要加密的内容不能被6整除的话,我们需要加为0的padding,并在末尾加上等号,在解码的时候会根据等号的个数删去密文的二进制的最后几位。因此我们在padding中可以隐藏信息,反正在解码的时候都会被舍去。
由此我们可以写脚本提取其中的隐写
import base64b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'with open('ComeOn!.txt', 'rb') as f: flag = '' bin_str = '' res_st ...
排序算法
导语排序算法是非常基础常用的算法,简单总结一下。注:没有代码!没有代码!没有代码!只有思路
这个youtuber传了几个有趣的3d动画的排序时间复杂度对比,有条件的胖友可以去康康https://www.youtube.com/user/udiprod
解释k:桶个数in-place:不占用额外内存out-place:占用额外内存
冒泡排序每轮从头开始比较相邻的元素,如果第一个比第二个大(小),就交换位置,否则不交换,这样就可以使最大(小)的元素在数组的尾部。第i轮可以将第i大(小)的元素放在倒数第i位。同时如果在第i轮发现没有任何元素交换位置就说明已经排序成功。最优时间复杂度在整个数组恰好顺序于所需要的顺序,只需要扫描第一遍就能发现是没有交换位置,也就是说明排序成功了。T(n)=n=O(n)最差时间复杂度在整个数组恰好倒序于所需要的顺序,T(n)=(n-1)+(n-2)+……+1=(n-2)*n/2=O($n^2$)平均情况是O($n^2$)
选择排序每一轮都扫描全部的元素,找到最大(小)的那个元素,然后把它和未排序序列的第一个(也就是已排序序列的下一个)交换位置。因为他每一轮其实不 ...
vs2017安装libjpeg库
导语libjpeg对jpeg的功能实在是太强大了,下面简单介绍一下怎么在VS2017下安装使用。
下载http://www.ijg.org/windows平台选择zip即可
编译我们是在windows平台下,所以要么使用cmake要么使用nmake,但是我们又有VS2017,因此我们可以使用VS2017的nmake(如果你在安装的时选择工具集的时候选择了C++的桌面开发的话他是已经准备好的,当然你也可以亲自去下个cmake或者nmake)首先解压,在一大堆文件中将jconfig.vc改名为jconfig.h然后打开makefile.vc,把里面的win32.mak换成自己电脑上的win32.mak的路径,或者直接把win32.mak复制一个到这个文件夹下。这里有的人可能没有win32.mak这个东西,好像是因为win10系统的VS都没有。因此放个链接自取https://github.com/nurmi-labs/ms-sdk然后打开VS命令行,cd到解压的位置,然后
nmake -f makefile.vc
至此,解压就完成了。
在VS2017中引入libjpeg理论上我们只需要编 ...