memset()函数
memset函数描述C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。
声明下面是memset函数的声明
void *memset(void *str, int c, size_t n)
参数
str –指向要填充的内存块
c –要被设置的值。该值以 int 形式传递,但是函数在填充内存块时是使用该值的无符号字符形式
n –要被设置为该值的字符数
返回值该值返回一个指向存储区 str 的指针
异或算法
异或算法相同为0,不同为1异或的数学符号为”⊕” 在计算机中通常用”^”的符号表示 异或略称为XOR、EOR、EX-OR
用途:1、交互两个数:a=5,b=10,用异或实现交换
程序代码:
#include<stdio.h>
int main()
{
int a=5;
int b=10;
a=a^b;
b=a^b;
// a=a^b;
printf("%d %d\n",a,b);
return 0;
}
2、因为电脑的数都是二进制的,所以可以转化二进制的位数和统计二进制中1或者0是奇数还是偶数。
(1):位反转举例:10001000 在一些情况下,第四位和第五位需要反转,可以用10001000与00011000进行异或运算。10001000 ^ 00011000 = 10010000(2):统计某一位的奇偶数将某个元素中的每一位逐步异或.例如a1=1010,则b1=1 ^ 0 ^ 1 ^ 0 = 0,由此可以判断a中为1的位数是奇数还是偶数。例如a2=10110,则b2=1 ^ 0 ^ ...
常见文件头
常见文件头:文件类型: 文件头信息: 文件尾信息:JPEG (jpg) FFD8FFE0或FFD8FFE1或FFD8FFE8 FFPNG (png) 89 50 4E 47 00 3Bpdf 25 50 44 46 2D 31 2EWindows Password (pwl) E3 82 85 96RAR 52 61 72 21ZIP Archive (zip) 50 4B 03 04 50 4B压缩包 PKWord/Excel (xls.or.doc) D0 CF 11 E0HTML (html) ...
寒假刷题记录reverse2
攻防世界Reverse
1.Hello,CTF拖入exe
无壳,拖入32位IDA发现输入字符串大于17,程序结束0x11 = 17小于17,则v10与v13比较,相同则输出:aSuccess而v13一定大于17 ,v13=437261636b4d654a757374466f7246756e进制转换,发现每位都在1-9 a-f之内,猜测为16位,转换如图
而题目描述为菜鸡发现Flag似乎并不一定是明文比较的得到flag为CrackMeJustForFun
2.re1拖入exe无壳,拖入32位IDA,找到main函数F5反汇编
看到有个strcmp函数,比较v5和v9,然后判断v3,根据v3给出相应的结果双击跟进aFlagGet,证明思路正确跟进xmmword_413E34
xmmword的值已经出来了:那么v5的值就是3074656D30633165577B465443545544h了v5应该是16进制表示的,看下strcmp函数,有个将v5转换为字符串的函数找到在线16进制转换字符串
通过文字倒序得到DUCTF{We1c0met0发现flag并不完整,想到题干
故猜测flag为DUCT ...
寒假刷题记录misc
攻防世界Misc
1.2017_Dating_in_Singapore手动格式化一下得到
每行长度分别为26位18位16位26位14位16位16位22位20位22位18位14位通过分隔符可以分12行,都是十进制数2位分隔得到
在假设按每一行顺序对应每一个月份的情况下,每一个数字对应日期便可以得到
得到flag为HTIB{CTFFUN}
2.Training-Stegano-1拖入010
得到flag为steganol
3.can_has_stdio?用记事本打开了解到这是brainfuck语言在线解密CTF在线工具-在线Brainfuck加密|在线Brainfuck解密|Brainfuck|Brainfuck原理|Brainfuck算法 (hiencode.com)
得到flag{esolangs_for_fun_and_profit}
4.Test-flag-please-ignore用记事本打开得到:666c61677b68656c6c6f5f776f726c647d在线16进制转字符串http://www.bejson.com/convert/ox2str/得到flag{hell ...
寒假刷题记录reverse1
攻防世界
1.Reversing-x64Elf-100拖入EXE中查看信息
拖入64位IDA
双击进入main函数,F5查看伪代码
双击跟进sub_400FD
编写脚本
得到flag为Code_Talkers
2.666下载附件并解压,解压后文件拖入exe
拖入64位IDA找到主函数,F5
v5是需要输入的内容,v5的长度等于key,用s和enflag进行比较,相等就输出You are Right .观察encode函数
a1即为主函数中的v5,a2即为主函数中的s,对a1进行处理可以得到a2,根据循环可写逆过程#include <stdio.h>#include <stdlib.h>
int main(){ char a1[20],a2[20]={“izwhroz""w"v.K".Ni”},v3[32],v4[32],v5[40]; int v6,i; i=0; v6=0; for(i=15;i>=0;i-=3) { v3[i+2]=a2[i+2]; ...
WAF
WafWAF具备限制对某些URI请求次数的能力和限制文件上传功能的能力。windows 或 linux 下:command1 && command2 先执行 command1,如果为真,再执行 command2command1 | command2 只执行 command2command1 & command2 先执行 command2 后执行 command1command1 || command2 先执行 command1,如果为假,再执行 command2命令执行漏洞(| || & && 称为 管道符)
Python常用函数语段
Python常用函数语段
一.chr() 函数;chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。chr(i),i – 可以是10进制也可以是16进制的形式的数字。返回值是当前整数对应的 ASCII 字符。例:print chr(78) 结果显示为N比较:ord函数;Ord(“字符串”) 函数返回值类型为int类型例:ord(“0”) 结果显示48
二.for i in range ()作用for i in range ()作用:range()是一个函数, for i in range () 就是给i赋值:比如 for i in range (1,3):就是把1,2依次赋值给irange () 函数的使用是这样的:range(start, stop[, step]),分别是起始、终止和步长range(3)即:从0到3,不包含3,即0,1,2range(1,3) 即:从1到3,不包含3,即1,2range(1,3,2)即:从1到3,每次增加2,因为1+2=3,所以输出只有1第三个数字2是代表步长。如果不设置,就是默认步长为1解题脚本是这 ...
Ping
Pingping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。应用格式:Ping空格IP地址。该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。作用:它是用来检查网络是否通畅或者网络连接速度的命令。ping命令的使用方法:方法/步骤首先用快捷键win+R调出运行命令框,输入cmd,点击确定,会弹出DOS窗口。ping命令的应用格式:①ping+IP地址或主机域名;②ping+IP地址或主机域名+命令参数;③ ping+命令参数+IP地址或主机域名 。注意,“+”要换成空格!当我们使用第①种格式时,默认只发送四个数据包。
OllyDbg 常用快捷热键
OllyDbg 常用快捷热键打开一个新的可执行程序 (F3)
重新运行当前调试的程序 (Ctrl+F2)
当前调试的程序 (Alt+F2)
运行选定的程序进行调试 (F9)
暂时停止被调试程序的执行 (F12)
单步进入被调试程序的 Call 中 (F7)
步过被调试程序的 Call (F8)
跟入被调试程序的 Call 中 (Ctrl+F11)
跟踪时跳过被调试程序的 Call (Ctrl+F12)
执行直到返回 (Ctrl+F9)
显示记录窗口 (Alt+L)
显示模块窗口 (Alt+E)
显示内存窗口 (Alt+M)
显示 CPU 窗口 (Alt+C)
显示补丁窗口 (Ctrl+P)
显示呼叫堆栈 (Alt+K)
显示断点窗口 (Alt+B)
打开调试选项窗口 (Alt+O)