banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Messages posted by: pdah  XML
Profile for pdah Messages posted by pdah [ number of posts not being displayed on this page: 4 ]
 
vbb nó có cái javascript md5 cái pass rồi mới gửi lên server xử lý tiếp đó anh iu ^^ . 

VBB có 2 chế độ login, nếu trình duyệt đã disable javascript thì 2 trường vb_login_md5password và vb_login_md5password_utf8 sẽ được để trống, và trường vb_login_password sẽ chứa password chưa mã hóa của mình.
Bạn thử để trống vb_login_md5password và vb_login_md5password_utf (hoặc bỏ hẳn, không định nghĩa hai trường đó trong dict luôn), ngoài ra điền username và password (chưa mã hóa) của bạn vào vb_login_username và vb_login_password xem sao.

Góp ý ngoài lề tí xíu: Python không bắt buộc mọi câu lệnh phải kết thúc bằng dấu ; đâu bạn smilie
PS: Không hiểu sao Google Chrome lại thiếu mất tính năng cho phép người dùng chọn minimum font size ngay trên trình duyệt vậy? (default font quá bé, nhìn toét cả mắt). Đã bạn nào chỉnh được minimum_font_size với lại minimum_logical_font_size trong ~/.config/google-chrome/Default/Preferences chưa vậy? 

Em dùng Chrome trên Slack và vẫn chỉnh được font chữ mặc định bằng 2 thông số đó.
Em thấy trên Slacky.eu có bản Slackbuild cho Slackware users đó anh quanta, ngoài ra bác lukas@vnsec cũng có một bản build cho version mới nhất của Chrome trên slackware 13.0.
Bài của bạn thì sẽ không bị xóa đâu, nhưng bạn sẽ bị nhắc là phải Google trước khi hỏi đấy smilie
Post hơi trễ một chút xíu nhưng mà port của apache chắc chắn không phải là vấn đề, bởi vì nếu xảy ra conflict về port thì bạn thậm chí ko thể access được file php vừa tạo ra nữa.
Tốt nhất là bạn post file httpd.conf lên đây cho mọi người xem.
Suy đoán ban đầu của tui là bạn chưa enable module php trong apache.

quanta wrote:
Vậy thì có lẽ em chọn nhầm diễn đàn rồi. 

Không thể có câu trả lời nào hay hơn câu này.
Thông tin về cài hệ điều hành này thì xuất hiện cũng lâu rồi, có điều đọc dòng này thấy tào lao thế nào ấy :
Với tham vọng và niềm tin vào trí tuệ Việt, các kỹ sư phát triển Fenix Desktop 2009 đã đặt mục tiêu “thách thức với Microsoft” trong phát triển hệ điều hành máy tính tại thị trường trong nước và xa hơn là tại thị trường quốc tế. 
Dear hoang171,
Please kindly post your question in our mother language as we're all Vietnamese here.
And if you still want to use English, at least use right words in their right forms. This is not the place to show off your *perfect* English skill
vui lòng gửi CV (tiếng Anh hay tiếng Việt đều được) về địa chỉ email thaidn AT dongabank.com.vn  

Cái chữ "địa chỉ email" nằm chình ình ra đấy, là một sinh viên IT mà không biết tự thắc mắc những từ đằng sau đó mang ý nghĩa gì hay sao ? Nếu biết tự thắc mắc thì hẳn là sẽ tự trả lời được vì bạn là người "Tuy tự học nhưng chắc gì mấy người được đào tạo chính quy hơn em chưa" cơ mà smilie

Dù sao thì cách viết như vậy cũng hay, tránh nhận được email của những bạn như thế này.
Lần sau viết luôn thành "thaidn AT dongabank DOT com DOT vn" đi anh smilie
Bạn có thể sử dụng bất kỳ công cụ RSS Reader nào hoặc email client để theo dõi các tin mới nhất của HVA bằng cái feed này
/hvaonline/rss/recentTopics.html

Cách thứ hai là bạn có thể bookmark đường link dẫn đến các chủ đề mới nhất :
/hvaonline/recentTopics/list.html

Ngoài ra cũng có thể lợi dụng chức năng cache url của browser : mình vào cái link này khá thường xuyên nên bây giờ mỗi lần dùng Firefox, chỉ cần gõ "re" vào address bar là cái link này hiện ra ngay.

