返回 登录
0

代码审计的世界(2)【连载篇】

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

评论