0x00 前言
想要学代码审计,就必须具有一定的编程能力;这里的编程不是只看懂的单单那几个循环。从今天开始由我傀儡,带领大家进入代码审计的世界。可能由于个人关系,发帖时间不一定~(本人学生狗,天天上课很累,有时候懒得开电脑。)
废话不多说,今天我们来实战审计SQL注入漏洞!
#
0x01 所需配置
源码名:千味餐厅点餐支付管理系统。
PHP环境。
seay的代码审计系统。
0x02 嘀·嘀·嘀·发车喽~
1.首先我们进入网页,查看下源码的大致功能,大致了解下漏洞会出现的位置。
经过观察我们发现这几个地方容易出现SQL注入。
2.使用seay的软件载入我们的源码,自动审计下。
可以看出 有100+ 的可疑处。OK,那我们就从这100+的漏洞中找到可以使用的漏洞就可以。
3.点开第一个漏洞,我们开始审计。
4.打开之后发现 sql语句中存在$a,变量,那我们就用我们讲的,进行回溯。
然后,发现 $a=Req(“a”);
却发现 Req 函数不是PHP内置的函数,那要怎么办呢。。。。
很简单!只需要选中右键定位函数!!!
找到了两个!然后再仔细看下,呀!第二个居然是安装文件!
那肯定就不是第二个啦~~~ok!打开第一个!及 config.php
打开之后就是这个样子啦~~~~
来看下这段代码,
大概的意思就是
接收t接收,如果不存在,l保存的是$t的长度!
ok~看到这就可以了,后面的对于我们没有用处。
我们只需要知道 GET接收的参数没有进行任何过滤就ok了!
ok~回到 cooker.php 这个网页。继续看我们的代码。
$a接收的是a参数的值;然后传入到sql语句中。执行。
再往下看。。。居然没有打印输出,只echo了一个ok!
快哭了?!有木有?!哈哈,屌丝不哭站起来撸!
我们继续看这个网页,找找有没有其他的漏洞,我们从第一行开始读代码!
发现了一个很有意思的一段代码,s分别接受x和s的值。
然后判断$x是不是等于lgn且不等于空。
然后就执行了一段sql语句。
来我们看下 mysql_num_rows() 这个函数
这个函数的意思就是返回结果集中行的数目。
然后判断是否等于0,如果等于0,就输出一条消息之后退出脚本。
动动脑筋~这里会存在什么漏洞呢~~~!! 没错!就是存在注入!
0x03 根据代码开始写 payload
既然我们找到了存在注入的地方~那我们就根据代码开始写 url 进行注入!
_GET[“x”])?$_GET[“x”]:”“;
_GET[“s”])?s==”“)$s=”0”;
if(x!=”“){
if(mysql_num_rows(mysql_query(“Select ID From SCY Where Ni=’”.$s.”’”))==0)die();
}
发现他是判断$x是为lgn和不等于空,他才执行sql语句,
而sql语句中还带入了$s。那我们就可以试试
http://127.0.0.1/cooker.php?x=1&s=1
0x04 验证url
写的出url,当然要验证啦!ok,带入sqlmap中,开始验证吧!!
然后。。。等待了一会。。。
哈哈,看到这个是不是很激动?!!!
sqlmap给出的Payload: x=1&s=1’ OR NOT 2968=2968#
然后注入的方式是:延迟注入。。。
#
本文转载自【http://bbs.ichunqiu.com/thread-10340-1-1.html?from=mysky】