Cái khó ló cái khôn, nên đôi khi bất tiện một chút lại thấy hay smilie
Xài OpenDNS cho nó máu :p
Code:
nameserver 208.67.220.220
nameserver 208.67.222.222
1. Đọc nội dung file
------------------------
File index.html nguyên bản có tổng cộng 4 dòng. 'vi' em nó 1 phát thì thấy dòng 1,2,4 hoàn toàn bình thường, dòng 3 chỉ toàn ký tự khó hiểu.
Để ý trong phần <head> của file HTML, thấy bảng mã ký tự được sử dụng là US-ASCII, đây là bản mã ASCII chuẩn, chỉ sử dụng 7 bit đầu của một byte ký tự, bit thứ 8 bỏ qua. Tác giả đã cố ý bật bit cuối cùng này lên, vì vậy nếu ta mở file này bằng các chương trình editor thông thường hoặc browser không hỗ trợ bảng mã US-ASCII sẽ chỉ thầy một đống "bùi nhùi".
Để giải mã file này có 2 cách :
a. Dùng IE mở file này lên, save as thành file index1.html
b. Viết một đoạn script nho nhỏ như thế này :
Code:
#! /usr/bin/python
input = open("index.html", 'r')
s = ''
s += input.readline()
s += input.readline()
line3 = input.readline()
for x in line3 :
s += chr(ord(x)&0x7f)
s += input.readline()
print s


Cho em nó chạy :
Code:
$ ./step1.py > index1.html


2. Cửa ải đầu tiên mang tên mineGame3
----------------------------------------------

Kéo chuột từ trên xuống dưới để kiểm tra file index1.html, lại thấy một đống bùi nhùi từ dòng 743. Thay hàm document.write bằng alert, ai dùng Firefox và có cài Firebug thì thay bằng console.log, dùng trình duyệt mở file này và thấy được nội dung :

Code:
<script>function dF(s){var s1=unescape(s.substr(0,s.length-1)); var t='';for(i=0;i<s1.length;i++)t+=String.fromCharcode(s1.charcodeAt(i)-s.substr(s.length-1,1));document.write(unescape(t));}</script>


Copy đoạn này lại và paste nó vào index1.html, ngay trước dòng
Code:
<SCRIPT LANGUAGE="JavaScript" id="mineGame3">


Đồng thời xóa đoạn code cũ đi, lại thay hàm document.write bằng alert hoặc console.log và mở bằng trình duyệt, ta thấy được nội dung này :
Code:
<script language=JavaScript>function l11111l(l1111ll){try{ll111II(ll11ll11l);for(var IIIlIII = 0; IIIlIII < ll111ll.length; IIIlIII++) { IIIIIII += ll111ll.charcodeAt(IIIlIII) }IIIIIII = IIIIIII % 200000;var lllIlll = new Array; lllIlll = l1111ll.split(",");var IIIIIll = ""; for(var IIIlIII = 0; IIIlIII < lllIlll.length; IIIlIII++) { IIIIIll += String.fromCharcode(((lllIlll[IIIlIII])-IIIIIII) ^ llIlIII.charcodeAt(IIIlIII%llIlIII.length));}var IIIlllI=IIIIIll.length,lIlIlIl,IIlllII,IlllIll,IlIlIlI=(512*2),llIlIIl=0,llIllll=0,lllllll=0;for(llIIIII= Math.ceil(IIIlllI/IlIlIlI);llIIIII>0;llIIIII--){IlllIll=''; for(lIlIlIl=Math.min(IIIlllI,IlIlIlI);lIlIlIl>0; lIlIlIl--,IIIlllI--){lllllll|=(IIIlIIl[ IIIIIll.charcodeAt(llIlIIl++)-48])<<llIllll;if(llIllll){IlllIll+=String.fromCharcode(209^lllllll&255);lllllll>>=8;llIllll-=2}else{llIllll=6};} ll111II(IlllIll) } } catch(error) {}}</script><script language=JavaScript>var IIIlIIl=Array(63,12,6,53,0,48,43,54,42,47,0,0,0,0,0,0,59,13,25,30,50,60,1,18,61,8,16,56,20,49,51,21,45,28,22,31,35,5,14,23,27,37,2,0,0,0,0,55,0,11,33,9,19,40,41,15,62,3,39,10,32,17,44,36,24,7,52,26,29,58,57,46,4,34,38);l11111l("71496,71517,71488,71525,71484,71487,71467,71528,71541,71503,71531,71511,71530,71530,71546,71482,71515,71499,71531,71511,71442,71540,71525,71497,71516,71474,71507,71464,71441,71449,71525,71526,71542,71540,71546,71474,71443,71543,71477,71532,71506,71448,71448,71492,71546,71542,71486,71471,71455,71522,71455,71475,71565,71477,71459,71467,71464,71473,71488,71478,71473,71475,71452,71453,71548,71527,71524,71558,71554,71531,71450,71553,71502,71495,71450,71480,71445,71506,71558,71553,71481,71484,71509,71525,71563,71503,71448,71463,71474,71442,71454,71528,71473,71488,71454,71510,71484,71501,71450,71526,71489,71455,71458,71551,71549,71551,71537,71507,71562,71455,71450,71485,71567,71470,71553,71501,71554,71459,71565,71464,71443,71481,71562,71447,71537,71526,71486,71466,71481,71484,71498,71467,71455,71489,71523,71533,71446,71487,71553,71488,71443,71501,71485,71553,71562,71476,71513,71519,71445,71492,71458,71453,71480,71448,71451,71453,71464,71533,71512,71479,71460,71455,71488,71479,71567,71497,71512,71518,71554,71452,71554,71448,71449,71557,71561,71453,71447,71494,71447,71510,71497,71462,71485,71553,71494,71466,71469,71510,71449,71516,71527,71441,71454,71526,71442,71464,71506,71468,71471,71524,71465,71475,71477,71532,71498,71475,71448,71492,71561,71546,71538,71501,71562,71531,71531,71538,71502,71526,71552,71509,71513,71481,71474,71508,71529,71559,71550,71517,71538,71565,71495,71445,71484,71531,71553,71442,71468,71501,71568,71526,71536,71513,71527,71542,71552,71563,71534,71466,71484,71496,71461,71458,71508,71498,71462,71513,71554,71448,71442,71532,71498,71448,71475,71568,71542,71514")</script>

