首页 > 其他分享 >BUUCTF刷题_RoarCTF 2019_Easy Calc

BUUCTF刷题_RoarCTF 2019_Easy Calc

时间:2024-07-12 14:19:56浏览次数:19  
标签:RoarCTF BUUCTF bar waf flag num 2019 foo 输入

个人刷题学习记录,如有错误请多多指教

进入题目如下,猜测是命令注入,输入ls弹框,估计是做了过滤

image

image

查看页面源代码,发现一串代码,但是不怎么看得懂,查看网上大佬的wp进行学习

image

看了别人的解题步骤知道这里有个url,存在calc.php,访问一下看看是啥

image

上面注释里面写了有waf,猜测这里应该是waf的规则,分析一下代码

点击查看代码
<?php  
error_reporting(0);  
if(!isset($_GET['num'])){  
    show_source(__FILE__);  
}else{  
    // get一个参数num  
    $str = $_GET['num'];  
    // 过滤了空格,单双引号,反引号等  
    $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];  
    // 将$blacklist循环遍历去判断  
    foreach ($blacklist as $blackitem) {  
    // 匹配传参里面是否有要过滤的字符,有就die  
        if (preg_match('/' . $blackitem . '/m', $str)) {  
            die("what are you want to do?");  
        }  
    }  
    eval('echo'.$str.';');  
}  
?>

大概意思都弄明白之后,接下来思路就是想办法找flag在哪,本来想着传入ls看看文件有什么,但是显示403,反应过来这里原来只是做个过滤,并不是真正的waf

image

输入1就正常打印,这里只能输入数字,不让输入字母,但是我们需要输入函数去执行得到我们想要的结果,所以就要想办法绕过去使其可以输入字母

image

参考了网上的wp,这里应该是被waf拦截了,那么就想办法绕过waf,这里涉及到一个知识点

PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:
1.删除前后的空白符(空格符,制表符,换行符等统称为空白符)
2.将某些字符转换为下划线(包括空格)

例如下面这张表:

User input Decoded PHP variable name
%20foo_bar%00 foo_bar foo_bar
foo%20bar%00 foo bar foo_bar
foo%5bbar foo[bar foo_bar

假如waf不允许参数输入字母,那么我们可以在参数前面加个空格。

这样waf就找不到num这个变量了,因为现在的变量叫" num",而不是"num"。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符。

尝试输入phpinfo(),成功执行

image

那么接下来就是想办法找出flag在哪,这里需要使用几个函数

var_dump:函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构
scandir:列出参数目录中的文件和目录
chr:从不同的 ASCII 值返回字符

http://node5.buuoj.cn:28256/calc.php/? num=var_dump(scandir(chr(47)))

image

找到一个和flag相关的文件

image

flag到手

总结

知识点:
PHP的字符串解析特性
命令注入函数的使用(var_dump,scandir,chr)

参考链接

https://blog.csdn.net/weixin_44077544/article/details/102630714
https://www.cnblogs.com/sfsec/p/15205011.html
https://blog.csdn.net/qq_45521281/article/details/105871192

标签:RoarCTF,BUUCTF,bar,waf,flag,num,2019,foo,输入
From: https://www.cnblogs.com/ylist/p/18298280

相关文章

  • 2019第一届长安杯
    案情介绍在一起电诈案件中,受害者称自己的银行卡被他人冒用,曾收到假冒公安的短信,因为自己在一个P2P网站中理财,假冒公安称该网站已被列外非法网站,要自己到公安备案网站填写自己的信息,并帮助自己追回本金,因此信以为真,在网站上填写了自己的信息和绑定的银行卡信息;办案机关推测嫌疑人......
  • 题解:P10732 [NOISG2019 Prelim] Palindromic FizzBuzz
    题解:P10732[NOISG2019Prelim]PalindromicFizzBuzz题意题意十分明了,给予你一个区间,判断区间中每一个数是否是回文数。思路思路比较简单,首先将每一个数按每一位放入一个数组中,顺序无论由前到后和由后到前都可以。接下来将数组折半循环,判断前后是否一样。一样的话是回文数,......
  • [CSAWQual 2019]Web_Unagi XXE漏洞练习题
    题目地址:BUUCTF在线评测这道题就是简单的xxe漏洞的注入。进来之后我们进行一个信息收集,在upload下可以看到有个here的超链接。点进去之后得到了如下的一些信息。可以猜到是需要我们利用文件上传包含xxe漏洞利用来得到flag。<?xmlversion='1.0'?><!DOCTYPEusers[<!ENT......
  • P7382 [COCI2018-2019#6] Simfonija (中位数)
    P7382[COCI2018-2019#6]Simfonija中位数不妨设\(C_i=A_i-B_i\),那么操作后的代数式可以写成:\[\sum\limits_{i=1}^n|C_i+x|\]如果\(k=0\),那么\(x\)的取值就是一个经典问题了,即\(C\)序列的中位数(偶数取中间任意)。如果\(k\ne0\),要使答案最小,就是将\(k\)个数的代价变......
  • MS SQL Server with SSRS 版本从2014升级到2019版本
    升级过程中的一些注意事项。一台服务器上同时安装了MSSQLServer和MSSQLServerReportingService。1.因MicrosoftSQLServer2019ReportingService是独立产品,不在集成于SQLServer服务安装,所以需要单独下载安装包并安装2.升级MSSQLServer版本之前,需要先升级MSSQL......
  • [CISCN2019 华北赛区 Day1 Web2]ikun
    进入题目发现找到lv6查看源码发现用lv标志点击下一页发现url参数page写脚本importrequestsforiinrange(500):url="http://248e4e18-a7a1-4bb1-adc1-e3a177974773.node4.buuoj.cn:81/shop?page={}".format(i)reponse=requests.get(url)if"lv6.png"inreponse.tex......
  • [CISCN2019 华北赛区 Day1 Web1]Dropbox
    进入题目注册一个账号登录进去后上传一个文件发现只能上传图片下载删除时分别抓包发现在download.php里下载,在delete.php处删除发现filename参数,有任意文件下载漏洞下载download.php,delete.php目录遍历在delete.php里发现class.phpdb=$db;}publi......
  • [CISCN2019 华北赛区 Day1 Web5]CyberPunk
    进入题目点击左下角发现不同文件查看index.php检查发现file参数猜测文件包含用php为协议读取源码require_once"config.php";if(!empty($_POST["user_name"])&&!empty($_POST["phone"])){$msg='';$pattern='/select|insert......
  • [CISCN2019 华北赛区 Day2 Web1]Hack World
    进入题目输入数字1数字20对select空格unionor等等测试发现没有过滤select空格也被过滤注意不能单独测试用亦或运算1^0为真尝试0^if((ascii(substr((select(flag)from(flag)),1,1))=100),0,1)回显正常根据回显判断正误编写脚本爆破,由于该网站请求太快会报429......
  • [CISCN2019 华东南赛区]Web4
    进入题目发现一个超链接、右键检查发现/read?url路径猜测后端语言不是php是python点击超链接跳转到百度猜测存在ssrf漏洞访问/etc/passwd成功尝试访问/app/app.py源码成功encoding:utf-8importre,random,uuid,urllibfromflaskimportFlask,session,requesta......