美文网首页
实验吧 Web-False

实验吧 Web-False

作者: byc_404 | 来源:发表于2019-06-17 22:24 被阅读0次

    没想到又有时间写wp了。。那就再写一篇吧。

    False

    跟前两次写的题一样,还是php代码审计,而且这一次的题跟cg-ctf上的md5collision有很多相似之处,索性一起总结下吧。

    先贴源代码:

    FALSE源码

    这里的isset()是php中检查变量是否设置的函数,若存在且值不为空,则返回True,否则返回False.

    sha1(),用于计算字符串的SHA1散列值。

    因此对于sha1()而言,默认传入字符串,传入其他类型就返回False了。

    那么很快又可以总结需要满足的条件:

    1)name与password不为空

    2)name与password值不相同

    3)name与password的sha1值相等(这里的相等是强类型“===”)

      之前偶然看到其他代码审计的题目提到了数组绕过的方法,这里也可以用数组绕过sha1,因为令传入的name与password均为数组,最终sha1值不等

    构造URL:http://ctf5.shiyanbar.com/web/false.php?name[]=1&password[]=2

    flag

    下面再记录下很久之前做的cg-ctf上的md5collision

    md5 collision

    源码如下:

    php源码

    这题的条件与上一题十分相似:

    1)变量a存在

    2)a的md5值跟'QNKCDZO'相等

    3)  a的值跟'QNKCDZO'不等

    可以知道'QNKCDZO'的md5值为'0e830400451993494058024219903391'

    而这里对$md51与$md52两个哈希值进行比较的运算符是‘==’,在php中属于弱类型,因此只要是个0e开头的哈希值都直接被php认为0.

    所以可以去网上搜一波md5值为‘0e’开头的字符串就好了。

    flag

    最后,作为还在摸爬滚打的web小白,先补充下这些天直接用构造url提交得flag的原理吧:

    转自https://www.cnblogs.com/zsots83/articles/7755295.html,感谢博主

    浅谈HTTP中Get与Post的区别:

    Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为: 一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。 到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。 表面现像上面看看GET和POST的区别:

    GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连, 如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+, 如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

    POST把提交的数据则放置在是HTTP包的包体中。         

    今天就到这里吧

    相关文章

      网友评论

          本文标题:实验吧 Web-False

          本文链接:https://www.haomeiwen.com/subject/gdqtqctx.html