您现在的位置是:百科 >>正文
如何搭建sql注入漏洞的web站点
百科23人已围观
简介上周帮一个朋友看他公司内网的培训平台,登录框随手输了个单引号,页面直接抛了500错误,还带出了MySQL的语法提示。这站基本等于裸奔。他问我怎么防,我说你先自己搭一个打一遍,比看十篇文档管用。下面这套 ...
上周帮一个朋友看他公司内网的何搭培训平台,登录框随手输了个单引号,注入站点页面直接抛了500错误,漏洞还带出了MySQL的何搭语法提示。这站基本等于裸奔。注入站点他问我怎么防,漏洞我说你先自己搭一个打一遍,何搭比看十篇文档管用。注入站点下面这套流程,漏洞是何搭我自己折腾过好几遍的搭建方式,全程在本地虚拟机里跑,注入站点别碰公网。漏洞
环境用Docker起,何搭省得配PHP和MySQL配到心态崩。注入站点一条命令拉个LAMP镜像,漏洞或者干脆用vulhub里现成的SQLi靶场。我习惯自己写,因为能控制每一处细节。目录结构就三个文件:db.php负责连接,index.php放登录表单,login.php处理查询。数据库建一张users表,字段id、username、password,塞两条测试数据进去,admin/123456,test/111111。
关键在login.php里那行SQL。很多人写的是$sql = "SELECT * FROM users WHERE username = '$user' AND password = '$pass'";,然后直接mysqli_query。这就对了——漏洞就藏在这。没有预处理,没有转义,用户输入原样拼进语句。你访问index.php,用户名填' OR '1'='1' -- ,密码随便,提交。如果页面跳转到了所谓“后台”,或者至少没报错且返回了用户数据,说明注入成功。
我搭的时候故意把错误回显打开,display_errors = On。为什么?因为真实站点很少给你看报错,但学习阶段你得看清楚数据库在骂什么。比如输入' UNION SELECT 1,2,3 -- ,页面如果显示2和3,你就知道回显位在哪。这一步别跳过,很多人直接上sqlmap,结果连注入点类型都说不清。
还有个细节:magic_quotes_gpc在PHP 5.4之后已经移除,别指望它。addslashes也不靠谱,宽字节注入能绕过。真正要演示漏洞,就用最原始的拼接。我试过在login.php里加一行echo $sql;,把最终语句打印出来,这样你输入什么、拼成什么样,一目了然。比看任何教程都直观。
搭好之后,别急着关。拿sqlmap -u "http://localhost/login.php" --data="username=admin&password=123&submit=1" --dbs跑一遍,看它能不能爆出库名。能跑通,说明你这个靶场合格。跑不通,回去检查是不是POST参数名写错了,或者页面有跳转导致sqlmap跟丢。我见过有人把login.php里的$_POST写成$_GET,结果sqlmap默认按GET发,自然打不中。
最后说一句:这个站只配活在127.0.0.1或者虚拟机NAT网络里。别手贱映射到公网,别用公司服务器。你搭它是为了理解“为什么一个单引号能毁掉整个数据库”,不是为了真去搞谁。我那个朋友后来把预处理语句加上,再测同样的payload,页面只返回“用户名或密码错误”,连数据库版本都摸不到。这才叫修好了。
Tags:
上一篇:云南房屋安全鉴定机构
下一篇:word流程图怎么画
相关文章
发卡网扫卡偷卡软件
百科发卡网扫卡偷卡这事,我见过最离谱的一次,是某个站长后台显示当天售出327张卡密,但实际到账只有19笔。剩下的308张,全被脚本在支付回调前截走了。那哥们儿报警时都说不清损失,因为发卡网后台订单是完整的 ...
【百科】
阅读更多高学历低龄老人线上求职碰壁
百科58岁的李建国在招聘软件上发了37份简历,收到2个回复。一个是保险公司的销售岗,另一个问他“愿不愿意做外卖骑手”。他盯着屏幕看了很久,最后把手机扣在桌上,跟我说了句:“我读完博士都没这么憋屈过。” 李 ...
【百科】
阅读更多高校网站建设方案
百科去年帮某省属高校做网站诊断,打开首页用了6.3秒。招生季高峰,这个数字意味着每天流失几百个潜在生源。不是危言耸听,是真实发生的访问日志数据。 高校网站的问题从来不在技术选型有多落后。很多学校后台跑着最 ...
【百科】
阅读更多