web题

矛盾

!is_numeric()函数:

用于检测变量是否为数字或数字字符串

如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE

需要num不为数字字符串或者数字,但num=1;

则,num=1*e0.1或num=1x,x为任意字符


web3

查看源代码得

<!--&#75;&#69;&#89;&#123;&#74;&#50;&#115;&#97;&#52;&#50;&#97;&#104;&#74;&#75;&#45;&#72;&#83;&#49;&#49;&#73;&#73;&#73;&#125;-->

分析,这是unicode编码,解码得flag

unicode

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

Unicode源于一个很简单的想法:将全世界所有的字符包含在一个集合里,计算机只要支持这一个字符集,就能显示所有的字符,再也不会有乱码了

Unicode将所有字符进行分区定义,每个区中有65536(216)个字符,即成为一个平面,目前一共有17个平面,也就是说,整个Unicode字符集的大小为1114112(221)个。

最前面的65536个字符位,称为基本平面(缩写BMP),它的码点范围是从0一直到65535写成16进制就是从U+0000到U+FFFF。所有最常见的字符都放在这个平面,这是Unicode最先定义和公布的一个平面。剩下的字符都放在辅助平面(缩写SMP),码点范围从U+010000一直到U+10FFFF,这也是Unicode的编码规则

UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式,同时也存在UTF-16以及UTF-32

**UTF-8是一种变长的编码方法,字符长度从1个字节到4个字节不等。**越是常用的字符,字节越短,最前面的128个字符,只使用1个字节表示,与ASCII码完全相同。UTF-8与Unicode的关系是:UTF-8是Unicode的实现方式之一。解读 UTF-8 编码非常简单。如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节

Unicode只是一个符号集,它只规定了符号的二进制代码,并没有规定这个二进制代码应该如何进行存储,简单的讲就是,Unicode为所有字符提供一个唯一的编号,然后UTF-8、UTF-16等只是将字符的Unicode编号编码成相应的二进制代码进行存储或运算,所以相同Unicode编号若用不同的编码方式进行编码,最后会产生不同的二进制代码,这就是有时候文件造成乱码的原因。

变量1

variable 可变变量

isset()函数

isset — 检测变量是否已设置并且非 NULL

preg_match()函数

​ preg_match — 执行匹配正则表达式

​ preg_match("/\w+$/",$args)在args中查找是否存在/\w+$/,存在则返回查找的次数

die()函数

die() 函数输出一条消息,并退出当前脚本。

该函数是 exit() 函数的别名。

eval()函数

eval() 函数把字符串按照 PHP 代码来计算。

该字符串必须是合法的 PHP 代码,且必须以分号结尾。

$GLOBALS --引用全局作用域中可用的全部变量

列出全局变量

WEB5

JSPFUCK

​ JSFuck(或为了避讳脏话写作 JSF*ck )是一种深奥的 JavaScript编程风格。以这种风格写成的代码中仅使 用 [、]、(、)、! 和 + 六种字符。

简单地说,就是有人不想让自己的代码被别人认出来,用6种字符改造了自己的js代码,浏览器居然还能识别所以说直接把这段奇怪的代码扔进chrome/FireFox控制台,就可以得到flag了

secret file

文件包含

​ 服务器执行PHP文件时,可以通过文件包含函数加载另一个文件中的PHP代码,并且当PHP来执行,这会为开发 者节省大量的时间。

文件包含函数:nclude、require、include_once、require_once、highlight_file 、show_source 、readfile 、file_get_contents 、fopen 、file

php伪协议

​ 读取源码

php://filter/read=convert.base64-encode/resource=

  1. php://input

    可以获取POST的数据流

  2. php://filter

    可以获取指定文件的源码,但是当他与包含函数结合是,php://filter流会被当做php文件执行
    。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取

    ​ php://filter/read=convert.base64-encode/resource=

  3. zip://

    可以访问压缩包里面的文件。当他与包含函数结合时,zip://流会被当做php文件执行。
    从而实现任意文件执行。

  4. phar://

    和zip://类似

  5. data://

    类似于php://input

bp

简单的密码爆破问题

主要注意提示z开头的密码 top1000密码

爆破出来返回长度都一样

但是看到错误包都有bugku:10000

可以对其进行过滤

此为正确密码

game1

随便玩一下游戏

bp抓包

修改score参数 修改到极大

注意后面有一个sign

标志符号,判断分数的

为base64编码前加了zM 后面加了=

将修改的分数编码之后加入其中

base64编码之后的字符串长度一定会被4整除,包括作为后缀的=

前女友

考察对于PHP代码的审计

f12查看源代码

发现code.txt隐藏文件

<?php
if(isset($_GET['v1']) && isset($_GET['v2']) && isset($_GET['v3'])){$v1 = $_GET['v1'];$v2 = $_GET['v2'];$v3 = $_GET['v3'];if($v1 != $v2 && md5($v1) == md5($v2)){if(!strcmp($v3, $flag)){echo $flag;}}
}
?>

