Code-Audit-Challenges(三)

继续php代码审计~

21.

这里涉及到文件操作,估计是文件包含!不过这里有一个stripos()函数,这个函数功能是比较一个字符串在另一字符串的位置,这里返回的是比较成功的初识位置,就比如说stripos(“hello”,”lo”),返回的就是”lo”的起始位置,那么应该是3,这里我们GET参数传入时有涉及到php的弱类型,0==flase,因此这里我们首先构造?f=file_list,这样的话首先不会die掉,最后根据flag的位置来构造如何进行目录穿越

exp:?f=file_list/../../file_list.php

22.

代码好长。。慢慢来看吧,,这么多sql操作,估计是注入题了。。

其实上面的主函数就是规定了数据传输是通过curl,将$name和$cat变量传输给query.php,下面query.php有一个函数过滤功能,基本考点就是如何绕过这个过滤函数了。。看看有没有什么可以利用的~

在入库前是通过parsestr()这个函数进行了一次转义,百度了一下这个函数主要就是对字符串进行解析,同时具有urldecode()功能,因此这里可以使用%2527来绕过上述的addslashes()函数,最后就是如何绕过上述过滤语句,具体可参考这里:传送门

exp:’||if(rpad(key,1,1)=’a’,sleep(3),1)#

23.

代码怎么越来越长了。。

中间的foreach()是一个明显的变量覆盖漏洞!

而中间的判断语句login[0]==admin,因此在这里我们可以利用变量覆盖,来达到这个条件!

exp:?login[0]=admin

24.

真的是越来越长了!又有好多sql操作啊。。

首先最终条件要满足$vote==111,但是当$vote>100时,就会产生清空操作,因此通过vote累加到111一定不是不行的,这里只能直接赋值,来找找有没有什么输入点~

GET传入的参数为vote_for,再将这个参数赋值给$who,最后进行UPDATE操作,能出问题的也就这里了。。

exp:?vote_for=bill`=111 —

这里进行赋值后,语句会拼接成这样

这里注意是反引号闭合,又因为–的操作,后面的语句会被注释掉,因此可以直接令count为111

25.

wechall上的一道题目,首先是一串过滤函数,后面肯定用的到~

eval变量不能超过13长度,另外不能包含return,最后需要严格等于1337字符串,如果这里使用?eval=’1337’,那么会经过一次str_replace函数,最后也就便沉了?eval=1337,变成了数字而不是字符串,也就变成了不相等

这里使用的是php的一种特殊的字符串定义手法。。

<<<后面要提供一个标识符,这里为q,然后换行。接下来是字符串本身,这里为1337。结束时所引用的标识符必须在该行的第一列,即标识符q要在开头。标识符的命名只能包含字母、数字和下划线,并且必须以字母和下划线作为开头。在结束标识符这行除了可能有一个分号(;)外,绝对不能包含其它字符。

因此这里换行符可以用%0a来表示,因此最后我们可以构造exp

exp:?eval=<<<q%0a1337%0aq;%0a

26.



题目大意就是要求我们输入一个数,但是这个数字不能出现1-9,注意这里可以出现0

第一个想到的就是要么十六进制,要么科学计数法,这里很明显是十六进制

hex(3735929054)=0xdeadc0de

里面出现了0,但是不影响,因此可利用这种方法绕过验证函数~

exp:POST:answer=0xdeadc0de

27.



这里有过滤函数(只允许出现数字和字母),因此不能直接覆盖变量~

但是php中有一个特殊的变量:GLOBALS,这个变量可以引用全局变量中的可用变量

exp:$a=GLOBALS

28.

我们要让num>=10,就必须通过那个nums++,这里就必须满足那个if语句~

下面来重点演技if语句里的条件!

$value是我们传入的参数,这里$whoami必须等于$value的前两位,另外$value参数加密后的md5值的5-9位必须为0,,这条件也太苛刻了吧。。

直接爆破~爆破脚本就不给了。。理解意思即可~

29.

这里想要echo $flag就必须满足if语句,但是这个语句不是很复杂,只要让我们的输入等于这个产生rand值,下面来看看这个rand值是怎么生成的~

有五次循环,每次循环都在原有字符串后添加上一个随机值,最后返回总共的md5值

因为其随机性,因此就算是爆破也会十分复杂,但是好在这个是伪随机性

这是php对于生成随机数的定义,因此如果我们能得到连续的超过32个生成的随机数,就可以预测后面生成的数字~脚本省略,重在思路!

30.

实在好复杂。。有点超出我的能力范围了。。直接给出wp吧。。wp地址

相关推荐: Apache Kylin历史漏洞分析

1 前言 这里对Apache Kylin出现的两次漏洞进行下分析,本身漏洞也不难,而且前置条件需要用户登录,不过由于docker下的环境会存在一个默认账户(admin/KYLIN),所以这个登录条件的限制也不是那么的严格。在实际场景中如果能够遇到Kylin,配…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论