[HCTF 2018]WarmUp
题目提醒是PHP代码审计。
开题滑稽。。。
F12看一看发现了source.php, 那就看看吧
就看到有两个文件,source.php看过了,看看hint.php
出现如下界面
继续往下看吧
这个if语句要求传入的file变量:非空、类型为字符串、能够通过checkFile()函数校验,满足这三个条件即可包含file中的文件
对checkFile()函数进行审计,第一、二、三个if语句都不可利用,而在第四个if语句中,先进行url解码再截取,因此我们可以将?经过两次url编码,在服务器端提取参数时解码一次,checkFile函数中解码一次,仍会解码为’?’,仍可通过第四个if语句校验。(’?‘两次编码值为’%253f’),又因为ffffllllaaaagggg每个字母重复了四次,暗示了穿越4层目录(没读懂暗示也没关系,一层一层试就是了),构造url:
……/source.php?file=source.php%253f../../../../../ffffllllaaaagggg
[极客大挑战 2019]Havefun
好水的一道题。。。
直接传递一个cat=dog参数就出来了。。。
[GXYCTF2019]Ping Ping Ping
既然题目都叫ping了,那就ping一下吧
传递一下ip参数
正常请求,ls看一下
发现flag.php,cat一下
空格被过滤了,用$IFS$1代替空格,还是没用。于是试试index.php
可以看到都过滤了啥,flag也被过滤了,。
大佬说构建这样的playload, 其中Y2F0IGZsYWcucGhw是cat flag.php的base64 的编码。
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
还可以这样构造playload:
?ip=127.0.0.1;cat$IFS$1`ls`
dalao这样解释的:
- 方法名叫内联执行
- 方法:将反引号内命令的输出作为输入执行
然后F12就出来啦
[BJDCTF2020]Easy MD5
随便输入,发现有提示,需要绕过MD5进行注入了。。。
百度说:需要输入ffifdyop。至于为什么输入这个,因为这个经过md5编码后返回的原始二进制不是普通的二进制(因为raw为true),而是’or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c 这种。这样的话就会和前面的形成闭合,构成万能密码;
变成这样:
select * from 'admin' where password=''or'6.......'
考点,记着!
就输入ffifdyop试试看吧
需要绕过那个弱类型比较,
大佬又说这MD5有两种绕过方法:
(1)找出md5值都是两个0e开头的开头的。原理是php里面在做 == 的时候会先把两边的类型转成一样的,因为是0e开头,php会认为它是科学技计数法,而0的多少次方都是0。
举例:
QNKCDZO
s155964671a
s1091221200a
等等…
(2)数组绕过。原理是md5等函数不能处理数组,导致函数返回Null。而Null是等于Null的,导致了绕过。(题目中就传入 ?a[]=1&b[]=2 )
那我就试试数组绕过。
这回出现了强类型比较,数组绕过依然可行!
这一周就挑战了4道,拉垮拉胯拉胯