复现ez_readfile这题的exp执行时会吞字符,导致验证不通过,在这点卡了好久,结束时看WP出题人直接把check_vulnerable检查函数的failure换成pass跳过验证,而吞字符具体的原因他也不知道,好吧那就自己研究
12345678910<?php show_source(__FILE__); if (md5($_POST['a']) === md5($_POST['b'])) { if ($_POST['a'] != $_POST['b']) { if (is_string($_POST['a']) && is_string($_POST['b'])) { echo file_get_contents($_GET['file']); } } }?>
这 ...
GHCTF 2025 新生赛WP最酣畅淋漓的一集,学到了很多新知识
Webupload?SSTI!分析12345678910111213141516171819tmp_str = """<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>查看文件内容</title> </head> <body> <h1>文件内容:{name}</h1> <!-- 显示文 ...
介绍fenjing是CTF竞赛中Jinja SSTI绕过WAF的全自动脚本,但原生中fenjing只能对目标网址的返回结果进行判断,并不灵活
了解到有些师傅通过本地的flask转发fenjing的请求到目标网址,并将返回结果返回给fenjing,这大大提高了fenjing的灵活性,于是我也照着这个思路写了个flask转发脚本
编写以最近的nssctf新生赛中的upload?SSTI!为例
在这道题中,攻击者可以发送内容为模板注入的文件,之后访问flie/文件名 这个地址执行注入
在原生fenjing中只能发送json样式的post请求,并且也只会检查upload页面的返回结果,而用flask代理拿到fenjing的payload,能更加灵活得处理请求,对于注入点不同页面的返回,flask也能处理
以下是我针对upload?SSTI!题目的flask代理脚本
123456789101112131415161718192021from flask import Flask, request, Responseimport requestsapp = Flask(__name__) ...
起因最近一位朋友生病了,后续治疗需要抢专家号,但每次抢号都在瞬间结束,于是让我帮忙看看能不能实现自动化抢号
分析由于是微信小程序,打开后复制链接到浏览器,方便抓包
先创建一个订单,分析参数
12345678910{ "scheduleCode":"b3U4eVdSdVFKZVQwOVE9PQ", "doctorName":"xxx", "departCode":"b2VvPQ", "departName":"门诊风湿免疫科", "sign":"d146ca77c6f537dda083bd300f5ccc35bce524ebed75c143200e5d9a7cd1b17b-1739972186", "timeRange":"10:30-11:00", "patientId":&q ...
Computer cleaner
先查看端口占用,发现本地开启了80端口,但是页面里并没有什么信息
在网站目录下的upload日志文件中找到了攻击者使用一句话木马查看了~/Documents/flag_part3,里面是第三部分的flag
在攻击者上传的shell.php中找到了第一部分的flag
由于题目中说第二部分是需要对攻击者进行简单溯源,所以想到攻击者ip,在日志中找到攻击者的ip
访问找到第二部分的flag
1hgame{y0u_hav3_cleaned_th3_c0mput3r!}
Level 24 Pacman
找到初始分数,直接就改成10000分
base64解码后是
1haeu4epca_4trgm{_r_amnmse}
由于所有的字符都有,所以猜测栅栏密码
1hgame{u_4re_pacman_m4ster}
Level 69 MysteryMessageBoard
打开猜测要爆破shallot的密码
爆破出密码888888
根据源码,用户访问/admin后 ...
a1natas用a1natas的入门题练习对lovelymem的使用(自己用volatility居然获取不了)
[Forensics-1] cmd
直接查看控制台输出
[Forensics-2] iehistory
直接用工具查看ie记录会出问题
直接全局搜索字符串
[Forensics-3] Computer Name
系统信息找到ComputerName
[Forensics-4] Password
用mimikatz找到
也可以用passwareKit查找
[Forensics-5] 机密文件查找文件有个小技巧,将文件按名称排序,用户目录下的文件就会排在一起,直接略过系统文件,着重查看用户目录下的文件
一下发现两个特殊文件
导出机密文件.docx即可得到flag
[Forensics-6] Forensics X Reverse已经找到flag程序,直接放入IDA看看
IDA分析失败,去看看字符串列表
发现获取flag部分
找到相关代码
丢给ai分析,flag的值就是v2数组的值跟v5异或,但是v5的值不好获取,直接写个脚本遍历v5的值
得到flag
JiaJia ...
思维导图
未读
命令执行
eval
调用系统命令
echo exec(‘ls’);
echo `ls`;
passthru(‘ls’);
echo fread(popen(‘ls’, ‘r’), 4096);
exec(‘ls’,$a);print_r($a);
php函数
操作
localeconv();//获取当前区域设置(第一个一般是当前目录)
pos();//获取第一个元素
scandir();//获取传入目录下的文件–>array
implode(‘—‘,scandir(“/“)) //得到/目录的内容并用—分隔,字符串,用echo打印
next();//下一个元素
array_reverse();//列表倒序
array_slice();//列表切割array_slice($array,start,length)
打印
print_r();、var_dump();、var_export();打印出array数组
sh ...
[2022 A1CTF]Diana的身高12345678910111213<?phphighlight_file(__FILE__);$num = $_POST['num'];if(isset($num)){ if(is_numeric($num)){ header("Location:一些好康的" );//关注嘉然❤ 顿顿解馋 } else{ if($num == 180){ echo $flag; } }}
is_numeric绕过,末尾加%00即可
123456789101112131415<?phphighlight_file(__FILE__);$num = $_POST['num'];if(isset($num)){ if(is_numeric($num)){ header("Locat ...
WEB系统学习系列
未读前言决定从头开始系统性学习web,由于篇幅过长,分阶段更新,最后总结成一个超大md
进度web1-web55
信息搜集1.目录扫描
1python .\dirsearch.py -u https://www.www.example.com
2.请求头/响应头信息
3.dns txt记录
1nslookup -q=TXT https://www.www.example.com
4.页面信息泄露
1电话,邮箱,技术手册
爆破1.yakit编码爆破
12爆破base64后的admin:xxxx格式{{base64(admin:{{file:line(C:\Users\32965\Downloads\dic\dict.txt)}})}}
2.脚本爆破特定md5
3.php根据第一次随机数爆破随机数种子
1./php_mt_seed 213614449(第一个随机数)
4.常见的爆破类型
1域名爆破,密码爆破,用户爆破,目录爆破
命令执行1.当目标函数为system();
...
CTF
未读http
根据提示一步步修改请求头,由于hackbar只能发送get跟post,但是这两种方法都不是正确方法,所以用yakit尝试其他方法
使用PUT方法得到flag位置
进入后发现是个假的flag,但是一看地址,不是fl1l1l1l1ag.php,盲猜302跳转,去抓包里看
果然,得到flag
rcef12被禁用,手动打开调试
源码里提示,进入robots.txt得到/fl@g.php路径
123456789101112131415161718<?phphighlight_file(__FILE__);error_reporting(0);if(isset($_GET['emo'])){ $emo = $_GET['emo']; if(!preg_match("/\;|\"|\*| |[b-h]|[m-r]|\\$|\{|\}|\^|\>/i",$emo)) ...