CG-CTF(3)
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)的更多相关文章
- Cg profiles,如何使用CGC编译Cg语言(转)
抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 计算机只能理解和执行由0.1序列(电压序列 ...
- [DEFCON全球黑客大会] CTF(Capture The Flag)
copy : https://baike.baidu.com/item/ctf/9548546?fr=aladdin CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的 ...
- 解读Unity中的CG编写Shader系列八(镜面反射)
转自http://www.itnose.net/detail/6117378.html 讨论完漫反射之后,接下来肯定就是镜面反射了 在开始镜面反射shader的coding之前,要扩充一下前面提到的知 ...
- 【Unity Shaders】学习笔记——SurfaceShader(二)两个结构体和CG类型
[Unity Shaders]学习笔记——SurfaceShader(二)两个结构体和CG类型 转载请注明出处:http://www.cnblogs.com/-867259206/p/5596698. ...
- CG&Game资源(转)
cg教程下载: http://cgpeers.com http://cgpersia.com http://bbs.ideasr.com/forum-328-1.html http://bbs.ide ...
- (笔记)CTF入门指南
[考项分类] Web: 网页安全 Crypto: 密码学(凯撒密码等) PWN: 对程序逻辑分析 系统漏洞利用 Misc: 杂项 图片隐写 数据还原 脑洞类 信息安全有关的 Reverse: 逆向工程 ...
- 小白的CTF学习之路2——二进制数据基础与运算(上)
今天的第二更,被我拖到了傍晚,嘿嘿,二进制这方面让本就数学不好的我很头疼,所以研究了一段时间 在学习之前我们先了解几个问题: 32位是几个字节? 01011100对于十进制是多少? 00001111向 ...
- CTF竞赛(简介)
一.解体模式(Jeopardy) 可通过互联网或现场网络参与,解决网络安全技术挑战题目,并以分值和时间排名. 题目主要包括:逆向,漏洞挖掘与利用,web渗透,密码,取证,隐写,安全编程 二.攻防模式( ...
- (译)Cg Programming/Unity(Cg编程/Unity)
最近在学习Unity3d中的shader编程,能找到的中文资料比较少,于是,尝试翻译一下wiki Books上的资料,以方便其他跟我一样的入门学习者.由于是第一次翻译技术资料,经验不足,难免出错,请路 ...
- Cg(C for Graphic)语言语义绑定方法(转)
摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 语义绑定方法 入口函数输入\ 输出数据的 ...
随机推荐
- MATLAB——时间,日期及显示格式
一.日期和时间 1.生成指定格式日期和时间 标准日期格式 2.获取当前时间的数值 >> datestr(now,) ans = -- :: >> datestr(now,'yy ...
- c#的全局异常捕获
以下操作在Program.cs中 1.最简单的方式try...catch.. 一般用在某一段容易出错的代码,如果用在整个软件排查,如下所示 static void Main() { try { App ...
- Light of future-凡事预则立
目录 1.冲刺的时间计划安排 2.针对上一次作业同学.助教提出的问题的回答 3.针对前几次作业的不足的地方进行思考和总结 4.需要改进的团队分工 5.团队的代码规范 6.Github仓库链接 归属班级 ...
- 关于竞赛大佬常用的 static const auto _ = []() 用法解析
前言 在刷Leetcode的时候发现很多运算速度极快的代码都有这一段,所以研究一下. static const auto _ = []() { ios::sync_with_stdio(false); ...
- django类视图的装饰器验证
django类视图的装饰器验证 django类视图的get和post方法是由View内部调用dispatch方法来分发,最后调用as_view来完成一个视图的流程. 函数视图可以直接使用对应的装饰器 ...
- 【Web】阿里icon图标webpack插件(webpack-qc-iconfont-plugin)详解
webpack-qc-iconfont-plugin webpack-qc-iconfont-plugin是一个webpack插件,可以轻松地帮你将阿里icon的图标项目下载至本地 开发初衷 之前已经 ...
- 修改Sysvol复制方式
最近博主在做公司的AD系统升级,首先在做AD系统升级前,一定要认真的调研!!!!在调研是否可升级的过程中 博主发现我司SYSVOL的复制方式还是FRS(没升级前公司是Windows server 20 ...
- tf.nn.depthwise_conv2d 卷积
tf.nn.depthwise_conv2d( input, filter, strides, padding, rate=None, name=None, data_format=None ) 参数 ...
- Kubectl patch命令使用
kubectl patch 使用(patch)补丁修改.更新资源的字段. 支持JSON和YAML格式. 请参阅https://htmlpreview.github.io/?https://github ...
- [题解]P1449 后缀表达式(栈)
题目链接:P1449 后缀表达式 题目描述: 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优 ...