第二关(查询注入 思路是找到注入点,再与找到列数,最后使union前面的失效,而把自询语句写在union后面())
1、找注入点,开始用1',发现单引号报错,尝试其它符号也不行,注入点不对,干脆去掉单引号,发现没报错,说明这个是注入点
2、找列 =3 没有报错,确定是三列
3、根据列数写查询数据库的语句(需要把union之前的改为一个查不到的数)
第三关
1、找到注入点
2、一样都是三列,省略了
3、
第4关
基于双引号的查询注入
1找到注入点
2直接写语句,发现没闭合,加上括号
直接注入成功
第5关(因为查询注入不了,直接用报错注入,思路是发现报错SQL语句,闭合,写上报错语句(xpath)带出自己想要的东西)
第六关
报错注入
通过xpath报错函数触发注入
函数: updataxml 更新xml数据 、extractvalue 查询更准确的值 , floor 等
xml 常用来存储数据,是一种数据格式 <class></class>
xpath 定位: 绝对路径加属性
select extractvalue(字段名 ,'xpath位置') from 表
update xmltable set xml=updataxml(字段名,‘//student[2]/age’,‘<age>20</age>’) from 表
利用条件:存在sql注入漏洞,有语法报错,查询注入没有回显
echo mysqli_error($con) 打印语法报错
~ 换为16进制为 :0x7e
语法:
id=90 and updatexml(1,concat(0x7e,database(),0x7e),1)
id=90 and extractvalue(1,concat(0x7e,database(),0x7e))
爆出数据库
爆出表名
http://47.108.235.197:99/labs/Less-6?id=1" and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables limit 1*),0x7e)) --+
第七关文件上传
第八关
查询注入没有注入点,也没有报错考虑盲注
1' 和1的页面不一样,说明可以布尔盲注
加上注释符号发现闭合,找到注入点
猜测数据库长度
大于7页面正常,大于8不正常,
=8正常,说明数据库长度为8
猜测数据库名
第一位为s 正确回显,说明对了
第二位为e
总共猜8位
第九关
时间盲注
数据库名
13关
抓包发现是post
有单引号和没单引号页面不一样。可以布尔
order by 2 没报错。确定列数
拖出数据库
14关
找到闭合点
写入报错语句
15
闭合
找到数据库长度
爆出第一位,后面的一样
16关
发现注入点
判断出数据库名长度
找到第一位
18关
brupsuit抓包。
改掉头部里面的代用户理信息
从源码中得知 用户代理的字段有三个
利用报错注入,
19关
从题目得知对referer修改
1、从前面关卡获得账号密码并登录
2、抓包
3、改包
3.1找注入点
发现注入点
插入and and 和报错语句
‘
20关
'发现注入点
'# 闭合
写入报错语句
21关
登录
'找到注入点
'#闭合
26关
27关
闭合
27a关
绕过空格 %a0
绕过union select 所有大写,最后两位大写(UNIon SELEct)
28关
29关
30关
31关
、
32关(宽字节注入,绕过转义)
33关
34关
抓包发现自己的东西被转义了
35关
36关
37关
38关
39关
40关
找到闭合点
http://47.108.235.197:99/labs/Less-40/?id=1' ) --+
找到列数
http://47.108.235.197:99/labs/Less-40/?id=1' ) order by 3 --+
联合查询注入