banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận thâm nhập Làm thế nào để khai thác lỗi phần mềm  XML
  [Article]   Làm thế nào để khai thác lỗi phần mềm 22/03/2011 17:46:55 (+0700) | #1 | 233740
[Avatar]
Ky0
Moderator

Joined: 16/08/2009 23:09:08
Messages: 532
Offline
[Profile] [PM]
Đã từ lâu, kỹ thuật tận dụng các lỗi phần mềm được coi như là ma thuật của các hacker. Làm thế nào mà họ có thể tìm ra lỗi của một chương trình và khai thác nó? Bài viết này sẽ giúp cho các bạn có thể biết được: cần chuẩn bị những kiến thức gì để có thể tìm và khai thác lỗi phần mềm. Đồng thời bài viết được xem như là một bộ khung của giáo trình “tìm và tận dụng lỗi phần mềm”.

Bài viết được dựa trên nội dung của bài “From 0x90 to 0x4c454554, a journey into exploitation” tại địa chỉ: http://myne-us.blogspot.com/2010/08/from-0x90-to-0x4c454554-journey-into.html

Cấu trúc của bài viết được chia nhỏ ra các phần một cách rõ ràng để mọi người có thể dễ dàng hơn trong quá trình học và nghiên cứu về khai thác lỗi phần mềm. Để thuận tiện cho quá trình nghiên cứu và học tập, Các bạn phải hoàn thành từng “chỉ mục” trước khi bước qua “chỉ mục” tiếp theo.

Để quá trình học tập và thực hành việc tận dụng lỗi phần mềm dễ dàng hơn các bạn có thể tải các Cheatsheet về làm hình nền cho máy tính. Link: http://redmine.corelan.be:8800/projects/corelanart/files

Ngoài ra còn một vài bài viết tiếng anh quan trọng khác các bạn nên đọc:
- Lịch sử của quá trình khai thác lỗi phần mềm - http://www.abysssec.com/blog/2010/05/past-present-future-of-windows-exploitation/
- Làm thế nào để phá vỡ stack - http://5d4a.wordpress.com/2010/08/02/smashing-the-stack-in-2010/
- Các dự án tổng hợp tài liệu về bảo mật - https://code.google.com/p/it-sec-catalog/

Phần 1: Kiến thức lập trình (Programming)

Chỉ mục 1: Hoàn thành quá trình này trước khi đọc cuốn sách "Hacking Art of exploitation"

Khi bước chân vào con đường IT môn học tiên quyết bao giờ cũng là lập trình! Trong bảo mật nói chung và việc khai thác lỗi phần mềm nói riêng thì việc biết lập trình trở nên rất quan trọng bởi vì nếu bạn không có kiến thức về lập trình thì làm sao bạn có thể biết điểm yếu của một chương trình thường xuất hiện ở đâu? Nếu không có kiến thức lập trình thì làm sao bạn có thể đọc hiểu code để mà khai thác lỗi? ...
Ngoài ra lập trình còn giúp bạn viết một số tool cho nhu cầu của riêng bạn, hay viết các đoạn mã khai thác lỗi … Dưới đây là một số ngôn ngữ lập trình phổ biến và hữu ích:

Python: Đây là một ngôn ngữ mạnh mẽ, dễ dùng và rất nhiều tài liệu hướng dẫn. Đặc biệt đây còn là ngôn ngữ lập trình mà các hacker rất yêu thích và nó thường được sử dụng để khai thác lỗi phần mềm.

Tài liệu tiếng anh:

- Learn Python the hard way - http://learnpythonthehardway.org/static/LearnPythonTheHardWay.pdf
- Wikibooks Python - http://en.wikibooks.org/wiki/Subjectsmilieython_programming_language
- http://docs.python.org/
- Một vài ebook miễn phí - http://www.onlinecomputerbooks.com/free-python-books.php
- Grey hat Python - http://oreilly.com/catalog/9781593271923
 

Tài liệu tiếng Việt:

- http://www.vithon.org/
 


Ruby: Đây là ngôn ngữ chủ yếu được dùng để viết các Exploit cho Công cụ Metasploit. Cho nên đây cũng là một ngôn ngữ rất tốt để bắt đầu học khai thác lỗi phần mềm.

Tài liệu:

- Wikibooks Ruby - http://en.wikibooks.org/wiki/Subject:Ruby_programming_language
- Little Book Of Ruby - http://www.sapphiresteel.com/IMG/pdf/LittleBookOfRuby.pdf
- Ruby Programmers Guide - http://www.ruby-doc.org/docs/ProgrammingRuby/
- Một vài ebook miễn phí - http://www.onlinecomputerbooks.com/free-ruby-books.php
 


Perl: Đây là một ngôn ngữ lâu đời nhưng vẫn còn rất nhiều người sử dụng, Nó là một trong những ngôn ngữ kịch bản (scripting languages) hữu dụng nhất và có rất nhiều exploit dùng đến nó.

Tài liệu:

- O'Reilly Learning Perl - http://www.amazon.com/Learning-Perl-5th-Randal-Schwartz/dp/0596520107/ref=sr_1_1?ie=UTF8&s=books&qid=1280901933&sr=8-1
- Một vài tài liệu miễn phí - http://www.onlinecomputerbooks.com/free-perl-books.php
 


C/C++: Đây là một ngôn ngữ lập trình cực kỳ quan trọng, nó giúp cho bạn hiểu được bạn khai thác cái gì? Và bắt đầu khai như thế nào? Bạn không cần hiểu hết tất cả, nhưng khi hoàn thành phần này bạn có kiến thức tốt về lập trình C/C++. Đây cũng là ngôn ngữ lập trình được giảng dạy trong hầu hết các trường đại học ở Việt Nam hiện nay, vì thế tài liệu tiếng Việt rất đa dạng và phong phú. Dưới đây là một vài tài liệu cơ bản cần nắm vững.

Tài liệu:

- Cprogramming.com - http://cprogramming.com/
- C Tutorial - http://www.java2s.com/Tutorial/C/CatalogC.htm
- Beej's Guide to C Programming - http://beej.us/guide/bgc/
- Một vài ebook miễn phí - http://www.onlinecomputerbooks.com/free-c-books.php
 


X86 Assembly: Tiếp theo chúng ta phải hiểu được máy tính đọc cái gì khi ta biên dịch C/C++. Chúng ta nên tập trung vào ngôn ngữ Assembly IA-32 (x86). Một vài tài liệu dưới đây được trình bày khá hay.

Tài Liệu:

- Skullsecurity: Assembly - http://www.skullsecurity.org/wiki/index.php/Fundamentals
- Windows Assembly Programming Tutorial - http://www.acm.uiuc.edu/sigwin/old/workshops/winasmtut.pdf
- http://en.wikibooks.org/wiki/X86_Assembly
- The Art of Assembly - http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/index.html
- Assembly primer for hackers - http://www.securitytube.net/Assembly-Primer-for-Hackers-%28Part-1%29-System-Organization-video.aspx
- PC Assembly Language - http://www.drpaulcarter.com/pcasm/
 


Windows Programming: Lập trình windows giúp cho chúng ta hiểu được chương trình của chúng ta và cấu trúc của các thư viện hoạt động với hệ điều hành như thế nào. Những kiến thức này cực kỳ quan trọng về sau khi ta tiến hành khai thác lỗi phần mềm trên Windows.

Tài liệu:

- Windows Programming - http://en.wikibooks.org/wiki/Windows_Programming
- Windows API Tutorial - http://www.relisoft.com/win32/index.htm
- Windows Sysinternals - http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dstripbooks&field-keywords=windows+sysinternals&x=0&y=0
- Windows Internals 4 - http://www.amazon.com/Microsoft-Windows-Internals-4th-Server/dp/0735619174
 


Disassembly: Disassembly không hẳn là lập trình, Nó trình bày những gì máy tính hiểu và tính toán thông qua CPU và bộ nhớ . Đây là một kỹ năng mà chúng ta cần nắm vững.

Tài liệu:

- http://en.wikibooks.org/wiki/X86_Disassembly
- The Art of Disassembly - http://tuts4you.com/download.php?view.187
 

Ngoài các kiến thức lập trình trên bạn còn phải sử dụng thành thạo Windows cũng như Linux, nó giúp ích rất nhiều cho quá trình nghiên cứu và tận dụng lỗi phần mềm.

Phần 2: Bắt đầu quá trình tìm và khai thác lỗi

Sau khi tìm hiểu phần 1, bạn đã có nắm vững kiến thức về lập trình và những gì máy đang thực hiện mà chúng ta có thể can thiệp trực tiếp vào – Khai thác lỗi

Phần này gồm rất nhiều bài học được tổng hợp dưới các link sau:

  • Smash the stack for fun and profit (Phrack 49) - http://www.phrack.org/issues.html?issue=49&id=14#article
  • C function call conventions and the stack - http://cs.umbc.edu/~chang/cs313.s02/stack.shtml
  • Anatomy of a program in memory - http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory
  • Function Calls, Part 1 (the Basics) - http://www.codeguru.com/cpp/misc/misc/assemblylanguage/article.php/c14641
  • IA-32 Architecture - http://www.sandpile.org/ia32/index.htm
  • Video Code Audit - http://pentest.cryptocity.net/code-audits/

(Chỉ mục 1 - Đã hoàn thành: Sau khi hoàn thành chỉ mục một bạn phải nắm vững một trong các ngôn ngữ lập trình đã kể trên. Đồng thời có kiến thức tốt về stack và cách gọi hàm )

  • Hacking art of exploitation [Chapter 1&2] - http://www.amazon.com/Hacking-Art-Exploitation-Jon-Erickson/dp/1593271441/ref=sr_1_fkmr1_1?ie=UTF8&qid=1280905635&sr=1-1-fkmr1
  • Exploit writing tutorial part 1 : Stack Based Overflows - http://www.corelan.be/index.php/2009/07/19/exploit-writing-tutorial-part-1-stack-based-overflows/
  • Exploit writing tutorial part 2 : Stack Based Overflows – jumping to shellcode - http://www.corelan.be/index.php/2009/07/23/writing-buffer-overflow-exploits-a-quick-and-basic-tutorial-part-2/

Chỉ mục 2 – Hoàn thành việc chuẩn bị kiến thức các phần sau trước khi kết thúc phần 2

Đọc một vài bài viết đầu tiên tại Blog http://blog.ksplice.com/2010/03/ có nhiều thông tin hữu ích.
Một vài bài viết tại blog http://www.nullthreat.net/ giúp ích rất nhiều cho quá trình trở thành một người kiểm tra lỗi phần mềm.
  • The Stack-based Buffer Overflow Vulnerability and Exploit Experimental Demonstration - http://www.tenouk.com/Bufferoverflowc/stackbasedbufferoverflow.html
  • The Tao of Windows Buffer Overflow - http://www.cultdeadcow.com/cDc_files/cDc-351/index.html
  • How do buffer overflow attacks work? - http://nsfsecurity.pr.erau.edu/bom/index.html
  • Buffer Overflows - http://www.hackerscenter.com/index.php?/Downloads/Library/Application-Security/View-category.html
  • Video Buffer overflow Primer - http://www.securitytube.net/Buffer-Overflow-Primer-Part-1-%28Smashing-the-Stack%29-video.aspx
  • Shellcoder's Handbook Ch1&2 - http://www.amazon.com/Shellcoders-Handbook-Discovering-Exploiting-Security/dp/047008023X/ref=sr_1_1?ie=UTF8&s=books&qid=1282450549&sr=8-1
  • Hacking art of exploitation [Chapter 3] - http://www.amazon.com/Hacking-Art-Exploitation-Jon-Erickson/dp/1593271441/ref=sr_1_fkmr1_1?ie=UTF8&qid=1280905635&sr=1-1-fkmr1
  • Exploit writing tutorial part 3 : SEH Based Exploits - http://www.corelan.be/index.php/2009/07/25/writing-buffer-overflow-exploits-a-quick-and-basic-tutorial-part-3-seh/
  • Exploit writing tutorial part 3b : SEH Based Exploits – just another example - http://www.corelan.be/index.php/2009/07/28/seh-based-exploit-writing-tutorial-continued-just-another-example-part-3b/
  • Tutorial: SEH Based Exploits and the Development Process - http://www.ethicalhacker.net/content/view/309/2/
  • SEH Overwrites Simplified - http://www.shell-storm.org/papers/files/405.pdf

Tiện đây mình xin giới thiệu một tài liệu hiếm hoi về khai thác lỗi phần mềm bằng tiếng việt, đó là cuốn Nghệ thuật tận dụng lỗi phần mềm” – Nguyễn Thành Nam. Nơi mua có thể tham khảo tại topic /hvaonline/posts/list/80/31846.html. Theo mình đây là một tài liệu rất hữu ích cho những người mới bắt đầu tìm hiểu về khai thác lỗi phần mềm.
(Chỉ mục 2 – Đã hoàn thành)

Phần 3 – Các công cụ cần thiết

Đây là danh sách các công cụ cần thiết và rất hữu dụng:
  • Immunity Debugger - http://www.immunityinc.com/products-immdbg.shtml
  • Ollydbg - http://www.ollydbg.de/
  • Windbg - http://msdn.microsoft.com/en-us/windows/hardware/gg463016.aspx
  • IDA Pro - http://www.hex-rays.com/idapro/
  • Sysinternals - http://technet.microsoft.com/en-us/sysinternals/bb795533.aspx
  • Explorer Suite - http://www.ntcore.com/exsuite.php

