CTF练习1

2018.7.19

一、php学习

基本语法:

  1. PHP 脚本可放置于文档中的任何位置,PHP 脚本< ?php 开头,以 ?> 结尾
  2. 在 PHP 中,所有用户定义的函数、类和关键词(例如 if、else、echo 等等)都对大小写不敏感,不过在 PHP 中,所有变量都对大小写敏感。
  3. PHP中变量以 $ 符号开头,其后是变量的名称
  4. is_numeric() 函数用于检测变量是否为数字或数字字符串。如果指定的变量是数字和数字字符串则返回 TRUE,否则返回 FALSE。
  5. 在 PHP 中有两个基本的输出方式: echo 和 print

CTF做题:
CTF练习1_第1张图片

$num=$_GET['num'];
if(!is_numeric($num))
{
echo $num;
if($num==1)
echo 'flag{**********}';
}

is_numeric()判断num不是数字或者数字字符串,if语句运行,但num的值要等于1,才能得到flag,php判断字符串以1开头即可判断等值
因此,可以在地址栏网址后写上num=1aaaaa

120.24.86.145:8002/get/index1.php?num=1aaaaa

二、url解密

CTF练习1_第2张图片
按F12查看源代码可看到形如[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!的一些乱码,把这些乱码复制到控制台,再按回车可得到flag
CTF练习1_第3张图片
按F12查看源代码可看到
var p1 = ‘%66%75%6e%63%74%69%6f%6e%20%63%68%65%63%6b%53%75%62%6d%69%74%28%29%7b%76%61%72%20%61%3d%64%6f%63%75%6d%65%6e%74%2e%67%65%74%45%6c%65%6d%65%6e%74%42%79%49%64%28%22%70%61%73%73%77%6f%72%64%22%29%3b%69%66%28%22%75%6e%64%65%66%69%6e%65%64%22%21%3d%74%79%70%65%6f%66%20%61%29%7b%69%66%28%22%36%37%64%37%30%39%62%32%62’;p2也是
将它们用在线网页解码得到p1、p2
又有eval(unescape(p1) + unescape(‘%35%34%61%61%32’ + p2));将解码的合在一起后,可得到flag

三、数组(/X00)

CTF练习1_第4张图片

view-source:

    if (isset ($_GET['nctf'])) {
        if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
            echo '必须输入数字才行';
        else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)   
            die('Flag: '.$flag);
        else
            echo '骚年,继续努力吧啊~';
    }

strpos() 函数查找字符串在另一字符串中第一次出现的位置(区分大小写)。
返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。
注意:字符串位置从 0 开始,不是从 1 开始。
ereg()函数用指定的模式搜索一个字符串中指定的字符串,如果匹配成功返回true,否则,则返回false。搜索字母的字符是大小写敏感的。
可选的输入参数规则包含一个数组的所有匹配表达式,他们被正则表达式的括号分组。
所以nctf要是个数字,还要包含#biubiubiu,因此可以用到%00截断,可以定义nctf=1%00#biubiubiu。但在地址栏中,#要进行编码,变为%23,所以要在地址栏中写nctf=1%00%23biubiubiu,同时要在原来的网址后加?,可得到flag
下面这个链接中有各种url编码:
(https://baike.baidu.com/item/URL%E7%BC%96%E7%A0%81/3703727?fr=aladdin)

四、伪装代理

CTF练习1_第5张图片——-
题目链接点开得到
CTF练习1_第6张图片
首先看一下 .net framework 9.9 并没有9.9版本,可以考虑浏览器伪装用户代理,就得了解User-Agent。
User-Agent是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。用较为普通的一点来说,是一种向访问网站提供你所使用的浏览器类型、操作系统及版本、CPU 类型、浏览器渲染引擎、浏览器语言、浏览器插件等信息的标识。UA字符串在每次浏览器 HTTP 请求时发送到服务器!
浏览器UA 字串的标准格式为: 浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息
在做这道题中我们应该思考net framework 如何伪造 .NET CLR 9.9
可以通过修改请求头 Accept-Language
贴网址:(https://blog.csdn.net/dingxingmei/article/details/46772277)
具体操作步骤:注意user-agent和accpet-language
可以先抓包,然后在数据包中修改,在user-agent中加上.NET CLR 9.9,在accpet-language中en-US改为en-gb,然后forward后可得到flag
CTF练习1_第7张图片

你可能感兴趣的:(CTF练习1)