v1!=v2 ; md5[v1]=md5[v2]

v3=flag

漏洞出现点为md5()函数漏洞, strcmp()函数漏洞

PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会 认为他们相同,都是0。同时MD5不能处理数组,有时也可以用数组绕过。

strcmp的一个漏洞,不能比较数组

构造url

/v1[]=1&v2[]=2&v3[]=1

MD5

使用MD5 0e漏洞

a=s155964671a

Flask_FileUpload

自己想上传一句话木马

用菜刀连接

但是只能上传 .jpg.png文件

但还是连不到

后面才发现传上去的文件会用python执行

上传文件

bp抓包

修改python

import os

os.system(‘cat /flag’)

本地管理员

F12查看源代码

发现base64编码

解码得test123

猜测为密码

错误

bp抓包,修改为本地登录

X-Forwarded-For: 127.0.0.1

得到flag

听说备份是个好习惯

御剑扫描后台

发现备份文件

打开下载

<?php
/*** Created by PhpStorm.* User: Norse* Date: 2017/8/6* Time: 20:22
*/include_once "flag.php";
ini_set("display_errors", 0);
$str = strstr($_SERVER['REQUEST_URI'], '?');
$str = substr($str,1);
$str = str_replace('key','',$str);
parse_str($str);
echo md5($key1);echo md5($key2);
if(md5($key1) == md5($key2) && $key1 !== $key2){echo $flag."取得flag";
}
?>

需要输入key1,key2

并且两值不同,md5值相同

利用md5无法比较字符串

会将key替换为

构造kkeyey1[]=1&kekeyy2[]=3

学生成绩查询

查看有无sql注入漏洞

1‘ and 1=1#1' and 1=2#

发现有sql注入点

进行数据库爆破

order by查看有几列

1' order by 1,2,3,4#

正常

进行数据库库名爆破

-1’ union select 1,2,3,database()#

进行表名爆破

-1‘ union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database()#

字段爆破

-1' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name='fl4g'#

查询数据

-1’ union select 1,2,3,skctf_flag from fl4g#

查询到flag

<php
error_reporting(0);
$file=base64_decode(isset($_GET['filename'])?$_GET['filename']:"");
$line=isset($_GET['line'])?intval($_GET['line']):0;
if($file=='') header("location:index.php?line=&filename=a2V5cy50eHQ=");
$file_list = array(
'0' =>'keys.txt',
'1' =>'index.php',
);if(isset($_COOKIE['margin']) && $_COOKIE['margin']=='margin'){
$file_list[2]='keys.php';
} if(in_array($file, $file_list)){
$fa = file($file);
echo $fa[$line];
}
?>

杂项题

这是一张简单的图片

​ 打开附件,是一张简单的图片

应该是图片隐写

用winhex或者hxd打开,查看源码

在最后发现了奇怪的字符串

可能是某种加密方式

unicode解码

获得flag

%多现的为 URL 编码,±多现的 为XXencoding,&#、\U多现的为Unicode,&#多现的为unicode编码
隐写

题目直接有提示

打开图片

hxd打开

PNG格式

根据png的格式进行查看,第一行是png的pe头,第二行是png的宽和高,将第二行宽和高修改为相同,就可以了。
(固定)八个字节89 50 4E 47 0D 0A 1A 0A为png的文件头
(固定)四个字节00 00 00 0D 代表数据块的长度为13
(固定)四个字节49 48 44 52(即为ASCII码的IHDR)是文件头数据块的标示(IDCH)
(可变)13位数据块(IHDR)

前四个字节代表该图片的宽 00 00 01 F4
后四个字节代表该图片的高 00 00 01 A4
我们需要加高

用tweakpng打开

这个工具可以更改图片的尺寸

重新打开图片

获得FLAG

又一张图片,单纯吗?

打开文件

为一张图片

使用kali工具binwalk

binwalk fil1e.jpg

发现有两个文件

用kali工具foremost

foremost fil1e.jpg

打开分离出来的另一个文件

发现是flag

binwalk

Binwalk是一款快速、易用,用于分析,逆向工程和提取固件映像的工具

扫描固件

可以扫描许多不同嵌入式文件类型和文件系统的固件映像,只需给它一个要扫描的文件列表

foremost

文件分离还原

在数字取证中和CTF中常用来恢复、分离文件。它默认支持19种类型文件(jpg, gif, png, bmp, avi, exe, mpg, mp4, wav, riff, wmv, mov, pdf, ole, doc, zip, rar, html, cpp 等文件)的扫描识别恢复

啊哒

打开看不到什么

用binwalk看是否有隐藏文件

用foremost分离出文件

有一个加密压缩包

打开压缩包即的flag

寻找密码

查看图片的具体信息

发现Camera有所不同

其中有EF,思考为16进制加密

进行解密

打开压缩包得

easy_nbt

百度nbt是什么

下载nbtexplorer查看nbt文件

搜索查看flag

向下查看

找到flag

