CG-CTF

  https://cgctf.nuptsast.com/challenges#Web

  续上~

  

  第十四题:GBK Injection

  是一道注入题;

  分析:题目提示了GBK,GBK是一种多字节的编码,两个字节代表一个汉字,而在PHP+MySQL的环境中,存在宽字节注入漏洞,即PHP将“'”转义为“\’”,编码之后为%5c%27,而如果我们输入%d5(或%df等),%d5%5c将组合出一个汉字,保留了%27的单引号闭合功能,造成转义失效,从而实现注入;

  思路:首先验证一下单引号是否被转义,以及是否存在宽字节注入;

  的确存在宽字节注入;

  对表的列数进行判断;

  可以判断当前查询表有两列;

  用length(database())Δnumber判断数据库名长度;

  数据库名的长度为14位;

  用ascii(substr(database(),1,1)) Δnumber来猜解数据库名;

  得到数据库名为“sae-chinalover”;

  用(select count(table_name) from information_schema.table where table_schema=database())Δnumber来猜解表的数量;

  得到表的数量为6;

  用 (select table_name from information_schema.tables where table_schema=database() limit 0,1)来猜解表名;

  得到6个表名,猜测flag应该在“gbksqli”这个表里;

  用(select*from gbksqli)来获取表中的数据;

  取得flag(干杯~);

  P.S.:在猜解表名的时候,才反应过来有回显,因此在猜解数据库名的时候其实不用一个个猜解,直接用union select null,database()#就能看到数据库名字。。。

  第十五题:/x00

  分析代码:

  用了两个函数ereg()和strpos();

  ereg():

    语法:int ereg(string pattern, string originalstring, [array regs])

    用途:ereg()函数用指定的模式搜索一个字符串中指定的字符串,如果匹配成功返回true,否则,则返回false。搜索字母的字符是大小写敏感的。

    参数定义:

      可选的输入参数规则包含一个数组的所有匹配表达式,他们被正则表达式的括号分组。

  strops():

    语法:strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) : int

    用途:查找字符串首次出现的位置

    参数定义:

      haystack:

        在该字符串中进行查找。

      needle:

        如果 needle 不是一个字符串,那么它将被转换为整型并被视为字符的顺序值。

      offset:

        如果提供了此参数,搜索会从字符串该字符数的起始位置开始统计。 如果是负数,搜索会从字符串结尾指定字符数开始。

    返回值:

      返回needle存在于haystack字符串起始的位置(独立于offset)。同时注意字符串位置是从0开始,而不是从1开始的。如果没找到 needle,将返回 FALSE。

  正则表达式分析:^[1-9]+$

    ^:表达式开始;

    $:表达式结束;

    [1-9]:数字1-9的范围;

    +:重复一次或多次;

  整段代码的含义:输入nctf的值,若不为1-9的数字,返回“必须输入数字才行”,若为1-9的数字,且找到了“#biubiubiu”,则返回flag,若没找到“#biubiubiu”,则返回“骚年,继续努力吧啊~”;

  思路1:题目提示为/00,可以想到%00截断,确实,在函数ereg()中,遇到%00则默认字符串结束,那么尝试构造nctf=1%00%23biubiubiu;

  取得flag(干杯~);

  思路2:函数ereg(),在输入为数组时,其返回值并不为false;

  可以看到$bbb的返回值为true,而$aaa的返回值并不为false而是报错;

  故可以用构造数组来绕过函数ereg();

  同理,可以绕过函数strpos();

  尝试构造nctf[]=1;

  取得flag(干杯~);

  未完待续~