Và dưới đây là những bài viết của Corelan về cách sử dụng chúng trong việc khai thác lỗi. Các bài viết sẽ được cập nhật thêm sau:
  • Exploit writing tutorial part 5 : How debugger modules & plugins can speed up basic exploit development - http://www.corelan.be/index.php/2009/09/05/exploit-writing-tutorial-part-5-how-debugger-modules-plugins-can-speed-up-basic-exploit-development/
  • Corelan: Immunity debugger cheatsheet - http://www.corelan.be/index.php/2010/01/26/starting-to-write-immunity-debugger-pycommands-my-cheatsheet/

Ngoài ra các bạn cũng có thể tìm đọc một vài tài liệu hướng dẫn sử dụng các chương trình trên internet

Phần 4 – Kiến thức về mạng và Metasploit

Kiến thức về mạng là một phần rất quan trọng trong việc khai thác lỗi phần mềm, nếu có kiến thức tốt về mạng và lập trình mạng bạn có thể khai thác lỗi thông qua mạng LAN hay internet và có thể chiếm quyền và điều khiển máy tính từ xa.
  • Beej's Guide to Network Programming - http://beej.us/guide/bgnet/output/html/multipage/index.html
  • Hacking art of exploitation [Chapter 4] - http://www.amazon.com/Hacking-Art-Exploitation-Jon-Erickson/dp/1593271441/ref=sr_1_fkmr1_1?ie=UTF8&qid=1280905635&sr=1-1-fkmr1
  • Socket Programming in Ruby - https://www6.software.ibm.com/developerworks/education/l-rubysocks/l-rubysocks-a4.pdf

Metasploit là một công cụ tìm và khai thác lỗi phần mềm phổ biến nhất hiện nay. Các link bài viết dưới đây sẽ giúp các bạn biết sử dụng hiệu quả công cụ này.
  • Video Security Tube: Metasploit Megaprimer - http://www.securitytube.net/video/1175
  • http://www.metasploit.com/
  • Metasploit Unleashed - http://www.offensive-security.com/metasploit-unleashed/Metasploit_Unleashed_Information_Security_Training
  • Video Metasploit Louisville Class - http://www.irongeek.com/i.php?page=videos/metasploit-class
  • Metasploitable (a target) - http://blog.metasploit.com/2010/05/introducing-metasploitable.html
  • Exploit writing tutorial part 4 : From Exploit to Metasploit – The basics - http://www.corelan.be/index.php/2009/08/12/exploit-writing-tutorials-part-4-from-exploit-to-metasploit-the-basics/
  • Video Developing my first exploit - http://guides.intern0t.net/msf2.php
  • Exploit Creation in Metasploit - http://www.youtube.com/user/DHAtEnclaveForensics#p/u/9/rGlvgeeU0vQ
  • Wikibooks Metasploit/Writing Windows Exploit - http://en.wikibooks.org/wiki/Metasploit/WritingWindowsExploit

Phần 5 – Shellcode

Phần này chúng ta sẽ tìm hiểu cách viết shellcode để khai thác lỗi
  • Exploit writing tutorial part 9 : Introduction to Win32 shellcoding - http://www.corelan.be/index.php/2010/02/25/exploit-writing-tutorial-part-9-introduction-to-win32-shellcoding/
  • Shellcode Tutorials - http://projectshellcode.com/?q=node/12
  • Shellcoder's Handbook Ch3 - http://www.amazon.com/Shellcoders-Handbook-Discovering-Exploiting-Security/dp/047008023X/ref=sr_1_1?ie=UTF8&s=books&qid=1282450549&sr=8-1
  • Hacking art of exploitation [Chapter 5] - http://www.amazon.com/Hacking-Art-Exploitation-Jon-Erickson/dp/1593271441/ref=sr_1_fkmr1_1?ie=UTF8&qid=1280905635&sr=1-1-fkmr1
  • Writing small shellcode - http://www.shell-storm.org/papers/files/440.pdf
  • Shell-storm Shellcode database - http://www.shell-storm.org/shellcode/
  • Advanced shellcode - http://www.vividmachines.com/shellcode/shellcode.html#as

Phần 6 - Kỹ thuật Reverse

Chỉ mục 3: Cần ghi nhớ phần này để tham khảo và sử dụng trong quá trình reverse
  • Understanding Code - http://www.reteam.org/papers/e57.pdf
  • Reverse Engineering the World - http://mattoh.wordpress.com/
  • Reversing for Newbies - http://tuts4you.com/download.php?list.17
  • Intro to Reverse Engineering - http://www.ethicalhacker.net/content/view/152/2/
  • Introduction to Reverse Engineering Software - http://www.acm.uiuc.edu/sigmil/RevEng/
  • Reversing blog post - http://www.room362.com/blog/2009/6/12/getting-your-fill-of-reverse-engineering-and-malware-analysi.html
  • Reversing: secrets of reverse engineering - http://www.amazon.com/Reversing-Secrets-Engineering-Eldad-Eilam/dp/0764574817/ref=sr_1_1?s=books&ie=UTF8&qid=1280937813&sr=1-1
  • Video Reverse Engineering - http://pentest.cryptocity.net/reverse-engineering/
  • CrackZ's Reverse Engineering Page - http://www.woodmann.com/crackz/
  • Video Reverse engineering techniques - http://www.securitytube.net/video/572
  • History of Packing Technology - http://securitylabs.websense.com/content/Assets/HistoryofPackingTechnology.pdf
  • Windows PE Header - http://marcoramilli.blogspot.com/2010/12/windows-pe-header.html
  • OpenRCE Articles - http://www.openrce.org/articles/

Và một diễn đàn về Reverse engineering lớn và có uy tín nhất Việt Nam đó là http://reaonline.net/
Để tăng kiến thức và kỹ năng reverse engineering bạn phải thường xuyên luyện tập và đúc rút kinh nghiệm cho bản thân. Một trang web cung cấp crackme để bạn thực hành là http://crackmes.de/

Phần 7 – Bắt đầu tìm hiểu sâu hơn về tràn bộ đệm (Buffer overflow)

Để nắm vững phần này các bạn nên thực hành nhiều để hiểu rõ vấn đề, Các bạn hãy tìm một vài exploit cũ tại http://www.exploit-db.com/ tải về thực hành, nắm vững cách thức hoạt động của nó, và viết lại nó theo cách của bạn.

