wechall-php-wp

7 篇文章 0 订阅
2 篇文章 0 订阅

Training:PHP LFI

,问题的要求是最后访问solution.php,关键就是对系统目录的命名%00截断的理解,开始思路是对的。。不过还是没想到要越两级才能访问,一开始就试了一下越一级访问,发现返回的提示是no this directory or file,说明solution.php不在当前文件夹下,这时候应该向上一级访问

这里简单贴一下自己总结的几种文件包含的绕过:具体的以后再写个博客吧,贴个比较详细链接:http://drops.wooyun.org/tips/3827(这篇文章刚开始挺详细的,越往后越简略。。。)

2.1 %00 截断(Magic_quote_gpc为off的情况下)

http://127.0.0.1/include.php?dir=shell.txt%00

2.2 使用?截断(用于远程文件包含)

http://127.0.0.1/include.php?dir=http://127.0.0.1/shell.txt?

http://127.0.0.1/include.php?dir=http://127.0.0.1/shell.txt%23

2.3 通过使路径长度达到一定长度限制时截断(均适用)

通常Windows的截断长度为240,Linux的截断长度为4096。由于Windows和linux的文件名都有一个最大路径长度(MAX_PATH)的限制,因此当提交文件名的长度超过了最大路劲长度限制是就会截断后面的内容,从而达到文件包含的效果。

2.4 点号截断(当magic_quote_gpc为off的时候,仅限windowns服务器)

例子:http://127.0.0.1/include.php?dir=../../../../ect/passwd……………………………………………………………………[很多的.]

 

PHP 0817

,最后的目的还是包含到solution.php,看代码逻辑很好理解,当which是2的时候就包含which.php,所以,关键就是处理输入的which参数,看wp,直接which=solution就可以过,但是并不知道原理,后来,自己猜测输入solution以后,除default以外所有的语句都执行了一遍,也就是说,这里利用了php的弱类型,在用字符串匹配数字的时候,会匹配成0

Training:Register Globals

,这道题最后要求以admin身份登录,先查看源码,开始思路走偏了,看到md5(),就以为是sql注入的题目,后来看wp才知道是一道变量覆盖的题目,为什么是变量覆盖,还是没理解代码的含义,,明显要login[0]=admin,这句提示login是可以通过输入控制的,所以输入login[0]=admin,然后填入username和password就可以了

Are youserial

这道题目有点儿意思,,给了不少源码,排着分析,在code.php中,有这样一段判断,一开始不理解为什么,继续看,ser,这里有关键函数,unserialize(),是对cookie里的serial_user参数进行处理,在user.php里定义了userlevel=0,然后实际运行一下程序,抓个包分析一下,cookie中没有serialize的部分,也没有serial_user参数,这里就是关键了,正常运行的程序login会设置值,也就是上面的判断,于是题目的解法就有了,去掉login,这样就可以绕过判断,执行unserialiaze(),然后再构造合法的serial_user就可以了,一开始构造的是SERIAL_User类,添加cookie以后登录,发现只是修改了userlevel,说明基本上思路是正确的,然后有一个solution.php的文件,里面给了一个类,这里调用了solve,所以,要构造一个SERIAL_Solution类,这样问题就解决了

PHP 0819

 

,这道题代码量很少,直接贴上源码,这里会对输入进行过滤,对eval参数进行过滤,然后将过滤后的值传给spaceone,最后要是spaceone的值变成1337即可,这个也是要看wp才知道有这么一个知识点,heredoc,不得不说php确实一门很高深的语言,http://blog.csdn.net/hutaoer06051/article/details/7901032,这个博客对heredoc的介绍比较详细,这里就不赘述了,这里强调几点,首先始末标记在输入部分一定不能出现,其次,一定注意换行符的个数,在起始符之后一个换行,结束符前一个,然后结束符一定要加‘;’,最后,在‘;’之后也要加一个换行。

HOST me

,这道题代码很少,使用的知识点也比较单调,只用修改http头信息,把host改成localhost即可,但是出现wrong vhost,这是为什么呢?看了wp知道,这是因为,访问主机与虚拟host存在相同路径,,而头部是自省略的写法,所以会因无法识别主机host而导致,wrong vhost,这时候只需要补全路径即可,记得要加上http协议。

PHP 0815

这道题也是wechall比较常见的一种题目,就是漏洞修复,这是mission,最后就是为了添加代码用来修复存在的漏洞,,这是源码部分,看源码,在变量$show的位置,存在sql注入,这里用了htmlspecialchars()函数,对输入进行了第一步过滤,过滤了引号,但是问题不是出在htmlspecialchars(),而是在in_array(),in_array()和intval()有类似的作用,这里因为白名单只允许1-3数字,所以要利用这一点,只是至于怎么加限制,并不知道,看wp说php有 wtf的atoi转换规则,后来问了下,还是利用了php的弱类型,字符串与整数加减会被自动转换成整数,所以才有了最后的提交-0,这样输入的字符串$show就会被转换成整型,从而达到过滤的作用。

PHP 0818

这道题目要输入给定的数字串,但是给的这个函数,对输入进行了过滤,然后想了一下,最后的判断是==,说明有php弱类型,16进制或者8进制转换可以实现,8进制转换完还是10以内,所以16进制转换完,刚好是deadc0de,没有出现1-9的数字,成功绕过

htmlspecialchars

这道题就是利用之前出现的htmlspecialchars()函数,这是给出的mission,这里说的也比较清楚,这个函数可以用来过滤xss攻击,他所给出的代码的关键问题所在就是函数没有对单引号进行过滤,http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp这个对htmlspecialchars()的参数有比较详细的介绍,所以这里的修改只需要加上ENT_QUOTES,对单双引号进行过滤即可。

PHP 0816

这个题也是要读取solution.php,估计是一道文件包含,这里把代码全贴出来,是因为这个代码的分析量很小,并不需要作太多分析,,这里给出的是参数,没有添加过滤,foreach循环里面的判断有顺序,所以先mode,然后再source, ,只是修改参数传递顺序即可,,得到访问。

Yourself PHP

,这个题目的mission最后就是要实现xss攻击,直接找注入点,直接找到参数PHP_SELF就是注入点,这是从http头获得的,所以提交的时候需要修改报文,后来查了一下,这也是一个知识点,http://reader.roodo.com/linpapa/archives/7626693.html,这篇文章中讲的就是这样的一个利用,这里直接借鉴就好了。这里也学会了一种姿势,xss攻击是针对用户本地的,所以在本地浏览器上会看到xss攻击的痕迹。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值