php中的ssrf打法
SSRF(service side request forgery)服务端请求伪造,是由服务端发起的
file_get_contents()把一个文件当做字符串进行读取默认是没有回显的,需要echo输出来查看不支持PHP中的伪协议,可以读取一个url
<?phpecho file_get_contents('http://www.baidu.com')?>
file_get_contents是可以读取其他目录下的文件的,当输入他不能识别的协议时,他会把这个不能识别的协议当做一个目录,我们使用../即可实现路径穿越,读取文件
<?phpecho file_get_contents('a://undefind/../../../flag.txt');?>
curl<?phpfunction curl($url){ $c=curl_init(); curl_setopt($c, CURLOPT_URL, $url); curl_exec($c); ...
jwt伪造
什么是jwt?JWT(json web token),它并不是一个具体的技术实现,而更像是一种标准。JWT规定了数据传输的结构,一串完整的JWT由三段落组成,每个段落用英文句号连接(.)连接,他们分别是:Header、Payload、Signature,所以,常规的JWT内容格式是这样的:AAA.BBB.CCC并且,这一串内容会base64加密;也就是说base64解码就可以看到实际传输的内容。
常见的jwt加密算法HS256(HMAC with SHA-256):使用单个密钥进行加密和解密。HS384(HMAC with SHA-384):与 HS256 类似,但使用更安全的 SHA-384 哈希算法。HS512(HMAC with SHA-512):与 HS256 类似,但使用更安全的 SHA-512 哈希算法。RS256(RSA Signature with SHA-256):使用公钥和私钥进行加密和解密。RS384(RSA Signature with SHA-384):与 RS256 类似,但使用更安全的 SHA-384 哈希算法。RS512(RSA Signature wi ...
c primer plus第五章
background这一章我不写习题了,看了后面的习题,都是在完成需求,而不是从编程的本身出发。我不是为了卷开发,对我来这些东西没有太大的意义,逻辑层面的东西基本上交给ChatGPT就行了。于是这里开始通过章节的大纲来学习。
while循环和运算法这里提到的运算符“%”代表了求模(取余)++和–代表了递增和递减,以下demo很好的解释了
#include<stdio.h>int main(void){ int num=60; while (num>1) { printf("1"); num--; } return 0;}
typedef为数据类型创建别名为数据类型创造别名
#include <stdio.h>typedef float MyInt; // 为 int 定义一个别名 MyIntint main() { MyInt x = 3.1415926; printf("x: %.7f\n&quo ...
c primer plus第四章习题
background也没有啥新的东西,这一章都是格式化字符串
1#include <stdio.h>int main(void) { char fname[50]; // 声明字符数组来存储名字 char lname[50]; // 声明字符数组来存储姓氏 printf("请输入名和姓:"); scanf("%s %s", fname, lname); // 使用 %s 格式接收字符串输入 printf("%s, %s", fname, lname); return 0;}/*使用char[]数组来接收变量*/
2#include<stdio.h>int main(void){ char name[10]; int len; printf("请输入姓名:"); scanf("%s",&name); len=strlen(name); print ...
c primer plus第三章习题
background直接看题了,这章也还行,基本都能懂,学习了预处理定义常量
1#include <stdio.h>#include <float.h>#include <limits.h>int main(void){ int big_int = 2147483647; float big_float = 3.4e38; float small_float = 10.0 / 3; printf("the big int data is %d\n", big_int + 1); printf("the big float data is %f\n", big_float * 10); printf("the big float data is %f\n", small_float); printf("the MAX float data is %f\n", FLT_MAX); printf("the MA ...
c primer plus第二章习题
background学一点点c语言,然后学学javaweb,Pythonweb的东西。编程弄久了本来枯燥,然后就想干啥干啥吧。编程累了就学学rt,rt没意思了就来看看编程。b站找了个视频,我感觉适合真正的0基础计算机小白来看,我好歹也是摸过代码写过脚本的,那进度我受不了。于是就找了电子版的书看,反正视频也是基于书讲的,书看不明白就去看看他视频的讲解。这样下来学习效率应该会快很多。看到书第二章,发现有习题,于是就做了做,蛮简单的。希望编程学习之路都那么简单吧,哈哈哈~简单记录下我手搓的代码。
1#include <stdio.h>int main(void) { printf("w3l kin\n"); printf("w3l\nkin\n"); printf("w3l "); printf("kin"); return 0;}/*此题考点就在输出语句,和换行符的应用*/
2#include <stdio.h>int main(voi ...
python代码封装成exe
background想着好玩,就写了个hvv工资实时统计的脚本,可以实时看到收入,可视化的感觉还是很不错的。于是就写了脚本,一开始仅仅是程序运行之后从0开始计数,每过一秒钟工资就增长一部分。后来我朋友说这逻辑不行。得自动算出累计的时间。我一听,好想法。于是乎就开始研究了。当然我全程啥也没做,全部交给GPT了,需要注意的就是这个工作时间,GPT错了很久才纠正过来。工作时间是不能按照24小时来计算的,并且还要考虑跨天的问题。
最终解决了问题,有炫酷的页面
from datetime import datetime, timedelta, timeimport tkinter as tkimport randomdef calculate_working_hours(start_datetime, end_datetime, work_start_time, work_end_time): total_duration = timedelta() current_datetime = start_datetime while current_datetime < ...
蓝方视角下的getshell
background客户让我测测内网,我对内网环境一无所知,也懒得弄,就随便给它看看。我就只看设备上的告警,然后对着ip去测。
apereo cas默认秘钥反序列化getshell设备上看到的告警,内网对内网的,问题不大。以前从来没见过这个洞,于是去测这个漏洞,态势感知就是根据请求包里execution参数特征来识别的。该漏洞源于apereo cas使用了默认的秘钥,导致攻击者可以构造恶意代码,在反序列化的过程中达到命令执行的效果。
漏洞利用工具https://github.com/MrMeizhi/ysoserial-mangguogan/blob/master/ysoserial-managguogan-0.0.1-SNAPSHOT-all.jar利用该工具生成payloadjava -jar .\ysoserial-managguogan-0.0.1-SNAPSHOT-all.jar encode CommonsCollections4
将生成的结果复制到请求包的execution参数中,在请求头中添加cmd:whoami即可执行“whoami”系统命令修复建议:升级软件版本或者 ...
ssrf的一些利用方式
background之前通过国光师傅的靶场学习过ssrf的一些打法,在前几天暗月师傅的中秋打靶活动中用到了ssrf打me来getshell。我也是第一次接触到ssrf打me,于是就好好的记录一下ssrf的打法,发到我的blog上,以下大多数内容都是去年11月份完成的。靶场地址:https://github.com/sqlsec/ssrf-vuls原文链接:https://www.sqlsec.com/2021/05/ssrf.html
靶场拓扑图这是靶场的拓扑图,就是用一个ssrf的点位来打内网的这些服务。
漏洞点
获取网段信息file:///etc/hosts高权限还可以读取/proc/net/arp/etc/network/interfaces
探测存活使用dict协议可判断端口是否开放dict://182.168.1.1:80
172.172.0.25(文件上传)别人新增的环境文件上传这里上传文件 是要用到post请求的 所以需要使用gopher协议来进行请求构造请求包
POST /index.php HTTP/1.1Host: 172.172.0.25Us ...
记一次有意思的'攻防演练'
background去了某场比赛当了某单位的指导老师,全程都是事故,结果也没有达到预期,弱爆了。本来计划中的发展是第一天开始,第二天15:00结束,第一天我按时赶到,然后中午撤。有位大哥来给我顶着。大哥早上都上了高铁,然后单位有事就给他叫回去了。那我肯定就是回不去了。第一天开打我们扫描器一点资产都扫不到,第二天才发下是网络开放的问题,然后给我们加时……就给了个B段的内网地址,自己搜集资产。全是水洞,没啥技术含量我就不记录了,有个我们没做出来的springboot很有意思,我之前也没打过springboot。恶心就恶心在你知道靶机是springboot,但你不知道哪个是靶机,不知道自己看到的是靶机还是业务系统。
CVE-20222-2965确定靶机是这个洞,我们当时也找了个springboot,扫描器也告警了,就是这样的
然后当时全部是内网,我得把poc打包到txt里然后给运维,运维上堡垒机把东西传给我们。我在网上找了几个poc,还找了个利用工具,反正都没打通。我在burp里手动发包,都没效果,shell写不进去,就很奇怪。
我在github上看了扫描器源码里的poc(https:/ ...