desc是函数describe的简写,一般用来提供和表相关的列信息来查看表的结构。
![94820db1393231c5d3b4e5af85580e8f.png](https://i-blog.csdnimg.cn/blog_migrate/2ce2947ffe21b58f5d0c7dbc922ad3c4.png)
很多CTF赛题考点都是运用它的一些我们不太熟悉的特性或者说使用方法。常规来讲desc后面跟的是表名,但事实远不止于此,除了表名还可以有第二个参数。而且在第二个参数中,它除了列名之外,还可以是包含sql通配符的字符串。
它会出一个表的一个结构。
![6d66315604ca6f8af92b778334e05594.png](https://i-blog.csdnimg.cn/blog_migrate/531ae6f3a000250840f5f4ffb55060d4.jpeg)
下一个参数去跟一个列名:
![8bd02872d9bc252e920ce072f4994020.png](https://i-blog.csdnimg.cn/blog_migrate/c5784b5eb1936fb9682924f0a7c53409.png)
例题分享
第一步先拿到源码
![b448d5a944f7d30d59535685d3ebd891.png](https://i-blog.csdnimg.cn/blog_migrate/afb6e3450817339810711a283e257c6a.png)
![a1b5d9ffc663bc39e6ced874e7867e33.png](https://i-blog.csdnimg.cn/blog_migrate/2924619cfabb264b7ef0521ff671954d.png)
可以选择在这两个地方注入:
![d8230a2898392d4441fc513ec0d1bffe.png](https://i-blog.csdnimg.cn/blog_migrate/61a64bdda15a5a096c5feadd0885f885.png)
在中间加一堆引号这时候就会变成两个变量,因为前引号和后引号闭合,新加的在后面去闭合。
![14ab8d7596c9053d1142d66583bd4cc4.png](https://i-blog.csdnimg.cn/blog_migrate/d8aa4772faf096676df2079dd0bea67c.png)
绕过desc的使用,到select查询语句进行注入
![6c28871e581276761aaf129236a44caf.png](https://i-blog.csdnimg.cn/blog_migrate/d8e75b6abb94dd0a09745e8413d9a7ea.jpeg)
构造语句:
![3922559b5e343636318e058eab48171d.png](https://i-blog.csdnimg.cn/blog_migrate/1a649ccc5470250b67c4198cb0bc6821.png)
这是我们传递的一个参数,实际的情况是:
![e9f4d15227c1b2635e0caee08639aa2a.png](https://i-blog.csdnimg.cn/blog_migrate/09416f6078fa5651a5f5f59abd1863e6.jpeg)
假设能够实现成功,实际返回值有两个:
![f4d8e760b72fb48c84dd4a5159e34c79.png](https://i-blog.csdnimg.cn/blog_migrate/167cb6fb875ed2eb4fdc19b11010a1c8.png)
所以就要对它做一个限制(偏移),比如说limit限制输出是一个offset偏移是一个,就是跳过第一个,然后再去执行一下。
![c2a1e70849d17a5d025fd7e40e8650af.png](https://i-blog.csdnimg.cn/blog_migrate/903436baaf6dd9dca3bdcdeae90bd379.png)
但是这个地方不要单单推不能用一个参数
![9c5383975e610210f90e15fd9c9b2190.png](https://i-blog.csdnimg.cn/blog_migrate/362e701700cf2c7848837a3e2f329827.png)
我们要的数据(flag)就存在这个表中,要去查这个数据就要去拿这张表的一个列名,就变成一个concat
![abc6e1d46ee11d44d838c36feb9c442c.png](https://i-blog.csdnimg.cn/blog_migrate/6272a091f2771fb761bd072b00ada768.jpeg)
用它转成16进制,在他前面去加一个0X对吧,这时候就会拿到这个列明。
万能密码
![1cd25e3d4ff954396d8b208f8513bc37.png](https://i-blog.csdnimg.cn/blog_migrate/d56bd4fa69eb92649c6cc40af8825827.png)
从某张表中去读一条数据,传递的这种用户名和密码如果存在它会认为登陆成功。
例:
![d5a841bd87cba8ebe8092675872afac2.png](https://i-blog.csdnimg.cn/blog_migrate/3c3a12c9646f18292b115d570e52c070.png)
通过false逻辑来产生true逻辑
![df9c7648701a0c7d4ce8b12618c97c41.png](https://i-blog.csdnimg.cn/blog_migrate/fad1e7382d27e026cde0d91ae572a25d.png)
![308f262876b2e879a9cfd233f35d2dfe.png](https://i-blog.csdnimg.cn/blog_migrate/63129d44b636dcedc7c8d642ae5efbe6.png)