【DVWA实战篇】12分钟学会 SQL 注入攻击实战

SQL注入直接改数据。
DVWA Low级用GET试试。
看报错猜数据库。
用'和测字符注入。
联合查询查表名字段。
SQLMap自动探测。
Medium级用POST。
BurpSuite绕过过滤。
HEX编码过WAF。
High级看源码找注入点。
PDO基本防注入。
你自己掂量。

网络安全中Sql注入getshell的几种方式

2 02 2 年,我在某个城市参加了一个网络安全培训,当时讲师提到了利用SQL注入获取系统权限的几种方法。
其中,我印象最深刻的是利用outfile函数和--os-shell。
先说outfile函数,这个方法的关键在于secure_file_priv参数的设置。
这玩意儿是啥呢?简单来说,它限制了loaddumpfile、intooutfile、load_file()等函数在哪个目录下可以进行文件上传和读取操作。
从MySQL5 .6 .3 4 版本开始,这个参数默认是NULL。

我当时也懵,这啥意思啊?后来才反应过来,就是说,如果这个参数是NULL,那mysqld就不允许导入或导出文件了。
那怎么用呢?首先,你得检查配置文件my.ini里有没有这个参数,如果有,还得根据需要改一下值。

具体怎么改呢?先得查看secure_file_priv的值,如果是NULL,那就得改了。
改完之后,你就可以通过outfile函数来写一句话木马,实现webshell的注入了。
比如,在sqli-labs第七关,你得先判断注入点,然后判断列数,最后写webshell。

记得有一次,我在根目录下的outfile.php文件里写了一句话木马,然后用了十六进制转码,因为得避免解析错误嘛。
编码之后,我用双反斜杠\\分隔路径,这样就不会出错了。
写完之后,我就通过连接webshell进行访问了。

再说--os-shell,这个方法其实就是用udf提权获取WebShell。
它也是通过outfile向服务器写两个文件,一个可以执行系统命令,另一个可以上传文件。
我试过用sqlmap命令来实现这个功能。
记得在sqli-labs第一关,sqlmap会在指定目录生成两个随机文件,一个用于执行命令,一个用于上传文件。

这两种方法都需要满足一些条件,比如Web目录得有写权限,能用单引号,还得知道网站的绝对路径,还有secure_file_priv不能有具体的值。
我在实际操作中,有一次用sqlmap写webshell的时候发现写不进去,后来才发现是因为secure_file_priv的值是NULL。

那怎么办呢?我就用--sql-shell命令执行SQL语句,确认secure_file_priv的值,这样就能找到无法写入的原因了。
总的来说,了解这些方法,能帮助我们更好地防范和应对可能的安全风险。