Nhìn thoáng qua đoạn này sẽ thấy có lời gọi hàm ll111II(), search nguyên file thì không thấy hàm này được định nghĩa ở đâu cả. Điều này chứng tỏ đoạn mã định nghĩa nó đã bị che đi bằng 1 cách nào đó.

3. Cửa ải thứ 2 mang tên mineGame2
----------------------------------------------
Trong cả 2 lần che dấu code trước, tác giả đểu dùng hàm document.write, vì vậy sao ta không thử tìm các hàm document.write khác xuất hiện trong file. Trong số kết quả tìm được, đáng nghi ngờ nhất hẳn là dòng này :

Code:
document.write(mineCount2);


Đi ngược lên một chút để xem mineCount2 là cái gì :
Code:
minelist2=document.getElementById('mineGame2').innerHTML.split('\r\n');
mineCount2 = "";
for(c=4; c < (e+4); c++)
{
mineName2=minelist2[c];
for(f=0; f < d; f++)
{
y = ((mineName2.length - (8*d)) + (f*8));
v = 0;
for(x = 0; x < 8; x++)
{
if(mineName2.charcodeAt(x+y) > 9)
{
v++;
}
if(x != 7)
{
v = v << 1;
}
}
mineCount2 += String.fromCharcode(v);
}
}
document.write(mineCount2);

Bổn cũ soạn lại, thử quăng hàm alert vào, lần này chờ mãi ko thấy cái message box nào nhảy ra, nhìn kỹ lại code:
Code:
minelist2=document.getElementById('mineGame2').innerHTML.split('\r\n');

mineGame2 chính là id của thẻ script chứa đoạn mã này, hóa ra đoạn mã đang dùng chính nó để giải mã, dẫn đến việc thay đổi nội dung trong code chỉ có phản tác dụng mà thôi.

Thử copy nội dung của script đó ra 1 file mới ( đặt tên là mineGame2 ) và viết một đoạn giải mã tương đương bằng python để mã hóa nó :
Code:
#! /usr/bin/python
input = open("mineGame2", 'r')
d=1;
e=165;
mineCount2 = "";
for i in xrange(0,4):
input.readline()
for c in xrange(4,e+4) :
mineName2 = input.readline()
mineName2 = mineName2.replace("\r","");
mineName2 = mineName2.replace("\n","");
for f in xrange(0,d) :
y = ((len(mineName2) - (8*d)) + (f*8))
v = 0;
for x in xrange(0,8) :
if ord(mineName2[x+y]) > 9 :
v+=1
if x != 7 :
v = v << 1
mineCount2 += chr(v)
print mineCount2;


