GuPay 支付宝免签收款平台

简介

GuPay是Gu-Studio推出的一款基于收款码的支付宝免签收款平台系统。

特性

  1. 高效性能,基于Laravel55开发
  2. 自适应CSS框架
  3. 精简API
  4. 分布式,易于部署
  5. 自带微信消息推送

站点图片

源码呢?

此次的项目为商用项目,所以恕我不能像往常那样子公布源码和仓库啦,抱歉owo

探究php的MD5函数输出的原始二进制数据是啥?

前序

最近我的朋友(Ge15emium)在研究CTF,发给我一个关于使用MD5函数实现sql注入的博文。文章通过构造特殊的字符串通过md5函数输出后,可以构造成注入SQL,拿到Flag。
博文链接:http://mslc.ctf.su/wp/leet-more-2010-oh-those-admins-writeup/?tdsourcetag=s_pcqq_aiomsg
通过文章我们知道作者通过使用md5()对ffifdyop进行加密处理后可以构造出‘or’6<trash>这样一个字符串,来规避掉php的代码检查,进而获得Flag。

本文主要探究的是md5函数怎么把32位16进制的报文摘要输出成为目标字符串,不涉及CTF的解密流程以及MD5的加密流程


1.怎么对字符串进行的加密?

php的md5()具有输出原始二进制数据的特性。

通过文章我们得知,博主通过使用php的md5(“ffifdyop”,true)输出其加密后的原始二进制数据得到目标字符串。从这个流程中我们进而引出下一个问题原始二进制数据是啥?怎么来的?


2.原始二进制数据是啥?怎么来的?

原始二进制数据不是指100111这些二进制数据,而是原始字符串转换成ascii码后组成的字符串。
接下来就使用前序中所说的字符串来演示如何转换。

  1. 使用md5(“ffifdyop”)进行加密
    通过加密后将会得到之后的32位16进制字符串:276f722736c95d99e921722cf9ed621c
  2. 将32位16进制字符串按照2个字符为一组切割成为16组16进制的字符串
    切割成27,6f,72,27,36,c9,5d,99,e9,21,72,2c,f9,ed,62,1c
  3. 将每一组16进制的数值转换成2进制
    100111,1101111,1110010,100111,110110,11001001,1011101,10011001,11101001,100001,1110010,101100,11111001,11101101,1100010,11100
  4. 将每一组2进制数值转换称为10进制数值
    39,111,114,39,54,201,93,153,233,33,114,44,249,237,98,28
  5. 最后对照如下的ASCII码表即可翻译的出最终的原始二进制字符串

    以前四组为例39=>’,111=>o,114=>r,39=>’,最终的组成’or’这一个字符串
    (其实理论上我们可以直接把16进制转换成10进制就好了,但是此处是为了展示我的思考过程才会有2进制这一步,希望写细一点可以帮助大家的理解和认识)

结尾

CTF的注入玩法真的是神仙玩法,平常使用md5函数都还没思考过这个问题,借由此机会也提升了我的php基础知识,使其更加扎实可靠,作为2020第一篇原创文,希望日后也能多写一些这样的文章吧。

广州 核聚变 Tour 2019 ARG 攻略

另类实境游戏(英语:Alternate reality game,简称ARG)也称另类现实游戏替代现实游戏侵入式虚拟现实游戏侵入式虚拟现实互动游戏,它是一种将真实世界当作平台的互动式剧情,通常包含多媒体与游戏元素,侵入式虚拟现实游戏的故事情节可以因参加者的想法或行动改变。

预热

11月8号晚上官博就发了一个用Unicode编码的微博

解法很简单,通过在浏览器的控制台输出一下即可。

主线流程

由于之前就云参加了一下杭州那个ARG的游戏,我买的又是第一天的票,所以一进场就开始找了。不过鉴于之前貌似是需要通过拼图的二维码才能找到ARG的入口,所以第一时间就去剑玉那拿了第一个碎片来扫码。

起点

当你扫开碎片的二维码后,输入ARG就会跳转到谜题1解谜方法:第一个谜题主要就是去找按照碎片的顺序去找指示牌对应的字母就好了.按顺序组合后,将会得出”sparkstage”这个字符串(也是第二个谜题的目标地点)