主要要理解什么是NBT

ping

这题吐了

下载文件发现是一个数据包

用wireshark打开

发现并没有什么不同

查看wp

发现竟然是用返回的值拼起来是flag

flag{dc76a1eee6e3822877ed627e0a04ab4a}

CTF题更重要的还是需要自己做,多想,多积累经验,脑洞打开。

bugku CTF题相关推荐

  1. Bugku CTF 密码学刷题

    Bugku CTF 密码学刷题 前言 一.抄错的字符 二./.- 三.聪明的小羊 四.ok 五.[+-<>] 六.把猪困在猪圈里 七.你喜欢下棋吗 八.小山丘的秘密 九.EN-气泡 十.你 ...

  2. BugKu CTF(杂项篇MISC)—放松一下吧

    CTF BugKu CTF (杂项篇MISC) 攻与防 放松一下吧 描 述: bugku{} 下载后是一个压缩包. 一.工具 十六进制编辑工具 010 editor 图片加解密工具F5-stegano ...

  3. BugKu CTF Web

    BugKu CTF Web 滑稽 计算器 GET POST Simple_SSTI_1 矛盾 eval 变量1 Simple_SSTI_2 alert 你必须让他停下 方法一 方法二 方法三 网站被黑 ...

  4. BugKu CTF(杂项篇MISC)—白哥的鸽子

    CTF BugKu CTF (杂项篇MISC) 攻与防 白哥的鸽子 描 述: 咕咕咕 下载后是一张jpg图片,图片如下. 一.工具 十六进制编辑工具 010 editor 栅栏密码解密 二.解题思路 ...

  5. BugKu CTF(杂项篇MISC)—富强民主

    CTF BugKu CTF (杂项篇MISC) 攻与防 富强民主 描 述: 公正公正公正诚信文明公正民主公正法治法治友善平等和谐敬业和谐富强和谐富强和谐文明和谐平等公正公正和谐法治公正公正公正文明和谐 ...

  6. BUGKU 密码题:这不是摩斯密码

    BUGKU 密码题:这不是摩斯密码 这不是摩斯密码 打开文件,发现如下符号: 可以发现,符号都是由> < + - . , [ ]来组成.那么显然,这个是Brainfuck加密.这里推荐一个 ...

  7. bugku ctf 杂项 啊哒 writeup || foremost的安装

    windows上使用foremost 做CTF题需要这工具来提取文件里的隐藏文件 foremost工具包下载地址: https://github.com/raddyfiy/foremost 1.在fo ...

  8. [Bugku CTF——Pwn] pwn2

    [Bugku CTF--Pwn] pwn2 题目地址:https://ctf.bugku.com/ 额,好久不写这么简单的题目了 利用栈溢出修改返回地址就好, 如果不会就去看看什么是栈溢出 explo ...

  9. [Bugku CTF——Pwn] pwn4

    [Bugku CTF--Pwn] pwn4 题目地址:https://ctf.bugku.com/ 给的提示很清楚,绕过canary保护 那就绕过就好 题目当中有system函数 利用ROPgadge ...

最新文章

  1. 【组队学习】【34期】百度飞桨AI达人创造营
  2. windows无法完成安装 若要在此计算机上安装_全新安装Windows10 2004的技巧,官方工具,安全高效...
  3. DeepBrain 李传丰:当语义技能商店应用达到百万量级的时候,语音交互时代才会真正成熟 | WARE 2017
  4. Git理论、原理、操作
  5. MySQL数据库基础(多表关联查询、内外全连接、复合条件查询、子查询)
  6. 中国开源激荡 20 年:IT 江湖,谁主沉浮?
  7. PhoneGap极光推送 cordova消息推送
  8. ISE_FIFO_IP核接口测试(一)
  9. Numpy入门(详看注释)
  10. 高等代数(邱维声):高等代数的研究对象
  11. 系统性总结了 Pandas 所有知识点
  12. laravel 框架中的路由
  13. linux CFI接口,Linux系统下的MTD/CFI驱动介绍
  14. 员工出错处罚通知_关于处罚员工的通报
  15. Centos打开3306端口
  16. 关于虚拟机VMware Workstation Pro繁忙的解决方法
  17. python在化学中的应用_python化学库
  18. 2k8 32bit下载
  19. 大连民族大学选课登录(手机端电脑端)
  20. 1 Homeplug AV 协议介绍

热门文章

  1. 1、TCP/IP体系结构
  2. 微软为 Office 盗版者提供 50% 的订阅折扣
  3. 39,叶慧敏 实验四 主存空间的分配和回收模拟
  4. macOS Big Sur 11.2候选版本发布黑屏怎么办
  5. python--视频拆帧 帧合成视频流
  6. Oracle RMAN实现“一键式”表空间TSPITR
  7. vue实现表格的‘模板下载‘功能
  8. mondrian 性能优化
  9. Android开发之六:SurfaceView、ANativeWindow原生绘制
  10. HDU6560 The Hermit(思维)