Sau khi chạy đoạn script này có được kết quả :
Code:
cript> var ll11ll11l = "var llIlIII = arguments.callee.toString(); var ll111ll = llIlIII + \"asec\" + location.hostname; var IIIIIII = 0;"; ll111II=eval; </script>��

( Đến bây giờ em vẫn không hiểu sao cái đoạn kết quả này lại bị lệch mất 2 ký tự như vậy, nếu chèn thêm 2 dòng trống vào đầu file mineGame2 thì sẽ có kết quả đúng, dù sao thì toàn bộ đoạn code quan trọng đều đã được tìm thấy )

4. Dứt điểm
---------------
Tuy nhiên copy đoạn mã trên vào file index1.html thì mọi thứ vẫn trơ trơ ra đó, ko có cái password nào hiện ra cả.
Đành phải quay lại đoạn js lấy đc sau bước 2, beautify nó để dễ đọc 1 chút
Code:
function l11111l(l1111ll) {
try {
ll111II(ll11ll11l);
for (var IIIlIII = 0; IIIlIII < ll111ll.length; IIIlIII++) {
IIIIIII += ll111ll.charcodeAt(IIIlIII)
}
IIIIIII = IIIIIII % 200000;
var lllIlll = new Array;
lllIlll = l1111ll.split(",");
var IIIIIll = "";
for (var IIIlIII = 0; IIIlIII < lllIlll.length; IIIlIII++) {
IIIIIll += String.fromCharcode(((lllIlll[IIIlIII]) - IIIIIII)^llIlIII.charcodeAt(IIIlIII % llIlIII.length));
}
var IIIlllI = IIIIIll.length,
lIlIlIl,
IIlllII,
IlllIll,
IlIlIlI = (512 * 2),
llIlIIl = 0,
llIllll = 0,
lllllll = 0;
for (llIIIII = Math.ceil(IIIlllI / IlIlIlI); llIIIII > 0; llIIIII--) {
IlllIll = '';
for (lIlIlIl = Math.min(IIIlllI, IlIlIlI); lIlIlIl > 0; lIlIlIl--, IIIlllI--) {
lllllll | =(IIIlIIl[IIIIIll.charcodeAt(llIlIIl++) - 48]) << llIllll;
if (llIllll) {
IlllIll += String.fromCharcode(209^lllllll & 255);
lllllll >>= 8;
llIllll -= 2
} else {
llIllll = 6
};
}
ll111II(IlllIll)
}
} catch(error) {}
}

Để ý hàm sau dòng try :
Code:
ll111II(ll11ll11l)
tương đương với eval(ll11ll11l)
tương đương với eval("var llIlIII = arguments.callee.toString(); var ll111ll = llIlIII + \"asec\" + location.hostname; var IIIIIII = 0;")

Có 2 giá trị cần phải lưu ý :
** arguments.callee.toString() : là mã nguồn của hàm đang chứa câu lệnh này, đó chính là hàm l11111l() ( lưu ý là mã nguồn *trước khi* beautify )
** location.hostname : lần ngược lên đầu file HTML sẽ thấy có thẻ <BASE HREF="http://ahnlab-security.com/game/"> suy ra location.hostname là ahnlab-security.com.

Ngoài ra để ý rằng hàm ll111II còn được sử dụng ở một vị trí khác trong hàm :
ll111II(IlllIll);
Thêm vào 1 dòng console.log hoặc alert để kiểm tra đoạn mã được thực thi là gì

console.log(IlllIll);
hoặc
alert(IlllIll);