CG-CTF(3)的更多相关文章

  1. Cg profiles,如何使用CGC编译Cg语言(转)

    抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 计算机只能理解和执行由0.1序列(电压序列 ...

  2. [DEFCON全球黑客大会] CTF(Capture The Flag)

    copy : https://baike.baidu.com/item/ctf/9548546?fr=aladdin CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的 ...

  3. 解读Unity中的CG编写Shader系列八(镜面反射)

    转自http://www.itnose.net/detail/6117378.html 讨论完漫反射之后,接下来肯定就是镜面反射了 在开始镜面反射shader的coding之前,要扩充一下前面提到的知 ...

  4. 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型

    [Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...

  5. CG&Game资源(转)

    cg教程下载: http://cgpeers.com http://cgpersia.com http://bbs.ideasr.com/forum-328-1.html http://bbs.ide ...

  6. (笔记)CTF入门指南

    [考项分类] Web: 网页安全 Crypto: 密码学(凯撒密码等) PWN: 对程序逻辑分析 系统漏洞利用 Misc: 杂项 图片隐写 数据还原 脑洞类 信息安全有关的 Reverse: 逆向工程 ...

  7. 小白的CTF学习之路2——二进制数据基础与运算(上)

    今天的第二更,被我拖到了傍晚,嘿嘿,二进制这方面让本就数学不好的我很头疼,所以研究了一段时间 在学习之前我们先了解几个问题: 32位是几个字节? 01011100对于十进制是多少? 00001111向 ...

  8. CTF竞赛(简介)

    一.解体模式(Jeopardy) 可通过互联网或现场网络参与,解决网络安全技术挑战题目,并以分值和时间排名. 题目主要包括:逆向,漏洞挖掘与利用,web渗透,密码,取证,隐写,安全编程 二.攻防模式( ...

  9. (译)Cg Programming/Unity(Cg编程/Unity)

    最近在学习Unity3d中的shader编程,能找到的中文资料比较少,于是,尝试翻译一下wiki Books上的资料,以方便其他跟我一样的入门学习者.由于是第一次翻译技术资料,经验不足,难免出错,请路 ...

  10. Cg(C for Graphic)语言语义绑定方法(转)

    摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 语义绑定方法 入口函数输入\ 输出数据的 ...

随机推荐

  1. 图解JVM内存区域划分

    图解JVM类加载机制和双亲委派模型一文中讲述了 Java 类加载的过程,它包含加载.验证.准备.解析.初始化.使用.卸载这 7 个步骤.在准备阶段,JVM会将类加载到内存中,为类变量分配内存并赋予初值 ...

  2. CTR学习笔记&代码实现2-深度ctr模型 MLP->Wide&Deep

    背景 这一篇我们从基础的深度ctr模型谈起.我很喜欢Wide&Deep的框架感觉之后很多改进都可以纳入这个框架中.Wide负责样本中出现的频繁项挖掘,Deep负责样本中未出现的特征泛化.而后续 ...

  3. 徒手生撸一个验证框架,API 参数校验不再怕!

    你们之中大概率早已练就了代码的拷贝.粘贴,无敌的码农神功,其实做久了业务功能开发,练就这两个无敌神功,那是迟早的事儿.今天先抛一个小问题,来打通你的任督二脉,就是很好奇的问一下:业务功能开发中,输入参 ...

  4. js检查数据类型

    在实际工作中我们经常遇到要检测传入的参数类型是什么.也许第一时间想的的是typeof ,但这个也只是能检测个别的一些类型.如果要检测null,Array这些类型呢? 所以我们可以封装一个方法可以更加方 ...

  5. EF 太重,MyBatis 太轻,ORM 框架到底怎么选 ?

    以 EF 为代表的基于 Linq 的 ORM 框架总是 很重. 他们的功能早已超出了一个 ORM 的范畴, ORM 是 Object Relational Mapping ,从名字上看,其初衷是将 数 ...

  6. scrapy中使用selenium来爬取页面

    scrapy中使用selenium来爬取页面 from selenium import webdriver from scrapy.http.response.html import HtmlResp ...

  7. UC接口文档

    UC接口文档 一.功能描述 提供同步登录.退出.注册等相关接口,可以实现用户一个账号,在一处登录,全站通行. 二.测试环境UC地址 http://s1.p5w.net/uc/ 三.相关接口 UC_AP ...

  8. 2017蓝桥杯算式900(C++C组)

    题目:算式900 小明的作业本上有道思考题:  看下面的算式:  (□□□□-□□□□)*□□=900  其中的小方块代表0~9的数字,这10个方块刚好包含了0~9中的所有数字.  注意:0不能作为某 ...

  9. java第十九天,Collections集合工具类的使用

    Collections Java中集合都实现了Collection接口,那么针对集合一些特定的功能,有没有一个接口或类能够统一的集成一些集合必要的功能呢?当然能.它就是--Collections集合工 ...

  10. spring boot 学习(一)——在idea建立第一个spring boot项目

    1.打开idea->点击file->点击new->点击project->点击Spring Initializr->点击default 2.这是springboot的启动类 ...