CGCTF | 风尘孤狼
0%

CGCTF

某大学新生题

签到题

image-20220322185411172看源代码即可!

md5 collision

image-20220322185443074

这道题只看php代码感觉是有点矛盾的,get传参a。同时还不能让a是QNKCDZO,但是又要求md51必须等于md52,而md51又是QNKCDZO的md5加密,显然这是矛盾的,通过md5加密看一下是啥样的形式。image-20220322190407943

是0e开头的,所以只需要让a也等于0e开头的形式就可以。这个题目利用了php弱类型。比如在==判等时,0exxxxx=0xsfdsf=0.而在源代码中直接给出了QNKCDZO的md5就是0e开头,使用a传输一个md5也是0e开头的即可image-20220322190801506

签到2

image-20220322190921096

这道题说输入口令就可以,但是输入的时候发现只能输入11位,可以通过f12修改数据来输入

image-20220322195654635

这题不是WEB

image-20220322195854718

题目说这题不是web,看源代码发现也无果,结合发现这个图片应该可以下载到本地用stegsolve看一下image-20220322200042315

层层递进

image-20220322204944031

查看源码,代码审计

image-20220322205209599 image-20220322205303809

AAencode

image-20220322205400607

崩了,这个跳过

单身二十年

image-20220322205457034既然已经说了靠手速,一般这样的题就是bp抓波send就得到flag!

php decode

image-20220322205632090

就是直接php运行即可,把eval改成echo,输出!

image-20220322205859772

文件包含

image-20220322205942560

直接payload:

?file=php://filter/convert.base64-encode/resource=index.php

image-20220322210311271 image-20220322210328401

单身一百年也没用

image-20220322210423830

抓包得到image-20220322210537128

Download~!

挂了

COOKIE

image-20220322210639051

看cookie发现值为0,改成1试试

image-20220322211009783

MYSQL

image-20220322211053784

访问一下robots.txtimage-20220322211149934

这里只是一个提示,审计一下发现是get传参id,代码表示如果输入的值是1024,就显示no,但是测试其他数据并没有回显

这是考察intval($_GET[id]);的作用获取变量的整数值,所以只要传递一个1024的小数即可!

image-20220322211739227

GBK Injection

image-20220322211811210

GBK Injection也就是宽字节注入,原理:

GBK 占两个字节
ASCII占一个字节
常见的宽字节有: GB2312、GBK、GB18030、BIG5、Shift_JIS等这些都是常说的宽字节,实际上只有两字节。宽字节带来的安全问题主要是吃ASCII字符(一字节)的现象。
通常来说,一个gbk编码汉字,占用2个字节。一个utf-8编码的汉字,占用3个字节。
大家都知道%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在 %df\’ =%df%5c%27,如果程序的默认字符集是GBK等宽字节字符集,则MySQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是縗,也就是说:%df\’ = %df%5c%27=縗’,即单引号逃逸,有了单引号就好注入了。
%df吃掉 \ 具体的原因是urlencode(’) = %5c%27,我们在%5c%27前面添加%df,形成%df%5c%27,而上面提到的mysql在GBK编码方式的时候会将两个字节当做一个汉字,此事%df%5c就是一个汉字,%27则作为一个单独的符号在外面,同时也就达到了我们的目的。

image-20220322212339070

sql注入,得到flag!

/x00

image-20220322212436100

需要绕过ereg()函数,有两种方法:

payload1
http://teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php?nctf[]=#biubiubiu
payload2 00截断
http://teamxlc.sinaapp.com/web4/f5a14f5e6e3453b78cd73899bad98d53/index.php?nctf=1%23biubiubiu

image-20220322212812889

bypass again

image-20220322213000572

代码审计和上面那个md5题一样的原理,就是让开头的标志一样,然后就可以通过。

image-20220322213258772

上传绕过

image-20220322213812013

这道题先正常上传一个图片显示必须上传php格式的文件image-20220323190037077

再上传php文件又显示只能上传图片image-20220323190128511

正确的做法是先抓包把2文件名改成muma.php.jpg,然后dir路径改为uploads/muma.php+

然后因为“+”的十六进制值为2b,这个时候再去hex找+,把2b改成00之后再放包!image-20220323190359584

变量覆盖

image-20220323190500865

下面给了提示,访问一下那个路径发现源码image-20220323190618568extract() 函数从数组中将变量导入到当前的符号表。

该函数使用数组键名作为变量名,使用数组键值作为变量值。针对数组中的每个元素,将在当前符号表中创建对应的一个变量。

第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。

该函数返回成功导入到符号表中的变量数目。

所以这道题给pass和thepassword_123用post传一个相同的值即可

image-20220323191016328

PHP是世界上最好的语言

挂了

伪装者

image-20220323191313280

抓包修改一下地址image-20220323191549273

X-Forwarded-For:127.0.0.1

理论上这样就行了,但是不行,在网上找应该是题目出了问题!

Header

image-20220323191825565

挂的题太多,不想做了,就到这吧!

制作不易,如若感觉写的不错,欢迎打赏