A – Ngăn chặn lỗi tràn bộ đệm
  • Buffer overflow protection - http://en.wikipedia.org/wiki/Buffer_overflow_protection
  • Video The evolution of Microsoft's Mitigations - http://technet.microsoft.com/en-us/security/dd285253.aspx
  • Canary Bit - http://www.cs.purdue.edu/homes/mkirkpat/papers/canbit.pdf
  • Preventing the Exploitation of Structured Exception Handler (SEH) Overwrites with SEHOP - http://blogs.technet.com/b/srd/archive/2009/02/02/preventing-the-exploitation-of-seh-overwrites-with-sehop.aspx
  • Bypassing SEHOP - http://www.sysdream.com/articles/sehop_en.pdf
  • Executable space protextion - http://en.wikipedia.org/wiki/Executable_space_protection
  • Data Execution Prevention - http://en.wikipedia.org/wiki/Data_Execution_Prevention
  • Bypassing Hardware based Data Execution Prevention - http://www.securestate.com/Downloadables/Documents/Whitepapers/Bypassing_Hardware_based_Data_Execution_Prevention.pdf
  • Address space layout randomization - http://en.wikipedia.org/wiki/ASLR
  • An Analysis of Address Space Layout Randomization on Windows Vista - http://www.symantec.com/avcenter/reference/Address_Space_Layout_Randomization.pdf
  • Defeating the Stack Based Buffer Overflow Prevention - http://dl.packetstormsecurity.net/papers/bypass/defeating-w2k3-stack-protection.pdf
  • Exploit writing tutorial part 6 : Bypassing Stack Cookies, SafeSeh, SEHOP, HW DEP and ASLR - http://www.corelan.be/index.php/2009/09/21/exploit-writing-tutorial-part-6-bypassing-stack-cookies-safeseh-hw-dep-and-aslr/
  • Return-to-libc attack - https://secure.wikimedia.org/wikipedia/en/wiki/Return-to-libc_attack
  • Video Microsoft protections video - http://technet.microsoft.com/en-us/security/dd285253.aspx

B – Tràn bộ đệm nâng cao
  • Video Exploitation - http://pentest.cryptocity.net/exploitation/
  • Exploit writing tutorial part 7 : Unicode – from 0×00410041 to calc - http://www.corelan.be/index.php/2009/11/06/exploit-writing-tutorial-part-7-unicode-from-0x00410041-to-calc/
  • Exploit writing tutorial part 8 : Win32 Egg Hunting - http://www.corelan.be/index.php/2010/01/09/exploit-writing-tutorial-part-8-win32-egg-hunting/
  • Exploit writing tutorial part 10 : Chaining DEP with ROP – the Rubik’s[TM] Cube - http://www.corelan.be/index.php/2010/06/16/exploit-writing-tutorial-part-10-chaining-dep-with-rop-the-rubikstm-cube/
  • Video Virtual Worlds - Real Exploits - http://www.youtube.com/watch?v=UIKy1Shxd6Q

Ngoài ra các bạn cũng có thể thực hành làm quen với các bài tập tìm và khai thác lỗi lập trình tại http://community.corest.com/~gera/InsecureProgramming/ một vài bài tập tại đây đã được giải thích rất rõ trong cuốn sách “Nghệ thuật tận dụng lỗi phần mềm”.
Và một trang wargame khá hay nữa đó là http://www.smashthestack.org/
Các bạn cũng nên xem qua topic của bạn choc_ /hvaonline/posts/list/27801.html
Trên HVA cũng có một topic bàn về các wargame về khai thác lỗi phần mềm trên trang http://www.overthewire.org/wargames/ . Các bạn có thể xem tại /hvaonline/posts/list/23615.html

Phần 8 – Heap Overflow
  • Heap Overflows for Humans - http://www.exploit-db.com/download_pdf/15982
  • rm -rf / on heap overflow - http://pthreads.blogspot.com/2007/04/heap-overflow.html
  • Shellcoder's Handbook Ch4&5 - http://www.amazon.com/Shellcoders-Handbook-Discovering-Exploiting-Security/dp/047008023X/ref=sr_1_1?ie=UTF8&s=books&qid=1282450549&sr=8-1
  • A heap of risk - http://www.h-online.com/security/features/A-Heap-of-Risk-747161.html
  • Video Defcon 15 remedial Heap Overflows - http://video.google.com/videoplay?docid=1985155227368288256#
  • Heap overflow: ancient art of unlink seduction - http://www.thehackerslibrary.com/?p=872
  • Memory corruptions part II – heap - http://advancedwindowsdebugging.com/ch06.pdf

Và đọc những phần còn lại của cuốn sách Shellcoder's Handbook

Phần 9 – Danh sách các trang web cung cấp exploit

Hãy thường xuyên truy cập vào các trang web dưới đây để tìm kiếm và tải về các exploit mới nhất để nghiên cứu
  • http://www.exploit-db.com/
  • http://www.cvedetails.com/
  • http://packetstormsecurity.org/files/tags/exploit/
  • http://www.us-cert.gov/cas/techalerts/
  • http://cve.mitre.org/cve/index.html
  • http://web.nvd.nist.gov/view/vuln/search?cid=3
  • http://cwe.mitre.org/index.html

Phần 10 – Rèn luyện -- updating

Để trở thành một chuyên gia khai thác lỗi phần mềm bạn phải thường xuyên tìm kiếm và khai thác lỗi phần mềm, có thể là một wargame hay là một ứng dụng nào đó trên máy tính của bạn. Trong quá trình luyện tập bạn sẽ đúc rút ra được những kinh nghiệm quý giá cho bản thân.

Do tài liệu về mảng này trên mạng cũng không nhiều và khá rời rạc, cho nên bài viết trên tổng hợp lại những tài liệu và địa chỉ hữu ích cho các bạn có thể tham khảo. Chính vì tài liệu có từ rất nhiều nguồn khác nhau nên, nếu chỉ tổng hợp các bài viết thành một file pdf thì không thể đảm bảo được sự liền mạch và khoa học của một tài liệu. Để tổng hợp và viết lại thành một giáo trình hoàn chỉnh đòi hỏi thời gian và kiến thức sâu về từng mục.

Một số cuốn sách không có link download mình sẽ đưa lên sau, hoặc các bạn có thể tự tìm trên internet

- Ky0 -
UITNetwork.com
Let's Connect
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 23/03/2011 17:18:20 (+0700) | #2 | 233819
Ar0
Member

[Minus]    0    [Plus]
Joined: 14/01/2011 23:20:26
Messages: 165
Offline
[Profile] [PM]
Có cái case study này để luyện thì tuyệt quá rồi, vấn đề còn lại là ở mấy khứa có muốn làm theo hay không. Anyway, thanks Ky0 về bài viết hữu ích.

