在線考試,一道題太難做不出來,怎么辦,是多少寫點(diǎn)還是直接放空?
在NOIP 2020(信息學(xué)奧賽)上,一位浙江同學(xué),“另辟蹊徑”,最終,還拿了滿分。
簡(jiǎn)單來說,就是他在直接指定了驗(yàn)算數(shù)據(jù),還要「改卷老師」就按著這個(gè)數(shù)據(jù)判卷。
什么,還可以這么操作?是不是感覺匪夷所思?
這,是NOIP2020被發(fā)現(xiàn)的Bug,是怎么回事?又是什么導(dǎo)致的Bug?
直接把驗(yàn)算數(shù)據(jù)改了
不妨直接來看看選手提交的代碼:
圖源:洛谷
是的,就是這么直接,打開輸入文件,覆蓋驗(yàn)算數(shù)據(jù);打開輸出文件,寫入答案。
相當(dāng)于做數(shù)學(xué)題,考生的解題過程只有在特定數(shù)據(jù)下是正確的,但考生在改卷老師判卷的時(shí)候,直接讓老師全部按著這組數(shù)據(jù)去改。
是不是發(fā)現(xiàn)了核心問題所在了?對(duì),改卷老師的數(shù)據(jù)能被修改了,就是Bug所在。
在了解Bug之前,我們先來對(duì)比和了解一下二者改卷的流程。
在NOIP2020中,驗(yàn)算數(shù)據(jù)是內(nèi)置的ball.in文件,答題卡是考生提交的程序,而改卷老師就是系統(tǒng)中的checker。
正常的評(píng)測(cè)流程:
評(píng)測(cè)系統(tǒng)給一個(gè)輸入ball.in文件;
運(yùn)行選手的程序,得到ball.out文件;
用checker去檢查ball.in對(duì)應(yīng)的ball.out文件的答案是不是滿足要求。
鉆空子后的評(píng)測(cè)流程:
評(píng)測(cè)系統(tǒng)給一個(gè)輸入ball.in文件;
運(yùn)行選手的程序,選手改了ball.in文件,同時(shí)寫入ball.out文件;
用checker去檢查ball.in(修改過的)對(duì)應(yīng)的ball.out文件的答案是不是滿足要求。
這個(gè)Bug中最詭異的地方,就是:原本應(yīng)該只有只讀權(quán)限的ball.in文件,竟然能夠被輕易修改。
這個(gè)低級(jí)問題,出在哪里,還不知道,但是據(jù)網(wǎng)友推測(cè):應(yīng)該就是落后老舊的評(píng)測(cè)軟件Arbiter的鍋。
因?yàn)锳rbiter的問題和Bug實(shí)在是太多了,修改ball.in文件只是其中之一。
知乎網(wǎng)友Menci的回答中,通過Arbiter,選手其實(shí)還能直接解限內(nèi)存(增加計(jì)算力)和解限時(shí)間(增加答題時(shí)長(zhǎng))。
正是由于Arbiter的技術(shù)太落后了,存在各種Bug,才讓驗(yàn)算數(shù)據(jù)的修改成為了可能。
此外,網(wǎng)友的討論,也能發(fā)現(xiàn),在文件讀取的指令中,也存在一些問題。
如果改卷老師先把輸入數(shù)據(jù)看一遍,那么就算后面數(shù)據(jù)被偷換了,也不會(huì)出現(xiàn)誤判。
但是,系統(tǒng)程序的加載順序偏偏是,先運(yùn)行選手的文件,于是,才留下了可乘之機(jī)。
當(dāng)然,這個(gè)可乘之機(jī),也是有使用局限的,而這,跟Special judge的獨(dú)特判定機(jī)制有關(guān)。
Special Judge,是讀取選手提交的特定程序,通過驗(yàn)算數(shù)據(jù)來確定選手提交的程序輸出(ball.out文件)是否正確。
而平常的題目,只需核對(duì)答案就行,就不需要讀取程序。
直接核對(duì),也就沒有了篡改驗(yàn)算數(shù)據(jù)的機(jī)會(huì)。
而今年,卻是NOIP競(jìng)賽首次出現(xiàn)Special Judge題目。
就這樣,各種陰差陽(yáng)錯(cuò)的情況下,NOIP2020中最難的一道題,就這么被「改」出了滿分答案。(狗頭)
取消成績(jī)?禁賽三年?
這位同學(xué)此次的行為,算是踩到了競(jìng)賽本身和競(jìng)賽規(guī)則的一處灰色地帶。
至于會(huì)怎么處理,還不得而知,我們只能從規(guī)定和往年的一些案例中窺探一二。
在往年中,CCF本身是對(duì)違規(guī)行為有著規(guī)定和處罰的。對(duì)于個(gè)人違規(guī)的判例上,可以分為三個(gè)層級(jí):
不合程序的成績(jī)作廢;
選手禁賽三年;
扣除所在省選下季名額1個(gè),優(yōu)先扣除作弊選手所在學(xué)校的名額。
從過往案例來看,如果只是選手在過程中被認(rèn)為不合乎程序,那么即該部分成績(jī)?nèi)∠?,這種情況一般是沒有直接認(rèn)定為作弊。
而一旦認(rèn)定為作弊,則是禁賽三年和扣除名額同時(shí)進(jìn)行。
可以看出,認(rèn)定為作弊和非作弊二者之間,處罰力度之間的差距還是很大。
因此,該同學(xué)面臨處罰的最關(guān)鍵點(diǎn),便是在于其行為與作弊之間的一個(gè)認(rèn)定。
那么,CCF往年是如何認(rèn)定作弊的呢?從往年公告中,我們可以看到:
為獲獎(jiǎng)采取了抄襲、拷貝等不正當(dāng)?shù)氖侄巍?/p>
另外,在作弊通告中,CCF特別強(qiáng)調(diào):
本學(xué)會(huì)認(rèn)為,誠(chéng)信是對(duì)一個(gè)成長(zhǎng)中的學(xué)生最起碼的道德要求,也是參加競(jìng)賽的前提條件,CCF嚴(yán)厲譴責(zé)任何弄虛作假的行為。
按照往年來看,「等行為」與「誠(chéng)信」,似乎足以給這個(gè)行為定性。
但是,也有網(wǎng)友認(rèn)為:CCF軟件出了問題,合理利用規(guī)則,沒有違反規(guī)定。
至于最終如何,只能等待處理結(jié)果出來才能知曉了。
網(wǎng)友討論:快去打CTF
NOIP2020被考生鉆了空子,這事一經(jīng)發(fā)布,便引起啦網(wǎng)友的關(guān)注和討論。
在知乎上,相關(guān)提問已經(jīng)有了89W的瀏覽量,并沖上了當(dāng)日的知乎熱榜。
對(duì)于這種黑客式的攻擊行為,又怎能不讓人想到CTF(網(wǎng)絡(luò)安全技術(shù)奪旗賽)呢?
這也難怪網(wǎng)友們都驚呼:快去打CTF
另外,也有網(wǎng)友調(diào)侃道:CTFer又多了個(gè)拿獎(jiǎng)的地方。
所以,這位同學(xué)要不要考慮一下網(wǎng)絡(luò)安全技術(shù)奪旗賽呢?(狗頭)
原文標(biāo)題:我在信息學(xué)奧賽上,用Bug直接改了驗(yàn)算數(shù)據(jù),拿了滿分算作弊嘛?
文章出處:【微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
6767瀏覽量
88633 -
編程
+關(guān)注
關(guān)注
88文章
3544瀏覽量
93491
原文標(biāo)題:我在信息學(xué)奧賽上,用Bug直接改了驗(yàn)算數(shù)據(jù),拿了滿分算作弊嘛?
文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論