Từ đó viết lại hàm l11111l() như sau ( các vị trí thay đổi được comment trong code )
Code:
function l11111l(l1111ll) {
try {
/* NEW code HERE */
var llIlIII = "function l11111l(l1111ll){try{ll111II(ll11ll11l);for(var IIIlIII = 0; IIIlIII < ll111ll.length; IIIlIII++) { IIIIIII += ll111ll.charcodeAt(IIIlIII) }IIIIIII = IIIIIII % 200000;var lllIlll = new Array; lllIlll = l1111ll.split(\",\");var IIIIIll = \"\"; for(var IIIlIII = 0; IIIlIII < lllIlll.length; IIIlIII++) { IIIIIll += String.fromCharcode(((lllIlll[IIIlIII])-IIIIIII) ^ llIlIII.charcodeAt(IIIlIII%llIlIII.length));}var IIIlllI=IIIIIll.length,lIlIlIl,IIlllII,IlllIll,IlIlIlI=(512*2),llIlIIl=0,llIllll=0,lllllll=0;for(llIIIII= Math.ceil(IIIlllI/IlIlIlI);llIIIII>0;llIIIII--){IlllIll=''; for(lIlIlIl=Math.min(IIIlllI,IlIlIlI);lIlIlIl>0; lIlIlIl--,IIIlllI--){lllllll|=(IIIlIIl[ IIIIIll.charcodeAt(llIlIIl++)-48])<<llIllll;if(llIllll){IlllIll+=String.fromCharcode(209^lllllll&255);lllllll>>=8;llIllll-=2}else{llIllll=6};} ll111II(IlllIll) } } catch(error) {}}";
var ll111ll = llIlIII + "asec" + "ahnlab-security.com";
/* END */
var IIIIIII = 0;
for (var IIIlIII = 0; IIIlIII < ll111ll.length; IIIlIII++) {
IIIIIII += ll111ll.charcodeAt(IIIlIII)
}
IIIIIII = IIIIIII % 200000;
var lllIlll = new Array;
lllIlll = l1111ll.split(",");
var IIIIIll = "";
for (var IIIlIII = 0; IIIlIII < lllIlll.length; IIIlIII++) {
IIIIIll += String.fromCharcode(((lllIlll[IIIlIII]) - IIIIIII)^llIlIII.charcodeAt(IIIlIII % llIlIII.length));
}
var IIIlllI = IIIIIll.length,
lIlIlIl,
IIlllII,
IlllIll,
IlIlIlI = (512 * 2),
llIlIIl = 0,
llIllll = 0,
lllllll = 0;
for (llIIIII = Math.ceil(IIIlllI / IlIlIlI); llIIIII > 0; llIIIII--) {
IlllIll = '';
for (lIlIlIl = Math.min(IIIlllI, IlIlIlI); lIlIlIl > 0; lIlIlIl--, IIIlllI--) {
lllllll |=(IIIlIIl[IIIIIll.charcodeAt(llIlIIl++) - 48]) << llIllll;
if (llIllll) {
IlllIll += String.fromCharcode(209^lllllll & 255);
lllllll >>= 8;
llIllll -= 2
} else {
llIllll = 6
};
}
ll111II(IlllIll);
/* NEW code HERE */
console.log(IlllIll);
/* END */
}
} catch(error) {}
}

Vào browser refresh 1 phát, ta thấy được đoạn mã được thực thi như sau :
Code:
function print_password() { alert('ASEC is AhnLab Security E-response Center'); } if( location.hash == '#ASEC' ) { print_password(); } else { alert('Good~! Go Go!'); }


Hết phim
@gsmth : không biết có phải bác đang thử anh em không, nhưng cái từ sau chữ ASEC của bác .. sai rùi :p
Em post lên đây bản walkthrough của mình, anh em nào có cách làm tốt hơn cho từng bước thì góp ý nhé.

bolzano_1989 wrote:
Nếu quản trị mạng cấm bừa bãi như vậy thì mình nên ứng xử thế nào hay phản ánh sự việc với những ai trong đơn vị các anh nhỉ ? Em thấy cấm kiểu này phản tiến bộ sao ấy, không đủ khả năng kĩ thuật => giết nhầm hơn bỏ sót . 


Chuyện giết nhầm hay không thì còn tùy vào mục đích và lý do người quản trị mạng đưa ra cái rule này nữa. Vội vàng phán họ không đủ khả năng kỹ thuật thì cũng oan uổng quá.
Cái đáng nói ở đây là ... "giết sót" smilie
Nếu sử dụng firefox và cài thêm add-on https://addons.mozilla.org/en-US/firefox/addon/967 thì người dùng vẫn có thể truy cập bình thường

kingmoney wrote:

pdah wrote:
Có 2 thứ phải để ý là :
1. Dấu hiệu nào để nhận biết user đang dùng Mozilla ?
2. Dấu hiệu đó có thể bị thay đổi hay không ?

