前几天发了个1-8关的过关记录,想了下如果全写到一篇里太多了,第9关从这篇开始更新
mark一篇文章有关sql中的常用语法
第九关&第十关
有点意思,这题题目是时间盲注,因为无论是否输入正确的id,都会回显“you are in”。
百度了一下时间盲注,基本原理大概就是利用sleep()
函数,感觉和布尔盲注的区别就是,布尔盲注是页面回显有正确和错误,然而时间盲注只有一种回显,但是可以将bool
值转化为是否延迟,如果true
就执行sleep()
函数,然后根据请求返回的时间来判断结果。
可能用到的函数:
sleep() //延迟,参数为时间,单位为秒,函数正常执行会返回0,被中断返回1
if(exp1,exp2,exp3) //如果exp1为true,则执行并返回exp2,否则执行并返回exp3
可参考:SQL基于时间的盲注过程
第十一关
这题是一个登录页面,用post
方法传递参数uname
和passwd
,本来以为直接用--
注释掉后面的语句就可以登录,但是自己在MySQL
中试了很多次,发现很多很迷的地方,总结如下
关于注释符
mysql的注释符
-- 注释(注意'--'后面要有空格)
#注释
//注释
/*注释*/
这一题经过测试如果只使用--
注释而不闭合后面的单引号是会报错的,必须闭合所有的单引号而且使sql语句不能有语法错误;但是如果使用#
作为注释符,就不用考虑闭合后面的单引号
然后就是正常的注入流程了,经过测试可以联合查询暴库
可参考sqli-lab教程——1-35通关(实际上并没有到35关…)
PHP中@的作用:at符号(@)在PHP中用作错误控制操作符。当表达式附加@符号时,将忽略该表达式可能生成的错误消息。如果启用了track_errors功能,则表达式生成的错误消息将保存在变量$php_errormsg中。每个错误都会覆盖此变量。
第十二关
和第十一关基本一样,根据报错信息推测出闭合方式是")
,然后剩下还是联合查询暴库
第十三关
单引号报错之后可以推测闭合方式是')
,注释方式可使用#
,然后返回页面只有正确和错误,应该是bool盲注了,不知道问什么,用Python脚本发送post请求会不成功,连用hackbar进行postdata都不能成功,只能手工注…
第十四关
闭合方式"
,其他和第十三关相同
第十五关
未完待续…