sqli-labs 1-4关

第一关

第一关属于单引号注入,很容易尝试出来,但是我有一点不理解的是输入错误的id为什么还可以返回正确的结果,应该是php过滤方面的问题,等学习了再填坑。如图所示:
sqli-labs 1-4关
图中我加了sql语句显示便于初期学习,当id为2as时也可以正确显示。

第二关

这一关是属于整形注入,当我们在id后面添加单引号时,观察报错信息,the right syntax to use near ‘’ LIMIT 0,1’ at line 1,从这里可以看出单引号和后面的语句爆了错,简单猜测,就是sql语句中不包含引号,回显出sql语句SELECT * FROM users WHERE id=2’ LIMIT 0,1 故此关注入可以直接进行union查询。
sqli-labs 1-4关

第三关

在URL后面加上一个斜杠http://localhost/Less-3/?id=2\,观察报错信息,
syntax to use near ’ ‘2’) LIMIT 0,1 ’ at line 1,最外面的一对单引号是mysql报错时加上的,不用看,我们的参数2\是被单引号和一个右括号包括,可以猜测,需要闭合单引号和括号,经实践确实如此,使用–+将后面的单引号和右括号注释掉,

http://localhost/Less-3/?id=2') and 0 union select 1,version(),2 --+

回显出来的sql语句

SELECT * FROM users WHERE id=('2') and 0 union select 1,version(),2 -- ') LIMIT 0,1

第四关

模仿第三关先使用单引号闭合,发现并没有报错,然后换一下双引号,
报了一个这样的错误:

syntax to use near '     "1"") LIMIT 0,1       ' at line 1

可以看出这个是双引号和括号来进行闭合,只要在右边加上双引号和右括号即可。

http://localhost/Less-4/?id=1") and 0 union select 1,version(),3 --+

观察一下回显的sql语句,和猜测的一样。

SELECT * FROM users WHERE id=("1") and 0 union select 1,version(),3 -- ") LIMIT 0,1

至于单引号没有报错的原因是,php中双引号里可以包括单引号,具体等研究了php再详细说明。

总结

通过这四关的基础练习,感觉自己在一些方面还需要深入研究,例如PHP的mysql连接部分,mysql报错源码之类的,这样更有利于分析sql注入。

欢迎关注公众号,一起交流

sqli-labs 1-4关

上一篇:sqli-labs lesson 7-10 (文件导出,布尔盲注,延时注入)


下一篇:sqli labs less 14