时间表

第二个谜题初看的时候是很迷糊的,圈圈星星啥的实在难懂,下面提示可以去sparkstage康康。由于一时间没啥想法,玩完Xbox那边就过去瞧了瞧。解密方法:这里的黑星,双星,圈圈其实就是对应的占位符,下面的6为f可知,剩余几个字母对应的数字其实就是对应了26个字母表里面的字母,而具体的数字,只要看看副舞台外面的时间表(或者手册上的那个也行),就可得知对应的字符为info,解出第三题。

谜题2

文件纸

这关是我卡了最久的了,一开始我以为是数独,但后面我才知道这个原来是一个猪圈密码,其实那个图里面右侧的白点,数字和字母都是干扰项目,忽略掉,按顺序画一下就好了。(其实一开始我是蒙出来的),通过查阅密码表,即可知道谜底为BOOOM。

谜题3
猪圈密码

迷宫

接下来的就很简单了,只需要去到BOOOM展台隔壁找寻到谜题上对应的透明卡片,重叠即可看到答案flag。

字母

这一题就仅仅需要找寻到对应地点的字母即可,按照场册子上面的顺序去相应地点找到字母即可,最终答案为exchange(兑换处)

终点

此时前往兑换处,出示截图,工作人员就会给你一张奖状的了(理论上前几名还会有U盘的,但是我太菜了,所以就仅仅剩下一张奖状了,不过也玩的十分的开心了,希望在今后搞多一点花样啊LOL)如果有dalao知道U盘内容是啥,欢迎来留言讨论呀,我其实想知道那个U盘能干啥用?获得成就,获得线下恰饭机会?

最后

这是我第一次参与到ARG的活动之中,之前就看过东大招新还有一些别人组织的ARG活动,都感觉贼炫酷,期盼可以参加一次。今天终于是梦想成真了,感觉是全场最有意思的一个游戏环节。通关的时候有着充足的获得感。我也希望可以自己发起一个ARG活动,整活一下:)如果明年还有羊城站,我必再战!!!

[笔记][翻译] 在Windows上编译PHP拓展

  • 来自于 Benoit Blanchon 20 January 2015
  • 译者 7gugu
  • 原文章链接 https://blog.benoitblanchon.fr/build-php-extension-on-windows/

我最近尝试编写了一个PHP拓展,虽然说文档上有很详细的介绍如何在Linux上进行编译操作,但是关于在Windows平台上编译的信息少之又少。

所以这篇文章就是给大家介绍一下,如何使用Visual Studio构建一个PHP拓展。

环境要求

这篇指南是假设在你已经编写了链接所示的一个输出”Hello World”的PHP拓展。 here并且你已经在Linux上成功编译了。

在Windows上构建你的PHP拓展前,你需要完成以下的操作。

  1. Visual Studio
    (这里是一个坑点,请确认你的VS的编译器的版本跟PHP编译时的版本是一样的。比如说官网的7.1.33是用的VC14【VS2015】编译的,那么你的拓展也要是用VC14编译的,否则是不能安装你编译好的拓展的。如果你用的是VS2017+,但你有用的是旧版本的PHP环境写的拓展,那么你就要手动编译PHP才能使用你编写的拓展了)
  2. PHP源代码 (未编译的PHP代码)

在之后的文章中,我将会按一下列表假设:

  1. PHP源码是位于C:\php-src
  2. 你编写的”Hello World”拓展位于C:\MyPhpExtensions\hello

在Windows上编译拓展跟Linux上有点相似

你应该已经很熟悉这个过程,但这里还是列出了一个步骤清单给你:
(以下虽然是在Linux上构建编译时运行的代码,但是在Windows上其实是一样的,只是有一些指令的名字和运行方法有点不同而已)

  1. 安装 php-devel
  2. 运行 phpizeconfig.m4中生成configure 脚本 .
  3. 运行 ./configure --enable-hello 生成 Makefile
  4. 运行 make 开始编译拓展

(以下是在Windows上编译时要改变的东西,按步骤执行就可以顺利生成拓展了)

