desc是函数describe的简写,一般用来提供和表相关的列信息来查看表的结构。

 

很多CTF赛题考点都是运用它的一些我们不太熟悉的特性或者说使用方法。常规来讲desc后面跟的是表名,但事实远不止于此,除了表名还可以有第二个参数。 而且在第二个参数中,它除了列名之外,还可以是包含sql通配符的字符串。

演示一下:

它会出一个表的一个结构。

 

下一个参数去跟一个列名:

 

 

例题分享

第一步先拿到源码

可以选择在这两个地方注入:

 

在中间加一堆引号这时候就会变成两个变量,因为前引号和后引号闭合,新加的在后面去闭合。

 

绕过desc的使用,到select查询语句进行注入

构造语句

 

这是我们传递的一个参数,实际的情况是:

 

假设能够实现成功,实际返回值有两个:

 

所以就要对它做一个限制(偏移),比如说limit限制输出是一个offset偏移是一个,就是跳过第一个,然后再去执行一下。

但是这个地方不要单单推不能用一个参数

我们要的数据(flag)就存在这个表中,要去查这个数据就要去拿这张表的一个列名,就变成一个concat

用它转成16进制,在他前面去加一个0X对吧,这时候就会拿到这个列明。

万能密码

从某张表中去读一条数据,传递的这种用户名和密码如果存在它会认为登陆成功。

举栗子:

通过false逻辑来产生true逻辑