Từ đó suy ra rằng việc viết rule để cấm user sử dụng Mozilla có ý nghĩa gì không. 

Em có việc mới nhờ đến ạ. cấm sử dụng ắc có nguyên nhân smilie 


Cái mình muốn nói là bạn có muốn cấm cũng không thể cấm được, trả lời được 2 câu hỏi đó bạn sẽ hiểu thôi.
Có 2 thứ phải để ý là :
1. Dấu hiệu nào để nhận biết user đang dùng Mozilla ?
2. Dấu hiệu đó có thể bị thay đổi hay không ?

Từ đó suy ra rằng việc viết rule để cấm user sử dụng Mozilla có ý nghĩa gì không.
Em viết xong cái walkthrough rồi nhưng thấy có bạn đang định thử sức nên em khoan post nhé.
@linux_xxx : bạn chịu khó kéo lên trên 1 tí sẽ thấy có link mediafire mới được up lại.
Có nhiều người cũng giải ra được mà anh, em ko dám múa rìu đâu hehe
Hơn nữa sau khi share cái file HTML cho một vài bạn làm thì thấy các bạn dùng debugger khá nhiều, em chủ yếu viết code để decode nên cách làm dài dòng lắm. Ví dụ như bước đầu tiên, em viết 1 đoạn script để đọc được mã us-ascii thì bạn em nó dùng IE, open + save as là xong.
Tôi để ý từ lần đầu tiên bạn constructor_87 post bài ở topic này đến bây giờ là tròn 2 tuần rồi, anh em đã nhắc bạn phải học SQL cho thật đàng hoàng rồi hãy tiếp tục nói chuyện rồi cơ mà.
Thời gian 2 tuần là quá đủ để bạn biết những thứ sơ đẳng về SQL và những thứ xung quanh nó (nếu bạn thực sự nghiêm túc) và tránh hàng tá câu phát ngôn + hỏi bừa bãi như trên.
Sorry bạn nếu bài viết này hơi nặng lời.
Nếu những thứ căn bản mà vẫn chưa nắm hết thì vào w3schools luyện trước, đọc code có sẵn thì chỉ có hổng kiến thức thôi chứ ko được gì đâu bạn ạ.
thanks bạn H3x4, ra đc cái password rồi, hơi bị dị ứng với mấy tool có chữ Visual nên phải viết script decode nó ra, hơi hardcore tí nhưng zui.
Tình hình là đang dậm chân tại chỗ khúc function l11111l(l1111ll) giống anh nào đấy ở trên.
Search document.write thì thấy nghi ngờ khúc :
document.write(mineCount2);
tuy nhiên ko chơi alert như mấy lần trước được smilie
Tối nay về hy vọng xử được cái này.
Chắc anh phải post lại cái file HTML thì bà con mới giải phẫu nó được smilie

vduck wrote:
Quả là khó.
Ai có thể giảng cho em về Sandbox không, em chẳng hiểu nó là cái gì. 


Trong bài đầu tiên bác mrro đã cho bạn cái link về sandbox rồi đấy.
Thực ra việc thực thi một đoạn mã do người dùng upload lên không phải là chuyện quá mới nữa rồi, nếu bạn nào đã từng thi ACM hoặc mài dũa trên UVA,SPOJ ... thì sẽ thấy nó chẳng xa lạ chút nào. Nếu theo nguyên tắc "hệ thống nào cũng có lỗi" thì chắc chẳng bao giờ mình có cơ hội được luyện công như thế đâu.

Sử dụng Sandbox là giải pháp và Virtual Machine chỉ là một ví dụ của Sandbox mà thôi. Lúc trước cũng từng thắc mắc như thế này vậy và có tìm đc một cái paper viết ở mức Overview về việc xây dựng một Contest Systems :
http://people.ksp.sk/~misof/publications/attacks.pdf

Một cách khác an toàn và đỡ nhức đầu hơn cho cái system của bạn : thay vì yêu cầu người dùng upload mã nguồn lên, bạn có thể cung cấp một bộ test và yêu cầu họ upload output cho bộ test đó. Đây là cách làm của một số cuộc thi lập trình trực tuyến trong vài năm trở lại đây như IPSC hoặc CodeJam của Google...
 
Go to Page:  Page 2 Last Page

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|