Tuy nhiên sao cậu không làm 1 cái ps nhỏ nữa để giới thiệu quyển sách của anh Nam nhỉ? Quyển Nghệ thuật tận dụng lỗi phần mềm cũng rất đáng để đọc đó chớ, tuy nó không bằng quyển Hacking Art of exploitation (về quy mô) nhưng nó rất đáng để xem.
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 23/03/2011 18:14:00 (+0700) | #3 | 233828
[Avatar]
Ky0
Moderator

Joined: 16/08/2009 23:09:08
Messages: 532
Offline
[Profile] [PM]

Ar0 wrote:
Có cái case study này để luyện thì tuyệt quá rồi, vấn đề còn lại là ở mấy khứa có muốn làm theo hay không. Anyway, thanks Ky0 về bài viết hữu ích.

Tuy nhiên sao cậu không làm 1 cái ps nhỏ nữa để giới thiệu quyển sách của anh Nam nhỉ? Quyển Nghệ thuật tận dụng lỗi phần mềm cũng rất đáng để đọc đó chớ, tuy nó không bằng quyển Hacking Art of exploitation (về quy mô) nhưng nó rất đáng để xem. 

Đây là lời giới thiệu của cuốn sách "Nghệ thuật tận dụng lỗi phần mềm"
  • Cuốn sách "Nghệ thuật tận dụng lỗi phần mềm" của anh Nam là một trong những cuốn sách hiếm hoi hiện nay đề cập đến lĩnh vực được đánh giá là khó nhất trong ngành an ninh thông tin. Đó là hiểu được thấu đáo lỗ hổng phần mềm ở mức sâu nhất, mức độ mã máy hợp ngữ, và kiến trúc máy tính cấp thấp.
  • Hiểu được cách thức hoạt động của những lỗ hổng này, và các chiêu thức hacker lợi dụng tấn công, sẽ giúp ích cho lập trình viên viết code an toàn hơn, giúp cho các chuyên gia an toàn thông tin xây dựng hệ thống phòng chống hiệu quả hơn.
  • Cuốn sách dẫn dắt người đọc đi từ những kiến thức nền tảng cơ bản của kiến trúc máy tính, tiếp đến những chủ đề kinh điển về lỗ hổng phần mềm như lỗi tràn bộ đệm, lỗi chuỗi định dạng ...
  • Và quan trọng nhất là giúp người đọc hiểu rõ cách thức lợi dụng lỗ hổng, những chiêu thức mà hacker thường dùng để viết mã tấn công

Do đó đây là cuốn sách toàn diện nhất cho người mới bắt đầu tìm hiểu về khai thác lỗi phần mềm. Cuốn sách được sử dụng làm giáo trình cho khoá học tận dụng lỗi phần mềm của công ty Bluemoon. Đồng thời nó cũng được dùng làm giáo trình cho môn học tại trường của mình smilie

- Ky0 -
UITNetwork.com
Let's Connect
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 23/03/2011 19:48:15 (+0700) | #4 | 233833
[Avatar]
xnohat
Moderator

Joined: 30/01/2005 13:59:19
Messages: 1210
Location: /dev/null
Offline
[Profile] [PM] [Email] [WWW] [Yahoo!] [MSN]
Em có cuốn sách của anh Nam ko Ky0 ? có cho anh mượn phát.

Anh đang viết dở một cái Study Guide, nhưng đọc thấy bài của em chi tiết mà lại hay hơn nên delete luôn smilie

Từ nay mấy cô cậu nhỏ nào thắc mắc về phải học từ đâu thì cứ quăng bài này cho mấy em nó có cái mà bám smilie
iJust clear, "What I need to do and how to do it"/i
br
brBox tán gẫu dời về: http://www.facebook.com/hvaonline
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 23/03/2011 19:54:17 (+0700) | #5 | 233835
Ar0
Member

[Minus]    0    [Plus]
Joined: 14/01/2011 23:20:26
Messages: 165
Offline
[Profile] [PM]

xnohat wrote:
Em có cuốn sách của anh Nam ko Ky0 ? có cho anh mượn phát.

Anh đang viết dở một cái Study Guide, nhưng đọc thấy bài của em chi tiết mà lại hay hơn nên delete luôn smilie

Từ nay mấy cô cậu nhỏ nào thắc mắc về phải học từ đâu thì cứ quăng bài này cho mấy em nó có cái mà bám smilie 

Tớ có này, cũng xem xong rồi đang để nhà không làm gì.
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 23/03/2011 21:23:12 (+0700) | #6 | 233846
[Avatar]
Ky0
Moderator

Joined: 16/08/2009 23:09:08
Messages: 532
Offline
[Profile] [PM]

xnohat wrote:
Em có cuốn sách của anh Nam ko Ky0 ? có cho anh mượn phát.

Anh đang viết dở một cái Study Guide, nhưng đọc thấy bài của em chi tiết mà lại hay hơn nên delete luôn smilie

Từ nay mấy cô cậu nhỏ nào thắc mắc về phải học từ đâu thì cứ quăng bài này cho mấy em nó có cái mà bám smilie 

Có 25k một cuốn thôi anh ơi! Hồi học môn anh Nam dạy tụi em mua có 15K thôi smilie Giờ mới học xong nên vẫn còn giữ

- Ky0 -
UITNetwork.com
Let's Connect
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 13/07/2011 08:11:13 (+0700) | #7 | 243413
phuongnvt
Member

[Minus]    0    [Plus]
Joined: 09/02/2011 03:35:39
Messages: 332
Offline
[Profile] [PM]

Ky0 wrote:

xnohat wrote:
Em có cuốn sách của anh Nam ko Ky0 ? có cho anh mượn phát.

Anh đang viết dở một cái Study Guide, nhưng đọc thấy bài của em chi tiết mà lại hay hơn nên delete luôn smilie

Từ nay mấy cô cậu nhỏ nào thắc mắc về phải học từ đâu thì cứ quăng bài này cho mấy em nó có cái mà bám smilie 

Có 25k một cuốn thôi anh ơi! Hồi học môn anh Nam dạy tụi em mua có 15K thôi smilie Giờ mới học xong nên vẫn còn giữ

- Ky0 - 


Anh em nào còn cuốn đó share lai cho tới nha.tới cũng đang muốn ngắm em nó một phát.Nói thật, mấy hôm nay đi kiếm mỏi cả cẳn,mòn cả dép mà chưa kiếm được em nó.

mà nếu anh em nào biết chỗ nào còn bán thì chỉ tới với sẽ hậu tạ 1 ly trà sữa trân châu smilie smilie

ah quên tớ ở tphcm
Nhiều người nhận được lời khuyên, song chỉ có những người khôn mới sử dụng lời khuyên đó


