Hack this site realistic 2
这一关还是一个实战的例子。
界面讲的是,一个纳粹团伙在招募同伴,需要技术高超的你去黑了他们网站。
1、黑网站需要进入后台,怎么进呢,连个登录入口都没有;
搜了一下,发现全选,会发现下边有一个update连接,点击之后,进入登录页面:
2、很明显,需要破解用户名密码;怎么破解呢;我刚开始想到了使用burp suite,但是发现这里考察的是技术,而不是真的要进入网站,于是猜想其他方法;应该就是sql 注入;
在用户名文本框里输入 ’ or 1=1– ,试一下,成功过关;
这里用到的是sql注入技术,在用户名文本框输入 ’ or 1=1– ,意思是虽然用户名为空,但是1=1必定成立,且–把后边的sql命令给注释了
先学会记住这个用法,回头总结一下sql注入;
一点一点积累知识
sql注入最简单的理解,从别处借鉴过来的,特别简单易懂:
在一个登录界面,填好正确的用户名(marcofly)和密码(test)后,点击提交,将会返回给我们“欢迎管理员”的界面。
代码执行过程是这样的:
select * from users where username=’marcofly’ and password=md5(‘test’)
很明显,用户名和密码都和我们之前给出的一样,肯定能够成功登陆。但是,如果我们输入一个错误的用户名或密码呢?很明显,肯定登入不了吧。恩,正常情况下是如此,但是对于有SQL注入漏洞的网站来说,只要构造个特殊的“字符串”,照样能够成功登录。
比如:在用户名输入框中输入:’ or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:
select * from users where username=” or 1=1#’ and password=md5(”)
语义分析:“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样就不会去执行了,换句话说,以下的两句sql语句等价:
select * from users where username=” or 1=1#’ and password=md5(”)
等价于
select * from users where username=” or 1=1
SQL注入采用的’ OR 1=1 # 是什么意思呢?
最后一个#号有什么意义呢?
SELECT * FROM test WHERE name=” OR 1=1 #’ AND age=’20’
这后面写的 #’ 是什么意思呢? 求指教
可以注释掉后面的一行SQL代码
相当于去掉了一个where条件
MySQL 注释, 过滤掉后面的SQL语句,使其不起作用
SQL server中注释是–
因为1=1永远是都是成立的,即where子句总是为真,将该sql进一步简化之后,等价于如下select语句:
select * from users 没错,该sql语句的作用是检索users表中的所有字段
小技巧:一个经构造后的sql语句竟有如此可怕的破坏力,相信你看到这后,开始对sql注入有了一个理性的认识了吧~
有漏洞的脚本才有机会给你攻击,比如一个带参数的删除脚本a.asp?action=del&id=2你可以改为a.asp?action=del&id=2 or 1这样就有可能删除全部数据——sql注入就是通过类似的手段来破坏数据