使用 config.w32 替代 config.m4

在Windows平台上, 使用config.w32代替config.m4,但是格式上还是有点不同。

config.m4 迁移到 config.w32 是非常直接的, 你仅仅需要的是把Automake的代码转换成JavaScript语法的代码。

下面是一个简单的例子:

ARG_ENABLE("hello", "Hello World support", "no");
if (PHP_HELLO != "no") {
    EXTENSION("hello", "php_hello.c", true);
}

不要忘记把EXTENSION的第三参数设置成true , 这么设定就会选择生成动态编译库(DLL)而不是静态编译到PHP代码中。

如果你想知道更多关于*.32的语法信息,你可以看看别的文件夹的*.w32文件。

使用 buildconf.bat 代替 phpize

在Windows平台上,你将会使用 buildconf.bat 代替 phpize

打开VS的”适用于 VS 20XX 的 x86/64 本机工具命令提示”命令行工具并且运行以下代码

cd C:\php-src
buildconf.bat --add-modules-dir=C:\MyPhpExtensions

buildconf.bat 将会自动扫描 C:\MyPhpExtensions 文件夹下所有的 config.w32 文件。

随后将会生成一个 configure.bat的脚本文件.

使用 configure.bat 代替 ./configure

在Linux上,configure就仅仅是用来编译拓展用的,但是在Windows平台上configure.bat是用来编译PHP代码为exe文件的。

你需要在运行 configure.bat 时添加以下命令行选项以生成最少数量的内容,从而确保不必解决对外部库的依赖性

cd C:\php-src
configure.bat --disable-all --enable-cli --enable-hello

--disable-all 就是禁止生成其他内容,省略了输入 --disable-xxx--without-xxx的必要 , --enable-cli 是启用php命令行界面 (ie php.exe) , --enable-hello 是启用编译你的拓展”Hello”

系统默认会按照TS(线程安全)模式进行编译,如果你需要NTS(线程非安全)模式进行编译,你仅仅需要加上这一条 --disable-zts ,就可以按照NTS模式进行编译。

使用 NMake 代替 Make

configure.bat 将会生成一个Windows版本的 Makefile 用作在Windows上 Make.(编译代码)

开始编译代码,仅仅需要运行以下代码即可:

nmake

这不仅仅会编译你自己的拓展,同时也会将 php.exe 编译出来。 这对于开发者来说,是一个很方便的做法,因为你需要一个相同编译环境生成出来的 php.exe,那样子才能正确安装你的PHP拓展。

实际上,为了加载到php中,您的扩展必须与php构建相匹配,条件是:

  1. 系统位数 (32 or 64 位)
  2. 线程是否安全 (TS 模式 或者 NTS 模式)
  3. 编译器的版本 (VS9, VS11 之类的.)

如果你确实不需要编译出 php.exe, 那么你仅仅需要按以下代码运行即可:

nmake php_hello.dll

消除警告(Warnings)

在编译PHP拓展的过程中,编译器常常会报一堆警告:

如果你想禁用这些警告,你可以在 c:\php-src\win32\build\config.w32中,加入以下的代码段:

ADD_FLAG('CFLAGS', ' /wd4005 /wd4267 /wd4244 ');
ADD_FLAG('CFLAGS_BD_ZEND', ' /wd4018 /wd4101 /wd4090 /wd4273 ');
ADD_FLAG('CFLAGS_BD_MAIN', ' /wd4018 /wd4090 ');
ADD_FLAG('CFLAGS_BD_MAIN_STREAMS', ' /wd4013 ');
DEFINE('RC', '$(RC) /nologo /d _USING_V110_SDK71_');

并且,在 C:\php-src\ext\standard\config.w32中加入这行代码:

ADD_FLAG('CFLAGS_BD_EXT_STANDARD', ' /wd4047 /wd4018 ');

最后在 C:\php-src\sapi\cli\config.w32中加入下列这一行代码:

ADD_FLAG('CFLAGS_BD_SAPI_CLI', ' /wd4018 ');

笔记: 一些能够帮助你开发PHP拓展的博文[英文生肉]