CTF入门篇Writeup——D0g3 Games

今天在网上找到一个CTF的小游戏,题目我做了几道感觉挺简单,很适合入门,之前了解CTF,参加各种杯或者是看各种比赛题的writeup,感觉太难了,想到这我还是决定从点滴做起,记录一下学习过程,同时也想做一套CTF从入门到精通的教程。

网址:http://ctf.d0g3.cn/

image.png

下面就简单记录下每道题的解题过程,希望能一点一点积累知识点

WEB
1. _GET
image.png

2. _POST
image.png
  • 题目分析:同理同上,只不过通过POST方式传参。
  • 解题方法:
image.png

3. 突破物理极限
image.png
  • 题目分析:根据提示输入12345提交,但是由于限制只能输入123,因此一看就知道要绕过限制
  • 解题方法:方法不唯一可以抓包修改,也可以F12修改前端代码。
image.png
image.png

4. serialize
image.png
  • 题目分析:题目还是很简单的,通过GET传参字符串str,将其传入的字符串通过unserialize()反序列化,使其反序列化结果值等于$KEY,于是解题方法就是传入事先通过serialize()函数序列化后的字符串。
  • 解题过程:
    先写个简单序列化字符串的脚本
<?php
$key = $_GET['key'];    
$str = serialize($key);
echo "$str";
?>

然后运行脚本,可以得到反序列化字符串脚本

image.png

最后我们解题

image.png

5. xss1
image.png
image.png
  • 题目分析:这道题是考察xss漏洞的,根据提示弹窗即可,想必也是讲xsspayload作为参数值传入,那就随便输入值提交后先查看看页面源代码吧。
image.png
  • 解题方法:根据题目分析,构造payload传入到参数,很简单了。通过测试发现两个输出点,,第一个输出点实体编码了,因此根据第二个输出点构造payload。
payload: "><script>alert(1)</script>
image.png

哇,弹出俩QQ,加好友索要flag,666,怎么不弄个公众号自动获取呢?

有趣的聊天截图,哈哈


6. htmlspecialchars
image.png
image.png
  • 题目分析:哎,真麻烦,目标弹窗加qq,通过测试发现,后台使用htmlspecialchars<>进行了HTML实体编码
  • 解题方法:标签内构造XSSpayload
payload: ' onmouseover=alert(1)//
image.png
image.png

7. 机器人
image.png
image.png
  • 题目分析:这道题凭直觉考察的是robots.txt,简单解释一下就是,为了防止搜索引擎的爬虫,通常在网站目录下会有一个robots.txt文件,来告诉搜索引擎哪些目录允许爬虫。那就试试呗。
  • 解题方法:访问robots.txt文件。果然有收获,发现一个flag.txt的文件,然后顺利访问拿到flag。
image.png
image.png

8. 爆破拿flag
image.png
image.png
  • 题目分析:也是很简单的一道题,5位数的密码,废话不多说,抓包爆破即可
  • 解题方法:
image.png

耐心等待......

image.png

密码:12568


9. 数字比较
  • 题目地址:题目给的地址不能用,但是给了php文件,只能在自己环境里搭建咯。
image.png
<?php
error_reporting(0);
function noother_says_correct($temp)
{
$flag = "xxxxx";
$one = ord('1'); //ord — 返回字符的 ASCII 码值
$nine = ord('9'); //ord — 返回字符的 ASCII 码值
$number = '3735929050';
// Check all the input characters!
for ($i = 0; $i < strlen($number); $i++)
{
// Disallow all the digits!
$digit = ord($temp{$i});
if ( ($digit >= $one) && ($digit <= $nine) )
{
// Aha, digit not allowed!
return "flase";
}
}
if($number == $temp)
return $flag;
}
$temp = $_GET['password'];
echo noother_says_correct($temp);
?>
  • 题目分析:这道题是数字比较,但是又不允许输入1到9数字,因此可以使用16进制来进行比较,即传入的参数值为3735929050的16六进制deadc0da,传入时候记得前面加0x
  • 解题方法:
    payload: ?password=0xdeadc0da

11. 欢迎加入道格小组(伪造数据包来源来源)
image.png

抓取数据包

image.png
  • 题目分析:这么明显的提示,就是伪造IP头部了,又加之提示信息不是从d0g3.cn来的你还想要flag?,很容易拿到flag。
  • 解题方法:伪造数据包头
Referer: d0g3.cn
image.png

12. Firefox
image.png
image.png
12
  • 题目分析:看起来也很简单,就是伪造浏览器版本信息吧。
  • 解题方法:修改浏览器版本信息为Mozilla/11.0,开始简单改个数字11,结果不行,后来仔细看提示,说只用构造为Mozilla/11.0,不用构造操作系统和协议。
image.png

13. IP伪造
image.png
image.png
  • 题目分析:很简单了,伪造IP
Client-Ip: 127.0.0.1
X-Forwarded-For: 127.0.0.1
Host: 127.0.0.1
  • 解题方法:抓取数据包修改数据包IP地址
image.png


15. Match it!(匹配它)
image.png
<?php
include 'f1agi3hEre.php';
if  ("POST" == $_SERVER['REQUEST_METHOD'])
{
    $password = $_POST['password'];
    if (0 >= preg_match('/^[[:graph:]]{12,}$/', $password))
    {
        echo 'Wrong Format';
        exit;
    }
    while (TRUE)
    {
        $reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/';
        if (6 > preg_match_all($reg, $password, $arr))
            break;
        $c = 0;
        $ps = array('punct', 'digit', 'upper', 'lower');
        foreach ($ps as $pt)
        {
            if (preg_match("/[[:$pt:]]+/", $password))
            $c += 1;
        }
        if ($c < 3) break;
        if ("42" == $password) echo $flag;
        else echo 'Wrong password';
        exit;
    }
}
highlight_file(__FILE__);
?>
  • 题目分析:一步一步代码审计吧。
0 >= preg_match('/^[[:graph:]]{12,}$/', $password)  
//输入的内容必须为12个以上包括12,不包括空格和tab键

 $reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/'; 
//[[:punct:]] 任何标点符号, [[:digit:]] 任何数字, [[:upper:]] 任何大写字母 , [[:lower:]] 任何小写字母

 if (6 > preg_match_all($reg, $password, $arr))
//匹配到的次数要大于6次才能绕过。连续的大写或小写字母都只能算是一次。

 $ps = array('punct', 'digit', 'upper', 'lower');
        foreach ($ps as $pt)
        {
            if (preg_match("/[[:$pt:]]+/", $password))
            $c += 1;
        }
        if ($c < 3) break;
//这个好理解,必须要有大小写字母,数字,字符内容三种与三种以上

if ("42" == $password) echo $flag;
//最后输入的值还要和42相等。
  • 解题方法:根据以上匹配规则构造出满足需求的payload
    可以构造420.000000e-1 //0可以随意添加不影响数值,但是要超过12个字符
image.png

太菜了,其他的有点思路但暂时没搞定。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容