[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 07/10/2011 01:45:01 (+0700) | #8 | 248259
[Avatar]
panfider
Member

[Minus]    0    [Plus]
Joined: 12/05/2010 01:51:04
Messages: 448
Offline
[Profile] [PM] [Email]
Không có cái gì tuyệt vời hơn
Nhưng mình thấy bài viết không có tính định hướng-không có hướng dẫn hack thử
[Unix] live free or die
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 07/10/2011 07:16:18 (+0700) | #9 | 248262
phuongnvt
Member

[Minus]    0    [Plus]
Joined: 09/02/2011 03:35:39
Messages: 332
Offline
[Profile] [PM]

panfider wrote:
Không có cái gì tuyệt vời hơn
Nhưng mình thấy bài viết không có tính định hướng-không có hướng dẫn hack thử 


Người ta chỉ ra hướng đi rồi, mà còn hướng dẫn gì nữa. smilie smilie smilie smilie smilie
Nhiều người nhận được lời khuyên, song chỉ có những người khôn mới sử dụng lời khuyên đó


[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 19/12/2011 17:01:30 (+0700) | #10 | 251299
[Avatar]
Ky0
Moderator

Joined: 16/08/2009 23:09:08
Messages: 532
Offline
[Profile] [PM]
Bổ sung Slide kèm theo cuốn sách "Nghệ thuật tận dụng lỗi phần mềm" Của anh Nguyễn Thành Nam
Code:
http://www.mediafire.com/?54z7s6i1tcmsy9g

Các bài tập liên quan đến hợp ngữ:
  • Tính EDX = EAX* EBX
  • Lấy ra giá trị của phần tử thứ hai trên ngăn xếp vào EDX (vẫn giữ giá trị của đỉnh ngăn xếp)
  • Gán giá trị của EIP vào EAX
  • Gán giá trị của EAX vào EIP

Bài tập tìm lỗi và sửa lỗi chương trình.
Bài tập 1:
Code:
void vuln(char *src)
{
   char buf[8];
   int i;
   for (i = 0; i <= sizeof(buf); i++)
   {
       buf[i] = src[i];
   }
}

void main(int argc, char **argv)
{
   if (argc < 2)
   {
       return;
   }
   vuln(argv[1]);
}

Bài tập 2
Code:
int main(int argc, char **argv)
{
   int i, j;
   if (argc < 3)
   {
       return 0;
   }
   i = atoi(argv[1]);
   j = atoi(argv[2]);
   if (j == 0)
   {
       j = 1;
   }
   return i / j;
}


Nêu cách khai thác lỗi đoạn mã sau:
Code:
<?php
public function ProcessLogin() {
     $loginName='';
     $loginPass='';
     if((!isset($_POST['username']) || !isset($_POST['password'])) && !isset($_COOKIE['RememberToken'])) {
         $GLOBALS['ISC_CLASS_ADMIN_AUTH']->DoLogin(true);
         return;
     }
    
     // Is this an automatic login from "Remember Me" being ticked?
     if(isset($_POST['username'])) {
         $loginName = @$_POST['username'];
         $loginPass = @$_POST['password'];
         $query = sprintf("select pk_userid, username, userpass, token, userimportpass from [|PREFIX|]users where username='%s' and userstatus='1'", $GLOBALS['ISC_CLASS_DB']->Quote($loginName));
     }
     else if(isset($_COOKIE['RememberToken']) && trim($_COOKIE['RememberToken']) != '') {
         $md5 = $_COOKIE['RememberToken'];
         $query = sprintf("select pk_userid, username, userpass, token, userimportpass from [|PREFIX|]users where md5(concat(username, token))='%s'", $GLOBALS['ISC_CLASS_DB']->Quote($md5));
     } else {
         // Otherwise, we have a bad username/password
         $GLOBALS['ISC_CLASS_LOG']->LogAdminAction("invalid", $loginName);
         $GLOBALS['ISC_CLASS_ADMIN_AUTH']->DoLogin(true);
         die();
     }
    
     if(isset($_POST['remember']) || isset($_COOKIE['RememberToken'])) {
         $remember = true;
     }
     else {
         $remember = false;
     }
    
     ob_start();
    
     // Try and find a user with the same credentials
     $userResult = $GLOBALS["ISC_CLASS_DB"]->Query($query);
    
     if($userRow = $GLOBALS["ISC_CLASS_DB"]->Fetch($userResult)) {
         if($remember) {
             ISC_SetCookie("RememberToken", md5($userRow['username'] . $userRow['token']), time() + 3600*24*365, true);
         }
         else {
             ISC_SetCookie("RememberToken", "", time() - 3600*24*365, true);
         }
        
         // Was this an improted password?
         if($userRow['userimportpass'] != '' && $userRow['userpass'] != md5($loginPass)) {
             if(ValidateImportPassword($loginPass, $userRow['userimportpass'])) {
                 // Valid login from an import password. We now store the Interspire Shopping Cart version of the password
                 $updatedUser = array(
                         "userpass" => md5($loginPass),
                         "userimportpass" => ""
                 );
                 $GLOBALS['ISC_CLASS_DB']->UpdateQuery("users", $updatedUser, "pk_userid='".$GLOBALS['ISC_CLASS_DB']->Quote($userRow['pk_userid'])."'");
             }
             else {
                 unset($userRow['pk_userid']);
             }
         }
         else {
            
             // Is this a "Remember Me" auto login or a form login?
             if(isset($_POST['username'])) {
                 if($userRow['userpass'] != md5($loginPass)) {
                     unset($userRow['pk_userid']);
                 }
             }
             else {
                 // If they get here then "Remember Me" was set and valid so we don't have to do anything
             }
         }
        
         if(isset($userRow['pk_userid'])) {
             // Set the auth session variable to true
             $_COOKIE['STORESUITE_CP_TOKEN'] = $userRow['token'];
             ISC_SetCookie("STORESUITE_CP_TOKEN", $userRow['token'], 0, true);
            
             // Log the successful login to the administrators log
             $GLOBALS['ISC_CLASS_LOG']->LogAdminAction("valid");
            
             // Everything was OK and the user has been logged in successfully
             ?>
<script type="text/javascript">
     document.location.href='?ToDo=';
</script>
             <?php
             die();
         }
     }
    
     // Otherwise, we have a bad username/password
     $GLOBALS['ISC_CLASS_LOG']->LogAdminAction("invalid", $loginName);
     $GLOBALS['ISC_CLASS_ADMIN_AUTH']->DoLogin(true);
     die();
}


Ngoài ra còn có các bài tập khác của bạn choc_ tại topic /hvaonline/posts/list/27801.html


- Ky0 -
UITNetwork.com
Let's Connect
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 08/02/2012 07:56:19 (+0700) | #11 | 253299
thuongsonhuyetha123
Member

[Minus]    0    [Plus]
Joined: 25/02/2011 08:26:47
Messages: 15
Location: ha noi
Offline
[Profile] [PM]
Mình không thông thạo Tiếng Anh lắm nhưng các tài liệu đều là Tiếng Anh nên đọc không hiểu mấy. Có gì nhờ anh em chỉ giáo.
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 22/03/2012 23:14:31 (+0700) | #12 | 259631
[Avatar]
S24T
Member

[Minus]    0    [Plus]
Joined: 20/03/2012 02:41:41
Messages: 8
Offline
[Profile] [PM]
Chủ đề hay tuyệt! smilie
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 12/05/2012 15:31:34 (+0700) | #13 | 263040
chuoi1nai
Member

[Minus]    0    [Plus]
Joined: 09/12/2008 14:53:15
Messages: 8
Offline
[Profile] [PM]
chủ đề rất hay
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 14/05/2012 09:34:10 (+0700) | #14 | 263114
Nhạt Nhòa
Member

[Minus]    0    [Plus]
Joined: 13/05/2012 05:37:49
Messages: 1
Offline
[Profile] [PM]
Mình đang gà nhưng sẽ cố gắng tìm hiểu thêm
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 15/05/2012 19:42:28 (+0700) | #15 | 263237
horus
Member

[Minus]    0    [Plus]
Joined: 15/05/2012 00:19:43
Messages: 2
Offline
[Profile] [PM]
hix khó học quá đi à
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 20/05/2012 09:36:19 (+0700) | #16 | 263594
[Avatar]
Cabious
Member

[Minus]    0    [Plus]
Joined: 28/12/2011 04:18:56
Messages: 7
Location: loading...
Offline
[Profile] [PM] [Yahoo!] [MSN]
Hiện tại mình đã cài python xong, mình đã có vốn thuật toán của pascal, chủ threat cho biết python vs pascal có nét tương đồng gì không?
Hoặc là python vs C, C++ cũng được
ps: pascal mình đã biết tất cả trừ asm ra
H.O.M.E.W.O.R.K = Half Of My Energy Wasted On Random Knowledge
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 21/05/2012 10:55:15 (+0700) | #17 | 263678
[Avatar]
Cabious
Member

[Minus]    0    [Plus]
Joined: 28/12/2011 04:18:56
Messages: 7
Location: loading...
Offline
[Profile] [PM] [Yahoo!] [MSN]
Có ai cho mình biết không vậy?
H.O.M.E.W.O.R.K = Half Of My Energy Wasted On Random Knowledge
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 21/05/2012 13:11:31 (+0700) | #18 | 263686
[Avatar]
Ky0
Moderator

Joined: 16/08/2009 23:09:08
Messages: 532
Offline
[Profile] [PM]

Cabious wrote:
Hiện tại mình đã cài python xong, mình đã có vốn thuật toán của pascal, chủ threat cho biết python vs pascal có nét tương đồng gì không?
Hoặc là python vs C, C++ cũng được
ps: pascal mình đã biết tất cả trừ asm ra 

Muốn so sánh sự tương đồng hay khác nhau giữa các ngôn ngữ lập trình thì vui lòng lập topic mới.

Cabious wrote:

Có ai cho mình biết không vậy? 

Không cần câu bài viết để gây chú ý đâu.

- Ky0 -
UITNetwork.com
Let's Connect
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 04/06/2012 09:30:53 (+0700) | #19 | 264593
dragonvnit
Member

[Minus]    0    [Plus]
Joined: 16/06/2011 02:42:01
Messages: 3
Offline
[Profile] [PM]
Thanks Ky0, E thấy tài liệu toàn tiếng Anh đúng là không có tiếng Anh thì IT có thể nói là bó tay chấm cơm smilie(
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 05/11/2012 16:07:44 (+0700) | #20 | 270757
phanledaivuong
Member

[Minus]    0    [Plus]
Joined: 23/05/2008 17:34:21
Messages: 315
Location: /dev/null
Offline
[Profile] [PM] [WWW]

Ky0 wrote:

Do đó đây là cuốn sách toàn diện nhất cho người mới bắt đầu tìm hiểu về khai thác lỗi phần mềm. Cuốn sách được sử dụng làm giáo trình cho khoá học tận dụng lỗi phần mềm của công ty Bluemoon. Đồng thời nó cũng được dùng làm giáo trình cho môn học tại trường của mình smilie

- Ky0 - 


Nhớ hồi quyển này mới ra trên cũng hot phết, có bác cầm 10 cuốn từ trong SG ra, thế là sai con nhỏ mình thích đi mua cho, đưa 100k nó trả thừa cho 75k. Lúc đưa sách ở trong trường, mình ngồi ở ghế nó đứng cạnh cả khu vắng chả có đứa nào cả, nó cũng thích mình mà hồi đó nhát gái quá nên không smilie nó 1 cái giờ vẫn thấy tiếc. Mà cầm quyển sách về đọc qua vài trang đầu rồi thằng bạn thân nó trấn lột để đọc trước, giờ nó đi lạc mấy nơi nào rồi smilie. Nghe các bác nhắc cuốn này mà tự dưng em nhớ con nhỏ đó quá smilie
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 06/11/2012 09:57:14 (+0700) | #21 | 270771
LinDanMan
Member

[Minus]    0    [Plus]
Joined: 13/09/2012 04:05:42
Messages: 1
Offline
[Profile] [PM]
Thanks, bài viết rất hay smilie
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 07/11/2012 22:17:31 (+0700) | #22 | 270806
[Avatar]
hieupm37
Member

[Minus]    0    [Plus]
Joined: 06/11/2012 21:46:34
Messages: 3
Offline
[Profile] [PM] [WWW] [Yahoo!]
Bài 2 bị lỗi gì vậy Ky0? Mình nghĩ mãi mà ko ra smilie
Power of CREATION!
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 07/11/2012 23:01:02 (+0700) | #23 | 270807
[Avatar]
Ky0
Moderator

Joined: 16/08/2009 23:09:08
Messages: 532
Offline
[Profile] [PM]

hieupm37 wrote:
Bài 2 bị lỗi gì vậy Ky0? Mình nghĩ mãi mà ko ra smilie 

Gợi ý: khả năng biểu diễn của kiểu int (4 byte) ? Nếu kết quả phép chia mà lớn hơn (hoặc nhỏ hơn) khả năng biểu diễn thì chuyện gì xảy ra smilie ?

- Ky0 -
UITNetwork.com
Let's Connect
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 08/11/2012 21:11:33 (+0700) | #24 | 270831
Nowhereman
Elite Member

[Minus]    0    [Plus]
Joined: 19/11/2003 06:25:42
Messages: 108
Offline
[Profile] [PM] [Email]

@ KyO : Quả thực là em không khen không được, bác KyO à em vốn dĩ là một tên hoang tưởng, tự nhận mình là một hacker lý thuyết từ lâu. hì hì ! hôm nay ròm qua bài tóm tắt của bác từ A->Z mới thấy đó là một câu trả lời rất rõ ràng, và tương đối hoàn thiện cho những câu hỏi kiểu như " Em muốn làm hacker thì phải học gì? " " Muốn làm bảo mật , muốn cái lọ, muốn cái chai thì phải làm sao ? v.v; nhưng hình như em chưa thấy bác giới thiệu thêm về Cryptography thì phải, vì có những bác là hacker và securiter thực thụ rồi, họ sẽ muốn tự họ invent ra một cơ chế, một giao thức bảo mật, hoặc một giải pháp mới về mật mã, mã hóa nữa thì sao ? hay phải gọi điện cho bác KyO (hì hì đùa chút nghen ) . That's great . thanks .

keep on learning, the thing shall be fucked !

cheer !

lang thang vẫn mãi không nhà
đôi chân lê bước thê lương tháng ngày
càng đi càng thấy đắm say
tình thương con Chúa lòng này chẳng phai
thời gian cứ mãi miệt mài
lang thang đi tiếp ....rồi bay lên z ời
cúi đầu con lạy Ông Trời
xin thươn
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 08/11/2012 21:48:31 (+0700) | #25 | 270832
[Avatar]
hieupm37
Member

[Minus]    0    [Plus]
Joined: 06/11/2012 21:46:34
Messages: 3
Offline
[Profile] [PM] [WWW] [Yahoo!]

Ky0 wrote:

hieupm37 wrote:
Bài 2 bị lỗi gì vậy Ky0? Mình nghĩ mãi mà ko ra smilie 

Gợi ý: khả năng biểu diễn của kiểu int (4 byte) ? Nếu kết quả phép chia mà lớn hơn (hoặc nhỏ hơn) khả năng biểu diễn thì chuyện gì xảy ra smilie ?

- Ky0 - 

Uhm. i và j đều là int, j luôn khác 0 thì i/j phải luôn có nghĩa chứ nhỉ? i/j <= i thì i/j luôn nằm trong khoảng của int rồi.
Bác giải thích em hiểu cái smilie. Thanks.
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 09/11/2012 01:08:09 (+0700) | #26 | 270841
[Avatar]
Ky0
Moderator

Joined: 16/08/2009 23:09:08
Messages: 532
Offline
[Profile] [PM]
@Nowhereman: Anh khen em hơi quá lời rồi! Công việc của em hiện nay đòi hỏi em phải học lại từng bước thật là kỹ lưỡng theo những gì em dịch ở bài trên smilie

hieupm37 wrote:

Ky0 wrote:

hieupm37 wrote:
Bài 2 bị lỗi gì vậy Ky0? Mình nghĩ mãi mà ko ra smilie 

Gợi ý: khả năng biểu diễn của kiểu int (4 byte) ? Nếu kết quả phép chia mà lớn hơn (hoặc nhỏ hơn) khả năng biểu diễn thì chuyện gì xảy ra smilie ?

- Ky0 - 

Uhm. i và j đều là int, j luôn khác 0 thì i/j phải luôn có nghĩa chứ nhỉ? i/j <= i thì i/j luôn nằm trong khoảng của int rồi.
Bác giải thích em hiểu cái smilie. Thanks. 

Thực sự bạn chưa quan tâm đến những gì mà mình gợi ý! Khi nào bạn trả lời đúng được hai ý trên thì bạn sẽ có câu trả lời cho riêng mình smilie

Trong quá trình tìm và khai thác lỗi phần mềm cần phải có nhưng suy nghĩ khác với tất cả những người bình thường mới được smilie

- Ky0 -
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 22/11/2012 09:43:29 (+0700) | #27 | 271208
[Avatar]
hieupm37
Member

[Minus]    0    [Plus]
Joined: 06/11/2012 21:46:34
Messages: 3
Offline
[Profile] [PM] [WWW] [Yahoo!]

Ky0 wrote:
Gợi ý: khả năng biểu diễn của kiểu int (4 byte) ? Nếu kết quả phép chia mà lớn hơn (hoặc nhỏ hơn) khả năng biểu diễn thì chuyện gì xảy ra smilie ?
- Ky0 - 


1. int 4 byte có khả năng biểu diễn 2^32 giá trị.
2. Kết quả phép chia 2 số int mà có thể lớn hơn khả năng biểu diễn à? Mình chưa nghe nói đến bao giờ, đọc sách cũng ko thấy ai nói về việc này.
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 22/11/2012 11:59:04 (+0700) | #28 | 271214
neit_gnoud
Member

[Minus]    0    [Plus]
Joined: 06/05/2012 00:21:03
Messages: 1
Offline
[Profile] [PM]

hieupm37 wrote:

Ky0 wrote:
Gợi ý: khả năng biểu diễn của kiểu int (4 byte) ? Nếu kết quả phép chia mà lớn hơn (hoặc nhỏ hơn) khả năng biểu diễn thì chuyện gì xảy ra smilie ?
- Ky0 - 


1. int 4 byte có khả năng biểu diễn 2^32 giá trị.
2. Kết quả phép chia 2 số int mà có thể lớn hơn khả năng biểu diễn à? Mình chưa nghe nói đến bao giờ, đọc sách cũng ko thấy ai nói về việc này. 

Chào hieupm37, hai ý mà bạn nêu mình nghĩ là đúng, nhưng chưa đúng ý anh Ky0, theo mình lỗi ở đây là khi bạn nhập i, j lớn hơn (hay nhỏ hơn) khả năng biểu diễn của số nguyên, thì thay vì "kết quả phép chia lớn hơn (hoặc nhỏ hơn) khả năng biểu diễn" mới là kết quả đúng, nhưng kết quả không như vậy.
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 19/04/2013 17:16:38 (+0700) | #29 | 275064
[Avatar]
-ntg-
Member

[Minus]    0    [Plus]
Joined: 16/04/2013 13:26:46
Messages: 2
Offline
[Profile] [PM]

Cabious wrote:
Hiện tại mình đã cài python xong, mình đã có vốn thuật toán của pascal, chủ threat cho biết python vs pascal có nét tương đồng gì không?
Hoặc là python vs C, C++ cũng được
ps: pascal mình đã biết tất cả trừ asm ra 


em cũng giống bác, chỉ bik pascal toàn tập vs sơ lược C++, còn nhồi hết nhiêu kia thì hơi đuối đây smilie
-ntg-
[Up] [Print Copy]
  [Article]   Làm thế nào để khai thác lỗi phần mềm 19/04/2013 21:42:31 (+0700) | #30 | 275070
pimcapu
Member

[Minus]    0    [Plus]
Joined: 15/02/2013 08:14:30
Messages: 28
Offline
[Profile] [PM] [Yahoo!]
bài viết hay lắm cảm ơn anh mod Ky0
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

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